Generate random chess position: Difference between revisions
→{{header|FutureBasic}}
Line 685:
local fn PlaceKings
short r1, r2, c1, c2
while (YES)
r1 = rnd(8)
if ( abs( r1 - r2 ) > 1 or abs( c1 - c2) > 1 )
grid(
exit fn
end if
wend
end fn
local fn PlacePieces( pieces$ as Str255, isPawn as BOOL )
short n, r, c, numToPlace
numToPlace = rnd( len$(pieces$) )
for n = 1 to numToPlace
do
r = rnd(8)
if isPawn == YES and mid$( pieces$, n, 1 ) == "p" and r = 8 then exit fn
if isPawn == YES and mid$( pieces$, n, 1 ) == "
next
end fn
local fn ToFen
Str255 fen$
short ch, r, c, countEmpty = 0
CFStringRef pieceStr
for r = 1 to 8
for
ch = grid(r, c)
select (ch)
case 107 : pieceStr = @" ♚" // Black King
case
case 112 : pieceStr = @" ♟" // Black Pawn
case
case 114 : pieceStr = @" ♜" // Black Rook
case
case 110 : pieceStr = @" ♞" // Black Knight
case
case 98 : pieceStr = @" ♝" // Black Bishop
case
case 113 : pieceStr = @" ♛" // Black Queen
case
end select
if ( ch )
print pieceStr,
else
print @" .",
end if
if ( ch == 0 )
countEmpty++
else
if ( countEmpty > 0 )
fen$ = fen$ + chr$(countEmpty + 48)
end if
fen$ = fen$ + chr$(ch)
end if
next
if ( countEmpty > 0 )
fen$ = fen$ + chr$(countEmpty + 48)
end if
fen$ = fen$ + "/"
next
fen$ = fen$ + " w - - 0 1"
fen$ = mid$( fen$,
print
text @"Menlo", 14, fn ColorText, fn ColorClear, NSTextAlignmentLeft, 10
print fen$
end fn
local fn CreateFen
fn PlaceKings
fn PlacePieces( "PPPPPPPP", YES )
fn PlacePieces( "pppppppp", YES )
fn PlacePieces( "RNBQBNR", NO )
fn PlacePieces( "rnbqbnr", NO )
fn ToFen
end fn
|