This is non-commercial site, its content is based on Atari 8-bit home computer contents and references.
If you feel your rights are violated by showing/using any part of contents of your product represented on this page,
please contact me immediatelly so I can remove it!
Entry name:
Othello
|
Publisher/Developer:
BELLCOM - Public Domain Library (Software library) |
|
|
-
Entry name:Othello
-
Category:Games
-
Publisher/Developer:BELLCOM - Public Domain Library
Listing 1
3 Q0=0:Q1=1:Q2=2:Q4=4:Q5=3:Q6=6:Q7=7:Q9=9:Q10=10:Q11=11:Q12=12:Q14=14:Q15=3000:Q17=5:Q18=15:Q31=31:Q35=35:Q40=40:Q42=42:Q44=44 4 Q45=45:Q50=50:Q54=54:Q55=55:Q70=70:Q72=72:Q77=77:Q88=88:Q101=101:Q102=3100:Q120=120:Q200=3200:Q255=255:Q401=3400:Q501=8500 5 Q740=3740:Q755=755:Q764=764 35 DIM BOARD(Q101),P(Q101),PIE(Q1),YESNO$(Q2),LEGAL(Q9) 40 GRAPHICS Q2:? #Q6:? #Q6:? #Q6:? #Q6:? #Q6;" OTHELLO" 50 ? "DO YOU WANT INSTRUCTIONS (Y/N)"; 51 IF PEEK(Q764)=Q35 THEN ?:?:GOTO 500 52 IF PEEK(Q764)=43 THEN GOTO Q55 53 GOTO 51 55 GRAPHICS Q0 60 ? "REVERSI is a game played on an 8 by 8 board by two players who alternately place pieces to capture other "; 70 ? "pieces." 90 ? "Capturing is done by pinching your opponent's pieces between your own. A player must capture pieces if "; 100 ? " possible." 120 ? "When players have no more captures, the game ends. The player with more pieces wins." 130 ? "Choosing the location of your move is done by using the curser keys ";:FOR X=28 TO Q31:? CHR$(27);CHR$(X);:NEXT X 150 ? " when you are happy, press the space bar and the computer will put your piece on that location." 160 ? "If you are not sure about how to play,when asked how many human players, reply 0(zero) and you can "; 170 ? "watch the computer play itself" 180 ? "If you cannot move, or you wish the computer to move for you, press 'N' and the move will be made." 500 POKE Q764,Q255:? "HOW MANY HUMAN PLAYERS (0-2)"; 510 IF PEEK(Q764)=Q255 THEN 510 520 IF PEEK(Q764)=Q50 THEN PLAYERS=Q0:? "0" 530 IF PEEK(Q764)=Q31 THEN PLAYERS=Q1:? "1" 540 IF PEEK(Q764)=30 THEN PLAYERS=Q2:? "2" 600 ? "STAND BY....." 620 DATA 0,0,0,0,0,0,0,0,0,0,0,7,2,6,6,6,6,2,7,0,0,2,1,3,3,3,3,1,2,0,0,6,3,4,4,4,4,3,6,0 624 DATA 0,6,3,4,4,4,4,3,6,0,0,6,3,4,4,4,4,3,6,0,0,6,3,4,4,4,4,3,6,0 628 DATA 0,2,1,3,3,3,3,1,2,0,0,7,2,6,6,6,6,2,7,0,0,0,0,0,0,0,0,0,0,0 630 FOR X=Q0 TO 99:READ Y:P(X)=Y:NEXT X 640 DATA -10,-9,1,11,10,9,-1,-11,0 650 FOR X=Q1 TO Q9:READ Y:LEGAL(X)=Y:NEXT X:DRAWCELL=8000:DRAWCELLP=8100:GRID=8400:KEYREAD=Q501:AUTOPLAY=3700 910 LET ONE=Q1:ZERO=Q0:PIE(ZERO)=Q2:PIE(ONE)=Q2 2000 GRAPHICS Q7:SETCOLOR Q1,Q4,8:SETCOLOR Q2,Q12,Q10:POKE 752,Q1:? "";:SETCOLOR Q5,Q4,Q4:GOSUB GRID 2030 P=Q1:CELL=Q44:GOSUB DRAWCELLP:CELL=Q55:GOSUB DRAWCELLP:P=Q2:CELL=Q45:GOSUB DRAWCELLP:CELL=Q54:GOSUB DRAWCELLP 2100 FOR I=Q11 TO Q88:BOARD(I)=ZERO:NEXT I 2110 FOR I=ZERO TO Q9:BOARD(I)=-Q1:BOARD(I+90)=-Q1:BOARD(I*Q10)=-Q1:BOARD(I*Q10+Q9)=-Q1:NEXT I 2120 BOARD(Q44)=Q1:BOARD(Q55)=Q1:BOARD(Q45)=Q2:BOARD(Q54)=Q2:CURC=Q2:CURX=26:CURY=Q70:GOSUB DRAWCELL 2210 CURC=Q5:CURX=129:CURY=Q70:GOSUB DRAWCELL 3000 IF PIE(ZERO)+PIE(ONE)=64 OR PIE(ONE)=ZERO OR PIE(ZERO)=ZERO THEN 4000 3005 POKE Q77,Q0:? "";" ";PIE(ONE),,," ";PIE(ZERO):IF CURP=ZERO THEN ? " " 3007 IF CURP=ONE THEN ? " " 3010 SETCOLOR Q1+CURP,Q4,Q0:SOUND Q0,Q255,Q10,Q10:FOR Y=Q1 TO Q40:NEXT Y:SETCOLOR Q1+CURP,Q4,Q14:SOUND Q0,Q0,Q0,Q0 3020 SETCOLOR Q1,Q4,Q4:SETCOLOR Q2,Q12,Q10:IF CURP=ZERO THEN SETCOLOR Q0,Q4,Q4 3023 IF CURP=ONE THEN SETCOLOR Q0,Q12,Q10 3025 IF PLAYERS=ZERO OR PLAYERS=ONE AND CURP=ONE THEN GOTO AUTOPLAY 3030 CURCELL=Q44:CURX=ZERO:CURY=ZERO:GOTO Q200 3100 GOSUB KEYREAD:IF DC=ZERO THEN GOTO Q401 3107 CURCELL=CURCELL+DC:IF BOARD(CURCELL)=ZERO THEN GOTO Q200 3120 IF BOARD(CURCELL)<ZERO THEN CURCELL=CURCELL-DC:GOTO Q102 3200 COLOR SHADE:PLOT CURX,CURY:DRAWTO CURX+Q2,CURY:PLOT CURX,CURY+ONE:DRAWTO CURX+Q2,CURY+ONE 3310 CURY=INT(CURCELL/Q10):CURX=CURCELL-Q10*CURY:CURX=Q44+Q10*(CURX-Q1):CURY=Q4+Q9*(CURY-Q1):LOCATE CURX,CURY,SHADE 3340 COLOR SHADE+ONE:PLOT CURX,CURY:DRAWTO CURX+Q2,CURY:PLOT CURX,CURY+ONE:DRAWTO CURX+Q2,CURY+ONE 3350 SOUND Q0,Q50,Q10,Q10:FOR X=Q1 TO 20:NEXT X:SOUND Q0,Q0,Q0,Q0:GOTO Q102 3400 IF BOARD(CURCELL)<>Q0 THEN GOTO Q200 3450 CELL=CURCELL:P=CURP+Q1:GOSUB DRAWCELLP:CURP=ONE-CURP:PIE(CURP)=PIE(CURP)+ONE:BOARD(CURCELL)=ONE-CURP+Q1 3480 CURC=ONE-CURP+Q2:GOSUB DRAWCELL:TOTAL=ZERO:PLAY=ZERO 3520 PLAY=PLAY+ONE:INCR=LEGAL(PLAY):IF INCR<>Q0 THEN GOSUB 3600:GOTO 3520 3580 IF TOTAL=ZERO THEN CURP=Q1-CURP:BOARD(CURCELL)=Q0:CURC=Q0:GOSUB DRAWCELL:GOTO Q200 3590 GOTO Q15 3600 SPOT=Q0:PIECES=Q0 3610 SPOT=SPOT+INCR:IF BOARD(CURCELL+SPOT)=ONE+CURP THEN PIECES=PIECES+ONE:GOTO 3610 3620 IF BOARD(CURCELL+SPOT)<>BOARD(CURCELL) OR PIECES=Q0 THEN RETURN 3630 SPOT=SPOT-INCR 3640 CURY=INT((CURCELL+SPOT)/Q10):CURX=CURCELL+SPOT-Q10*CURY:BOARD(CURCELL+SPOT)=BOARD(CURCELL) 3645 PIE(CURP)=PIE(CURP)+ONE:PIE(ONE-CURP)=PIE(ONE-CURP)-ONE:CURX=Q42+Q10*(CURX-Q1):CURY=Q2+Q9*(CURY-Q1) 3660 P=ONE:GOSUB DRAWCELL:SPOT=SPOT-INCR:TOTAL=TOTAL+ONE:IF SPOT=ZERO THEN RETURN 3680 GOTO 3640 3700 MAX=ZERO:FOR CURCELL=Q11 TO Q88:IF BOARD(CURCELL)<>ZERO THEN GOTO Q740 3711 PLAY=ZERO:POKE Q755,Q5 3712 PLAY=PLAY+ONE:INCR=LEGAL(PLAY):IF INCR=ZERO THEN GOTO Q740 3713 IF BOARD(CURCELL+INCR)=Q1 OR BOARD(CURCELL+INCR)=Q2 THEN 3720 3715 GOTO 3712 3720 TOTAL=ZERO:PLAY=ZERO 3725 PLAY=PLAY+ONE:INCR=LEGAL(PLAY):IF INCR<>Q0 THEN GOSUB 3800:GOTO 3725 3728 IF TOTAL>ZERO THEN TOTAL=TOTAL+P(CURCELL) 3730 IF TOTAL>MAX THEN CNEW=CURCELL:MAX=TOTAL 3735 IF TOTAL=MAX AND RND(ZERO)>0.5 THEN CNEW=CURCELL 3740 POKE Q755,Q2:NEXT CURCELL:CURCELL=CNEW:IF MAX=ZERO THEN CURP=ONE-CURP:GOTO Q15 3750 GOTO Q401 3800 SPOT=ZERO:PIECES=ZERO 3810 SPOT=SPOT+INCR:IF BOARD(CURCELL+SPOT)=Q2-CURP THEN PIECES=PIECES+ONE:GOTO 3810 3820 IF BOARD(CURCELL+SPOT)<>ONE+CURP OR PIECES=ZERO THEN RETURN 3830 SPOT=SPOT-INCR 3840 SPOT=SPOT-INCR:TOTAL=TOTAL+P(CURCELL+SPOT):IF SPOT=ZERO THEN RETURN 3850 GOTO 3840 4000 POKE Q77,Q0:? "";" ";PIE(ONE),,," ";PIE(ZERO):IF PIE(ZERO)<PIE(ONE) THEN ? " ":? 4007 IF PIE(ZERO)>PIE(ONE) THEN ? " ":? 4008 IF PIE(ZERO)=PIE(ONE) THEN ? "TIE GAME!!":GOTO 4030 4010 ? "THE WINNER WAS PLAYER #";:IF PIE(ONE)>PIE(ZERO) THEN ? ONE 4020 IF PIE(ONE)<PIE(ZERO) THEN ? Q2 4030 POKE Q764,Q255:? "ANOTHER GAME";:INPUT YESNO$:IF YESNO$(Q1,Q1)="Y" THEN RUN 4040 GRAPHICS Q0:?:? "CALLING MENU.....":RUN "D:MENU" 8000 COLOR CURC:PLOT CURX+Q2,CURY:DRAWTO CURX+Q4,CURY:PLOT CURX+Q1,CURY+Q1:DRAWTO CURX+Q17,CURY+Q1 8040 PLOT CURX,CURY+Q2:DRAWTO CURX+Q6,CURY+Q2:PLOT CURX,CURY+Q5:DRAWTO CURX+Q6,CURY+Q5 8060 PLOT CURX+Q1,CURY+Q4:DRAWTO CURX+Q17,CURY+Q4:PLOT CURX+Q2,CURY+Q17:DRAWTO CURX+Q4,CURY+Q17:IF P=Q0 THEN RETURN 8080 FOR I=Q10 TO 200 STEP Q10:SOUND Q0,I,Q0,Q18:NEXT I:FOR I=Q18 TO Q0 STEP 0.25:SOUND Q0,210,Q0,I:NEXT I 8090 SOUND Q0,Q0,Q0,Q0:RETURN 8100 REM 8110 CURC=P+Q1:CURY=INT(CELL/Q10):CURX=CELL-Q10*CURY:CURX=Q42+Q10*(CURX-Q1):CURY=Q2+Q9*(CURY-Q1):GOTO DRAWCELL 8400 COLOR Q1:FOR Y=Q0 TO Q72 STEP Q9:SOUND Q0,Y,Q10,Q10:PLOT Q40,Y:DRAWTO Q120,Y:NEXT Y 8430 FOR X=Q40 TO Q120 STEP Q10:SOUND Q0,100+X,Q10,Q10:PLOT X,Q0:DRAWTO X,Q72:NEXT X:SOUND Q0,Q0,Q0,Q0:RETURN 8500 POKE Q764,Q0:DC=ZERO 8520 P=PEEK(Q764):IF P=Q6 THEN DC=-Q1 8522 IF STICK(Q0)=Q11 THEN DC=-Q1 8530 IF P=Q7 THEN DC=Q1 8532 IF STICK(Q0)=Q7 THEN DC=Q1 8540 IF P=Q18 THEN DC=Q10 8542 IF STICK(Q0)=13 THEN DC=Q10 8550 IF P=Q14 THEN DC=-Q10 8552 IF STICK(Q0)=Q14 THEN DC=-Q10 8560 IF P=33 THEN RETURN 8562 IF STRIG(Q0)=Q0 THEN RETURN 8565 IF P=21 THEN GOSUB 5000:GOTO Q501 8567 IF P=Q35 THEN COLOR SHADE:PLOT CURX,CURY:DRAWTO CURX+Q2,CURY:PLOT CURX,CURY+ONE:DRAWTO CURX+Q2,CURY+ONE:GOTO 370 8570 IF DC=ZERO THEN 8520 8590 RETURN
References
Listing downloads
Downloads
Copyright holder
