Generate Chess960 starting position: Difference between revisions

Content added Content deleted
(→‎Header: BASIC: Consolidate BASIC entries)
(→‎{{header|Commodore BASIC}}: Normalize input instead of erroring on >= 960; work without BEGIN/BEND)
Line 81: Line 81:
=={{header|BASIC}}==
=={{header|BASIC}}==
==={{header|Commodore BASIC}}===
==={{header|Commodore BASIC}}===
{{works with|Commodore BASIC|7.0}}
{{works with|Commodore BASIC|3.5,7.0}}
Uses DO/LOOP and BEGIN/BEND from Commodore BASIC 7 on the C-128.
Uses structured DO/LOOP introduced in Commodore BASIC 3.5 on the C-16 and Plus/4, also found in BASIC 7.0 on the C-128.


<lang basic>100 REM CHESS 960
<lang basic>100 REM CHESS 960
Line 90: Line 90:
140 IF SP<0 THEN SP=INT(RND(.)*960):PRINT SP
140 IF SP<0 THEN SP=INT(RND(.)*960):PRINT SP
150 PRINT
150 PRINT
160 IF SP<0 OR SP>959 THEN PRINT "NEED 0 <= SP < 960":GOTO 110
160 DO WHILE SP>959: SP=SP-960: LOOP
170 AR$="--------"
170 AR$="--------"
180 P=SP
180 P=SP
Line 102: Line 102:
260 FOR N1=0 TO 3
260 FOR N1=0 TO 3
270 : FOR N2=N1+1 TO 4
270 : FOR N2=N1+1 TO 4
280 : IF N=0 THEN BEGIN
280 : IF N<>0 THEN 340
290 : P$="N":N=N1:GOSUB 420
290 : P$="N":N=N1:GOSUB 420
300 : P$="N":N=N2-1:GOSUB 420
300 : P$="N":N=N2-1:GOSUB 420
310 : N1=3
310 : N1=3
320 : N2=4
320 : N2=4
330 : BEND
340 : N=N-1
340 : N=N-1
350 : NEXT N2
350 : NEXT N2
Line 114: Line 113:
380 P$="K":N=0:GOSUB 420
380 P$="K":N=0:GOSUB 420
390 P$="R":N=0:GOSUB 420
390 P$="R":N=0:GOSUB 420
400 PRINT AR$
400 PRINT STR$(SP);":";AR$
410 END
410 END
420 FOR I=1 TO LEN(AR$)
420 FOR I=1 TO LEN(AR$)
430 : IF MID$(AR$,I,1)="-" THEN BEGIN
430 : IF MID$(AR$,I,1)<>"-" THEN 510
440 : IF N=0 THEN BEGIN
440 : IF N<>0 THEN 480
450 : MID$(AR$,I,1)=P$
450 : MID$(AR$,I,1)=P$
460 : I=LEN(AR$)
460 : I=LEN(AR$)
470 : BEND:ELSE BEGIN
470 : GOTO 510
480 : N=N-1
480 : N=N-1
490 : BEND
500 : BEND
510 NEXT I
510 NEXT I
520 RETURN</lang>
520 RETURN
</lang>


{{Out}}
{{Out}}
Line 133: Line 131:
RUN
RUN
SPID (-1 FOR RANDOM):518
SPID (-1 FOR RANDOM):518
RNBQKBNR
518:RNBQKBNR


READY.
READY.
RUN
RUN
SPID (-1 FOR RANDOM):- 926
SPID (-1 FOR RANDOM):-1
926:RKRQNBBN

RKRQNBBN


READY.</pre>
READY.</pre>