I don't play chess myself so would be considered a beginner but gave Eschecs a go anyway only to find it seemed to freeze up?
This is the actual game. Just tap the key to see it played.
Code: Select all
#include "fbgfx.bi"
using fb
'some useful defines
Const Pi = 4 * Atn(1)
Dim Shared As Double TwoPi = 8 * Atn(1)
Dim Shared As Double RtoD = 180 / Pi ' radians * RtoD = degrees
Dim Shared As Double DtoR = Pi / 180 ' degrees * DtoR = radians
screenres 640,480,32
'+++++++++++++++++++++ INSERT NEW CODE ++++++++++++++++++
Sub drawLine(x1 as integer,y1 as integer,x2 as integer, y2 as integer, c as uinteger)
Dim As Integer ax, ay, d, dx, dy, x, y
If x1 = x2 And y1 = y2 Then Exit Sub
If x1 = x2 Then
x = x1
if y2>y1 then
For y as integer = y1 To y2
circle (x,y),2,c,,,,f
Next y
else
for y as integer = y2 to y1
circle (x,y),2,c,,,,f
next y
end if
Elseif y1 = y2 Then
y = y1
if x2>x1 then
For x as integer = x1 To x2
circle (x,y),2,c,,,,f
next x
else
for x as integer = x2 to x1
circle (x,y),2,c,,,,f
next x
end if
Else
dx = x2 - x1
dy = y2 - y1
ax = 1
ay = 1
If dx < 0 Then
dx = -dx
ax = -1
End If
If dy < 0 Then
dy = -dy
ay = -1
End If
x = x1
y = y1
dim as integer ii
If dx >= dy Then
ii = dx + 1
dy Shl= 1
d = dy - dx
dx Shl= 1
While ii > 0
ii -= 1
circle (x,y),2,c,,,,f
If d >= 0 Then
y += ay
d -= dx
End If
d += dy
x += ax
Wend
Else
ii = dy + 1
dx Shl= 1
d = dx - dy
dy Shl= 1
While ii > 0
ii -= 1
circle (x,y),2,c,,,,f
If d >= 0 Then
x += ax
d -= dy
End If
d += dx
y += ay
Wend
End If
End If
End Sub
sub drawArrow(x1 as double,y1 as double,x2 as double,y2 as double,c as uinteger)
dim as double angle,xx,yy
drawLine(x1,y1,x2,y2,c)
angle = atan2(y2-y1,x2-x1)
angle = angle + 45*DtoR
xx = cos(angle)*20+x1
yy = sin(angle)*20+y1
drawLine(x1,y1,xx,yy,c)
angle = atan2(y2-y1,x2-x1)
angle = angle - 45*DtoR
xx = cos(angle)*20+x1
yy = sin(angle)*20+y1
drawLine(x1,y1,xx,yy,c)
end sub
'++++++++++++++++++++++++++++++++++++++++++++++
type chessMove
as integer x1 'FROM coordinates
as integer y1
as integer x2 'TO coordinates
as integer y2
as integer t1 'piece type moved
as integer t2 'any piece type taken
end type
dim shared as chessMove cm 'show last move
dim shared as integer board(8,8)
const WP = 1
const BP = -1
const WR = 2
const BR = -2
const WN = 3
const BN = -3
const WB = 4
const BB = -4
const WQ = 5
const BQ = -5
const WK = 6
const BK = -6
'initialize board
for j as integer = 0 to 7
for i as integer = 0 to 7
read board(i,j)
next i
next j
data WR,WN,WB,WQ,WK,WB,WN,WR
data WP,WP,WP,WP,WP,WP,WP,WP
data 0, 0, 0, 0, 0, 0, 0, 0
data 0, 0, 0, 0, 0, 0, 0, 0
data 0, 0, 0, 0, 0, 0, 0, 0
data 0, 0, 0, 0, 0, 0, 0, 0
data BP,BP,BP,BP,BP,BP,BP,BP
data BR,BN,BB,BQ,BK,BB,BN,BR
'images of pieces
dim shared as FB.Image ptr cImage(13) '
for i as integer = 0 to 12
cImage(i) = imagecreate(40,40,0)
next i
'create sprites
dim as string datum
for k as integer = 1 to 12
for j as integer = 0 to 39
read datum
for i as integer = 0 to 39
if mid(datum,i+1,1)=" " then
pset cImage(k),(i,j),rgb(255,0,255)
end if
if mid(datum,i+1,1)="." then
pset cImage(k),(i,j),rgb(255,255,255)
end if
if mid(datum,i+1,1)="#" then
pset cImage(k),(i,j),rgb(0,49,83)
end if
next i
next j
next k
'convert string chess moves to numbers
function stringToChessMove(move as string) as chessMove
move = UCASE(move)
cm.x1 = asc(mid(move,1,1))-65
cm.y1 = val(mid(move,2,1))-1
cm.x2 = asc(mid(move,3,1))-65
cm.y2 = val(mid(move,4,1))-1
return cm
end function
'convert chess move numbers to string format
function chessMoveToString(cm as chessMove) as string
return chr(cm.x1+65)+str(cm.y1+1)+chr(cm.x2+65)+str(cm.y2+1)
end function
'update screen display
sub update()
screenlock()
color rgb(255,255,255),rgb(100,255,100)
cls
dim as integer shade
shade = 1
for y as integer = 0 to 7
shade = -shade
for x as integer = 0 to 7
if shade = -1 then
line (x*40,y*40)-(x*40+40,y*40+40),rgb(255,255,255),bf
else
line (x*40,y*40)-(x*40+40,y*40+40),rgb(50,160,200),bf
end if
shade = -shade
next x
next y
dim as integer v
for j as integer = 0 to 7
for i as integer = 0 to 7
if board(i,j)<> 0 then
v = board(i,j) 'get image number
if v<0 then v = abs(v)+6
put (i*40,(7-j)*40),cImage(v),trans
end if
next i
next j
screenunlock()
end sub
dim as string move
dim as integer moveCount
update()
do
read move
moveCount = moveCount + 1
if move<>"EXIT" then
cm = stringToChessMove(move)
update()
drawArrow(cm.x2*40+18,(7-cm.y2)*40+18,cm.x1*40+18,(7-cm.y1)*40+18,rgb(255,255,0)) 'thick arrow
sleep 'view move to be made
board(cm.x2,cm.y2) = board(cm.x1,cm.y1)
board(cm.x1,cm.y1) = 0
end if
update()
'show move made
line (cm.x1*40+1,(7-cm.y1)*40+1)-(cm.x1*40+38,(7-cm.y1)*40+38),rgb(0,255,0),b
line (cm.x2*40+1,(7-cm.y2)*40+1)-(cm.x2*40+38,(7-cm.y2)*40+38),rgb(255,0,0),b
line (cm.x1*40+2,(7-cm.y1)*40+2)-(cm.x1*40+37,(7-cm.y1)*40+37),rgb(0,255,0),b
line (cm.x2*40+2,(7-cm.y2)*40+2)-(cm.x2*40+37,(7-cm.y2)*40+37),rgb(255,0,0),b
locate 50,1
print "moveCount";moveCount
sleep 'view moved just made
loop until move = "EXIT"
update()
sleep
'deallocate
for i as integer = 0 to 12
imagedestroy(cImage(i))
next i
end
spriteData:
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " #### "
DATA " ###### "
DATA " ###..### "
DATA " ##....## "
DATA " ##....## "
DATA " ##....## "
DATA " ###### "
DATA " ########## "
DATA " ####....#### "
DATA " ##........## "
DATA " ##..........## "
DATA " ##..........## "
DATA " ##..........## "
DATA " ##..........## "
DATA " ##........## "
DATA " ###......### "
DATA " ####..#### "
DATA " ############## "
DATA " ####........#### "
DATA " ###............### "
DATA " ###..............### "
DATA " ##................## "
DATA " ###................### "
DATA " ##..................## "
DATA " ###..................### "
DATA " ##....................## "
DATA " ##....................## "
DATA " ##....................## "
DATA " ######################## "
DATA " ######################## "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " ##### ###### ##### "
DATA " ##### ###### ##### "
DATA " ##.#######..#######.## "
DATA " ##.#######..#######.## "
DATA " ##..................## "
DATA " ###################### "
DATA " ###################### "
DATA " ###..............### "
DATA " ################## "
DATA " ################ "
DATA " ##..........## "
DATA " ##..........## "
DATA " ##..........## "
DATA " ##..........## "
DATA " ##..........## "
DATA " ##..........## "
DATA " ##..........## "
DATA " ##..........## "
DATA " ##..........## "
DATA " ############## "
DATA " ################ "
DATA " ###............### "
DATA " #################### "
DATA " #################### "
DATA " ##................## "
DATA " ##................## "
DATA " ########################## "
DATA " ########################## "
DATA " ##......................## "
DATA " ########################## "
DATA " ########################## "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " ## # "
DATA " ### ### "
DATA " #### #### "
DATA " #######.## "
DATA " ##..###..##### "
DATA " ##.###...####### "
DATA " #####.....##...#### "
DATA " ##.##............### "
DATA " ##.................### "
DATA " ##.###..............### "
DATA " ##.###................## "
DATA " ##.##.................### "
DATA " ##.#..........##.......## "
DATA " ##.............##.......### "
DATA " ##............##.........## "
DATA " ##.............##.........### "
DATA " ##............###..........## "
DATA " ##...........#####..........## "
DATA " ##.........#### ##...........## "
DATA " ##.##.....#### ##............## "
DATA " ##.##....### ##............## "
DATA " ##......## ###............## "
DATA " ###.##.## ##.............## "
DATA " ######## ###..............## "
DATA " ###### ###...............## "
DATA " ## ###................## "
DATA " ###.................## "
DATA " ##..................## "
DATA " ##...................## "
DATA " ##...................## "
DATA " ##....................## "
DATA " ######################## "
DATA " ######################## "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " #### "
DATA " ###### "
DATA " ##..## "
DATA " ##..## "
DATA " ###### "
DATA " #### "
DATA " ######## "
DATA " ###....### "
DATA " ###......### "
DATA " ###........### "
DATA " ###....##....### "
DATA " ##.....##.....## "
DATA " ###...######...### "
DATA " ##....######....## "
DATA " ##......##......## "
DATA " ##......##......## "
DATA " ##............## "
DATA " ##............## "
DATA " ############## "
DATA " ############ "
DATA " ##........## "
DATA " ##........## "
DATA " ############## "
DATA " ############## "
DATA " ####........#### "
DATA " ############ "
DATA " ######## "
DATA " ###.##.### "
DATA " ############..##..############ "
DATA " ###########...####...########### "
DATA " ###..........######..........### "
DATA " ############## ############## "
DATA " ########### ########### "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " ### "
DATA " ### ##### ### "
DATA " ##### ##.## ##### "
DATA " ##.## ##### ##.## "
DATA " ### ##### ### ##### ### "
DATA " ##### ### ### ### ##### "
DATA " ##.## ## ### ## ##.## "
DATA " ##### ### ### ### ##### "
DATA " ### ### ### ### ### "
DATA " ### ### ### ### ### "
DATA " ## #### ##.## #### ## "
DATA " ### #### ##.## #### ### "
DATA " ### #### ##.## #### ### "
DATA " #### ##.## ##.## ##.## #### "
DATA " #### ##.## ##.## ##.## #### "
DATA " #### ##.## ##.## ##.## #### "
DATA " #### ##..###...###..## #### "
DATA " ##.####..###.#.###..####.## "
DATA " ##.###.#############.###.## "
DATA " ###.#########.#########.### "
DATA " ######.............###### "
DATA " ###...................### "
DATA " ##################...## "
DATA " ####################### "
DATA " ####.............#### "
DATA " ##..#############..## "
DATA " ####.............#### "
DATA " ##..#############..## "
DATA " ##################### "
DATA " #####.............##### "
DATA " #####.............##### "
DATA " ##################### "
DATA " ############# "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " ## "
DATA " ## "
DATA " ###### "
DATA " ###### "
DATA " ## "
DATA " ## "
DATA " ## "
DATA " #### "
DATA " ###### "
DATA " ###..### "
DATA " ###### ##....## ###### "
DATA " ############....############ "
DATA " ###......####....####......### "
DATA " ##.........##....##.........## "
DATA " ##...........##..##...........## "
DATA " ##...........##..##...........## "
DATA " ##............####............## "
DATA " ##............####............## "
DATA " ###............##............### "
DATA " ##............##............## "
DATA " ###...........##...........### "
DATA " ###..........##..........### "
DATA " ###...##############...### "
DATA " ######################## "
DATA " #####............##### "
DATA " ##..................## "
DATA " ##.##############.## "
DATA " ####............#### "
DATA " ##..############..## "
DATA " ###################### "
DATA " ######............###### "
DATA " #####............##### "
DATA " ################## "
DATA " ########## "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " #### "
DATA " ###### "
DATA " ######## "
DATA " ######## "
DATA " ######## "
DATA " ######## "
DATA " ###### "
DATA " ########## "
DATA " ############ "
DATA " ############ "
DATA " ############## "
DATA " ############## "
DATA " ############## "
DATA " ############## "
DATA " ############ "
DATA " ############ "
DATA " ########## "
DATA " ############## "
DATA " ################ "
DATA " ################## "
DATA " #################### "
DATA " #################### "
DATA " ###################### "
DATA " ###################### "
DATA " ######################## "
DATA " ######################## "
DATA " ######################## "
DATA " ######################## "
DATA " ######################## "
DATA " ######################## "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " ##### ###### ##### "
DATA " ##### ###### ##### "
DATA " ###################### "
DATA " ###################### "
DATA " ###################### "
DATA " ###################### "
DATA " ##..................## "
DATA " #################### "
DATA " ################## "
DATA " ###..........### "
DATA " ############## "
DATA " ############## "
DATA " ############## "
DATA " ############## "
DATA " ############## "
DATA " ############## "
DATA " ############## "
DATA " ############## "
DATA " ############## "
DATA " ############## "
DATA " ###..........### "
DATA " ################## "
DATA " #################### "
DATA " #################### "
DATA " #################### "
DATA " #################### "
DATA " ####..................#### "
DATA " ########################## "
DATA " ########################## "
DATA " ########################## "
DATA " ########################## "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " ## # "
DATA " ### ### "
DATA " #### #### "
DATA " ########## "
DATA " ############## "
DATA " ###..#####...### "
DATA " ###.##########..### "
DATA " ###############..### "
DATA " ##################.### "
DATA " ###...############..### "
DATA " ###...##############..## "
DATA " ###..################..## "
DATA " ###.##########.######..## "
DATA " ###############.#######..## "
DATA " ##############.########..## "
DATA " ###############.#########..## "
DATA " #########################..## "
DATA " ##########################..## "
DATA " ############### ###########..## "
DATA " ###.########## ############..## "
DATA " ##..######## ############..## "
DATA " ##.####### #############..## "
DATA " #####.### #############..## "
DATA " ####.### ###############..## "
DATA " ###### ################..## "
DATA " ## #################..## "
DATA " ##################..## "
DATA " ##################..## "
DATA " ###################..## "
DATA " ###################..## "
DATA " ####################..## "
DATA " ######################## "
DATA " ######################## "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " #### "
DATA " ###### "
DATA " ###### "
DATA " ###### "
DATA " ###### "
DATA " #### "
DATA " ######## "
DATA " ########## "
DATA " ############ "
DATA " ############## "
DATA " #######..####### "
DATA " #######..####### "
DATA " ######......###### "
DATA " ######......###### "
DATA " ########..######## "
DATA " ########..######## "
DATA " ################ "
DATA " ################ "
DATA " ############## "
DATA " ##........## "
DATA " #.########.# "
DATA " ############ "
DATA " ##..........## "
DATA " #..########..# "
DATA " ################ "
DATA " ############ "
DATA " ###### "
DATA " ######## "
DATA " ############################## "
DATA " ################################ "
DATA " ############################## "
DATA " ############# ############# "
DATA " # # "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " ### "
DATA " ### ##### ### "
DATA " ##### ##### ##### "
DATA " ##### ##### ##### "
DATA " ### ##### ### ##### ### "
DATA " ##### ### ### ### ##### "
DATA " ##### ## ### ## ##### "
DATA " ##### ## ### ## ##### "
DATA " ### ### ### ### ### "
DATA " ## ### ### ### ## "
DATA " ## ### ##### ### ## "
DATA " ## #### ##### #### ## "
DATA " ### #### ##### #### ### "
DATA " ### #### ##### #### ### "
DATA " #### ##### ##### ##### #### "
DATA " ### ##### ##### ##### ### "
DATA " #### ################# #### "
DATA " #### ################# #### "
DATA " ########################### "
DATA " ########################### "
DATA " ######################### "
DATA " #####...............##### "
DATA " ##...#############...## "
DATA " ##.#################.## "
DATA " ####.............#### "
DATA " ##..#############..## "
DATA " ##################### "
DATA " ####.............#### "
DATA " ##..#############..## "
DATA " ##.#################.## "
DATA " ####################### "
DATA " ##################### "
DATA " ############# "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " "
DATA " ## "
DATA " ## "
DATA " ###### "
DATA " ###### "
DATA " ## "
DATA " ## "
DATA " ## "
DATA " #### "
DATA " ###### "
DATA " ###..### "
DATA " ###### ##.##.## ###### "
DATA " ############.##.############ "
DATA " ###......####.##.####......### "
DATA " ##..####...##.##.##...####..## "
DATA " ##..#######..##..##..#######..## "
DATA " ##.#########.##..##.#########.## "
DATA " ##.##########.####.##########.## "
DATA " ##..#########.####.#########..## "
DATA " ###.##########.##.##########.### "
DATA " ##..#########.##.#########..## "
DATA " ###..########.##.########..### "
DATA " ###..#######.##.#######..### "
DATA " ###..#......##......#..### "
DATA " ###...############...### "
DATA " ###################### "
DATA " ###################### "
DATA " ###..............### "
DATA " ##..############..## "
DATA " #####..........##### "
DATA " ###....########....### "
DATA " ###..##############..### "
DATA " ###################### "
DATA " ################## "
DATA " ########## "
DATA " "
DATA " "
DATA " "
DATA " "
'BasicCoder2 vs. ESCHECS
data "e2e4"
data "e7e6"
data "d2d4"
data "d7d5"
data "e4d5"
data "e6d5"
data "g1f3"
data "g8f6"
data "c1g5"
data "f8b4"
data "c2c3"
data "b4d6"
data "b1d2"
data "c8f5"
data "f3e5"
data "b8c6"
data "d2f3"
data "h7h6"
data "g5h4"
data "g7g5"
data "h4g3"
data "d6e5"
data "f3e5"
data "c6e5"
data "g3e5"
data "d8e7"
data "f1e2"
data "h8g8"
data "e1g1"
data "h1f1" 'castle
data "f6h7"
data "f1e1"
data "f7f6"
data "e5g3"
data "f5e4"
data "f2f3"
data "f6f5"
data "f3e4"
data "f5e4"
data "e2h5"
data "e8d8"
data "d1g4"
data "a7a6"
data "e1f1"
data "e7d7"
data "f1f7"
data "d7g4"
data "h5g4"
data "g8h8"
data "a1f1"
data "e4e3"
data "f7h7"
data "h8h7"
data "f1f8"
data "d8e7"
data "f8a8"
data "c7c6"
data "a8b8"
data "e7f6"
data "b8e8"
data "h6h5"
data "g4e2"
data "a6a5"
data "e8e3"
data "a5a4"
data "g3e5"
data "f6f7"
data "e3f3"
data "f7g8"
data "f3f5"
data "g5g4"
data "f5g5"
data "g8f8"
data "e2d3"
data "h7f7"
data "g5f5"
data "f7f5"
data "d3f5"
data "f8f7"
data "g1f2"
data "f7f8"
data "f2g3"
data "a4a3"
data "b2b3"
data "b7b6"
data "g3h4"
data "c6c5"
data "h4h5"
data "c5c4"
data "b3b4"
data "b6b5"
data "h5g4"
data "f8e7"
data "h2h4"
data "e7e8"
data "h4h5"
data "e8e7"
data "h5h6"
data "e7e8"
data "h6h7"
data "e8e7"
data "h7h8"
data "EXIT"