Это не полноценная игра, просто графическая демка.
Листинг программы:
Приимер работы программы:
				Листинг программы:
Код: Выделить всё
'Chess
'Jim 22/5/2002
grid = 60
dim board(8,8)
setup_board()
open window 480,480
whosgo=1
d=1
repeat
drawboard()
makeamove(whosgo)
whosgo=1-whosgo
wait 1
until (0=1)
end
sub makeamove(g)
	if (g=1) then
		up = -1
		home = 6
		bend=0
		colf=8
	else
		up = 1
		home = 1
		bend=7
		colf=0
	fi
	for y = 0 to 7
	for x = 0 to 7
	piece = and(board(x,y),7)
	col = and(board(x,y),8)/8
	if col=g then
		if piece=1 then
			rem advance pawn
			if (x+1<=7) then
				if (and(board(x+1,y+up),7) <> 0) then
					if (y+up=bend) then
						board(x+1,y+up)=5+colf
					else
						board(x+1,y+up)=board(x,y)
					fi
					board(x,y)=0
					return
				fi
			fi
			if (x-1>=0) then
				if (and(board(x-1,y+up),7) <> 0) then
					if (y+up=bend) then
						board(x-1,y+up)=5+colf
					else
						board(x-1,y+up)=board(x,y)
					fi
					board(x,y)=0
					return
				fi
			fi
			if (board(x,y+2*up)=0 and y=home) then
				board(x,y+2*up)=board(x,y)
				board(x,y)=0
				return
			fi
			if (board(x,y+up)=0) then
				if (y+up=bend) then
					board(x,y+up)=5+colf
				else
					board(x,y+up)=board(x,y)
				fi
				board(x,y)=0
				return
			fi
		elsif piece=2 then
		elsif piece=3 then
		elsif piece=4 then
		elsif piece=5 then
		elsif piece=6 then
		fi
	fi
	next x
	next y
end sub
sub drawpiece(c)
	color c*255,c*255,c*255
	repeat
		read p$
		if p$="E" then
			return
		elsif p$="C" then
			read xs,ys,r
			fill circle xx+xs*grid,yy+ys*grid,r*grid
		elsif p$="R" then
			read xo,yo,xs,ys
			fill rectangle xx+xo*grid,yy+yo*grid to xx+xs*grid,yy+ys*grid
		elsif p$="T" then
			read x1,y1,x2,y2,x3,y3
			fill triangle xx+x1*grid,yy+y1*grid to xx+x2*grid,yy+y2*grid to xx+x3*grid,yy+y3*grid
		fi
	until (0=1)
end sub
sub pawn(x,y,c)
	restore pawnd
	drawpiece(c)
end sub
sub rook(x,y,c)
	restore rookd
	drawpiece(c)
end sub
sub knight(x,y,c)
	restore knightd
	drawpiece(c)
end sub
sub bishop(x,y,c)
	restore bishopd
	drawpiece(c)
end sub
sub queen(x,y,c)
	restore queend
	drawpiece(c)
end sub
sub king(x,y,c)
	restore kingd
	drawpiece(c)
end sub
sub drawboard()
	draw_checker()
	yy=0
	for y = 0 to 7
	xx=0
	for x = 0 to 7
	piece = and(board(x,y),7)
	col = and(board(x,y),8)/8
	if piece=1 then
		pawn(x,y,col)
	elsif piece=2 then
		rook(x,y,col)
	elsif piece=3 then
		knight(x,y,col)
	elsif piece=4 then
		bishop(x,y,col)
	elsif piece=5 then
		queen(x,y,col)
	elsif piece=6 then
		king(x,y,col)
	fi
	xx = xx+grid
	next x
	yy = yy+grid
	next y
end sub
sub draw_checker()
color 255,255,255
rectangle 0,0 to 8*grid+1,8*grid+2
toggle=128
for y=0 to 7
for x=0 to 7
color toggle,toggle,toggle
fill rectangle 1+x*grid,1+y*grid to 1+x*grid+grid,1+y*grid+grid
toggle = 192-toggle
next x
toggle = 192-toggle
next y
end sub
sub setup_board()
board(0,0)=2
board(1,0)=3
board(2,0)=4
board(3,0)=5
board(4,0)=6
board(5,0)=4
board(6,0)=3
board(7,0)=2
board(0,1)=1
board(1,1)=1
board(2,1)=1
board(3,1)=1
board(4,1)=1
board(5,1)=1
board(6,1)=1
board(7,1)=1
board(0,6)=1+8
board(1,6)=1+8
board(2,6)=1+8
board(3,6)=1+8
board(4,6)=1+8
board(5,6)=1+8
board(6,6)=1+8
board(7,6)=1+8
board(0,7)=2+8
board(1,7)=3+8
board(2,7)=4+8
board(3,7)=5+8
board(4,7)=6+8
board(5,7)=4+8
board(6,7)=3+8
board(7,7)=2+8
end sub
label pawnd
data "C",0.5,0.25,.2
data "T",0.5,0.25,0.2,.8,.8,.8
data "E"
label rookd
data "T",0.5,0.25,0.2,.8,.8,.8
data "R",.2,.3,.8,.35
data "R",.2,.1,.35,.3
data "R",.4,.1,.6,.3
data "R",.65,.1,.8,.3
data "E"
label knightd
data "T",0.5,0.25,0.2,.8,.8,.8
data "T",0.4,0.1,0.9,0.3,0.4,0.4
data "E"
label bishopd
data "T",0.5,0.25,0.2,.8,.8,.8
data "C",0.4,0.25,0.15
data "C",0.6,0.25,0.15
data "E"
label queend
data "T",0.5,0.25,0.2,.8,.8,.8
data "T",0.5,0.25,0.2,.1,.8,.1
data "E"
label kingd
data "T",0.5,0.25,0.2,.8,.8,.8
data "R",0.3,.15,0.7,.25
data "R",0.45,.05,0.55,0.4
data "E"
