home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / basic / library / gwbasic / friendly / tictac.bas < prev    next >
Encoding:
BASIC Source File  |  1994-05-25  |  4.8 KB  |  87 lines

  1. 10 SCREEN 0,0,0:CLS:ON KEY(10) GOSUB 840:KEY(10) ON
  2. 20 DEFSTR Z:DIM A(9),B(9),C(24),D(7),E(18)
  3. 30 GOSUB 240:GOSUB 200
  4. 40 GOSUB 80
  5. 50 ON T(T) GOSUB 100,280
  6. 60 FOR A=6 TO 18:IF C(A)<>0 THEN NEXT:GOSUB 770:GOTO 40
  7. 70 IF W<>1 THEN 50 ELSE GOSUB 770:GOTO 40
  8. 80 LOCATE 22,26:COLOR 15,0:PRINT"Do You Wish To Go First? <Y/N>         ":COLOR 3,0
  9. 90 GOSUB 120:IF Z="Y" THEN 100 ELSE IF Z="N" THEN 280 ELSE 90
  10. 100 LOCATE 22,1:PRINT SPC(79):COLOR 15,0:LOCATE 22,27:PRINT"Please Enter Square Number":COLOR 3,0
  11. 110 GOSUB 120:IF Z>"0" AND Z<="9" AND C(A(VAL(Z)))<=0 THEN N=VAL(Z):T=1:GOTO 130 ELSE LOCATE 23,25:PRINT"Invalid Move. Please Try Again.":FOR A=1 TO 2000:NEXT:LOCATE 23,25:PRINT SPC(49):GOTO 100
  12. 120 DEF SEG=&H40:POKE &H17,(PEEK(&H17) OR 96):Z=INKEY$:IF Z="" THEN 120 ELSE RETURN
  13. 130 A=6*INT(4-(N/3))-2:B=9+B(N)*14:C(A(N))=T:ON T GOTO 180,190
  14. 140 CLS:FOR A=3 TO 19:LOCATE 1,35:COLOR 15:PRINT"TIC TAC TOE":COLOR 3:LOCATE A,19:PRINT"█":LOCATE A,32:PRINT"██":LOCATE A,46:PRINT"██":LOCATE A,60:PRINT"█":NEXT
  15. 150 LOCATE 2,19:PRINT STRING$(42,219):LOCATE 8,19:PRINT STRING$(42,219):LOCATE 14,19:PRINT STRING$(42,219):LOCATE 20,19:PRINT STRING$(42,219)
  16. 160 B=7:FOR A=1 TO 3:LOCATE 6*A-1,25:PRINT B:LOCATE 6*A-1,39:PRINT B+1:LOCATE 6*A-1,53:PRINT B+2:B=B-3:NEXT
  17. 170 LOCATE 25,24:COLOR 0,7:PRINT" Strike <F10> To Leave This Game ";:COLOR 3,0:RETURN
  18. 180 COLOR 12,0:LOCATE A,B:PRINT"██  ██":LOCATE A+1,B:PRINT" ████ ":LOCATE A+2,B:PRINT"██  ██":COLOR 3,0:RETURN
  19. 190 COLOR 10,0:LOCATE A,B:PRINT"▓▓▓▓▓▓":LOCATE A+1,B:PRINT"▓▓  ▓▓":LOCATE A+2,B:PRINT"▓▓▓▓▓▓":COLOR 3,0:RETURN
  20. 200 CLS:PRINT STRING$(80,219):FOR A=2 TO 22:LOCATE A,1:PRINT"█":LOCATE A,80:PRINT"█";:NEXT:PRINT STRING$(80,219);:LOCATE 4,30:COLOR 15,0:PRINT"T I C - T A C - T O E":LOCATE 8,23:PRINT"Would You Like Instructions? <Y/N>";:COLOR 3,0
  21. 210 GOSUB 120:IF Z="N" THEN 140 ELSE IF Z<>"Y" THEN 210
  22. 220 LOCATE 6,21:PRINT"I will play you a game of  TIC-TAC-TOE.":LOCATE 7,21:PRINT"In this game I will always be ` O 'and":LOCATE 8,21:PRINT"you will always be ` X '. You may tell":LOCATE 9,21:PRINT"me  if you would  like to go  first or
  23. 230 LOCATE 10,21:PRINT"second;  however,  it  doesn't  matter":LOCATE 11,21:PRINT"because  I  can  not  be  defeated !!!":LOCATE 14,27:PRINT"GOOD LUCK. YOU'LL NEED IT !!":LOCATE 25,28:COLOR 15:PRINT"Strike Any Key To Continue";:COLOR 3:GOSUB 120:GOTO 140
  24. 240 FOR A=1 TO 24:C(A)=0:NEXT:FOR A=1 TO 4:C(A-1)=3:C(A*5)=3:C(A*5-1)=3:C(A+20)=3:NEXT
  25. 250 FOR A=0 TO 7:READ D(A):NEXT:FOR A=6 TO 18:READ E(A):NEXT:FOR A=1 TO 9:READ A(A):NEXT:T(1)=2:T(2)=1:FOR B=1 TO 3:B(B)=B:B(B+3)=B:B(B+6)=B:NEXT:RETURN
  26. 260 DATA 1,6,5,4,-1,-6,-5,-4,7,8,9,0,0,4,5,6,0,0,1,2,3,16,17,18,11,12,13,6,7,8
  27. 270 REM * COMPUTER MOVE EVALUATION ROUTINE *
  28. 280 FOR A=6 TO 18
  29. 290 IF C(A)<>2 THEN 350
  30. 300 FOR B=0 TO 7
  31. 310 IF A+2*D(B)<6 OR A+2*D(B)>18 THEN 340
  32. 320 IF C(A+D(B))=2 AND C(A+D(B)*2)=0 THEN N=A+D(B)*2:W=1:GOTO 460
  33. 330 IF C(A+D(B))=0 AND C(A+D(B)*2)=2 THEN N=A+D(B):W=1:GOTO 460
  34. 340 NEXT
  35. 350 NEXT
  36. 360 FOR A=6 TO 18
  37. 370 IF C(A)<>1 THEN 430
  38. 380 FOR B=0 TO 7
  39. 390 IF A+2*D(B)<6 OR A+2*D(B)>18 THEN 420
  40. 400 IF C(A+D(B))=1 AND C(A+D(B)*2)=0 THEN N=A+D(B)*2:GOTO 460
  41. 410 IF C(A+D(B))=0 AND C(A+D(B)*2)=1 THEN N=A+D(B):GOTO 460
  42. 420 NEXT
  43. 430 NEXT
  44. 440 IF C(12)=0 THEN N=12:GOTO 460
  45. 450 GOTO 470
  46. 460 N=E(N):T=2:GOTO 130
  47. 470 IF C(6)<>1 THEN 520
  48. 480 IF C(13)<>1 THEN 500
  49. 490 IF C(8)=0 THEN N=8:GOTO 460
  50. 500 IF C(17)<>1 THEN 520
  51. 510 IF C(16)=0 THEN N=16:GOTO 460
  52. 520 IF C(8)<>1 THEN 570
  53. 530 IF C(11)<>1 THEN 550
  54. 540 IF C(6)=0 THEN N=6:GOTO 460
  55. 550 IF C(17)<>1 THEN 570
  56. 560 IF C(18)=0 THEN N=18:GOTO 460
  57. 570 IF C(16)<>1 THEN 620
  58. 580 IF C(7)<>1 THEN 600
  59. 590 IF C(6)=0 THEN N=6:GOTO 460
  60. 600 IF C(13)<>1 THEN 620
  61. 610 IF C(18)=0 THEN N=18:GOTO 460
  62. 620 IF C(18)<>1 THEN 670
  63. 630 IF C(11)<>1 THEN 650 ELSE IF C(6)=2 THEN 660
  64. 640 IF C(16)=0 THEN N=16:GOTO 460
  65. 650 IF C(7)<>1 THEN 670 ELSE IF C(6)=2 THEN IF C(16)=0 THEN N=16:GOTO 460
  66. 660 IF C(8)=0 THEN N=8:GOTO 460
  67. 670 IF C(6)=1 AND C(18)=1 OR C(8)=1 AND C(16)=1 THEN M=7:GOTO 730
  68. 680 IF C(17)=1 AND C(13)=1 AND C(18)=0 THEN N=18:GOTO 460
  69. 690 FOR A=6 TO 18 STEP 2
  70. 700 IF C(A)=0 THEN N=A:GOTO 460
  71. 710 NEXT
  72. 720 M=6
  73. 730 FOR A=M TO 18
  74. 740 IF C(A)=0 THEN N=A:GOTO 460
  75. 750 NEXT
  76. 760 RUN
  77. 770 LOCATE 22,10:PRINT SPC(69):LOCATE 22,35:COLOR 31:IF W=1 THEN PRINT"I Win !!!!";:GOTO 830 ELSE LOCATE 22,36:PRINT"Tie Game"
  78. 780 LOCATE 23,23:COLOR 15:PRINT"Would You Like To Play Again? <Y/N>";:COLOR 3
  79. 790 GOSUB 120:IF Z="Y" THEN RESTORE:W=0:GOSUB 140:GOTO 240 ELSE IF Z<>"N" THEN 790
  80. 800 ON ERROR GOTO 810:RUN"menu1"
  81. 810 ON ERROR GOTO 820:RUN"menu2"
  82. 820 RUN"MENU3"
  83. 830 FOR A=1 TO 5:SOUND 500,1:SOUND 100,1:NEXT:GOTO 780
  84. 840 KEY(10) OFF:LOCATE 25,22:COLOR 14,0:PRINT"Do You Wish To Leave This Game? <Y/N>";:COLOR 3,0
  85. 850 GOSUB 120:IF Z="N" THEN 860 ELSE IF Z<>"Y" THEN 850 ELSE 800
  86. 860 LOCATE 25,1:PRINT SPC(78);:COLOR 0,7:LOCATE 25,24:PRINT" Strike <F10> To Leave This Game ";:Z="":COLOR 3,0:KEY(10) ON:RETURN
  87.