Compucolor.org – Virtual Media

Listing of file='TEASER.BAS;01' on disk='vmedia/chip_24-sector.ccvf'

5 REM 
10 PLOT 30,16,29,22,14,12
15 PRINT :PRINT TAB( 26)"BRAIN TEASER"
20 REM 
25 REM      BY HAL KNIPPENBERG
30 REM         CREATIVE COMPUTING
35 REM         JULY, 1979  P.104
40 REM
45 REM      WITH ALTERATIONS FOR
50 REM      COMPUCOLOR DISK BASIC 6.78
55 REM      BY DAVID B. SUITS,  JULY, 1979
60 REM
65 GOSUB 950:PLOT 6,2:PRINT :PRINT
68 PRINT "THE OBJECT OF THIS GAME IS TO CHANGE THE PATTERN OF RED AND"
70 PRINT "GREEN SQUARES IN A 3 X 3 ARRAY SO THAT ALL SQUARES ARE GREEN"
72 PRINT "EXCEPT FOR A RED SQUARE IN THE CENTER."
74 PRINT
76 PRINT "CHOOSING A SQUARE IN THE CENTER OF AN EDGE CAUSES THE THREE"
78 PRINT "SQUARES ALONG THAT EDGE TO CHANGE COLOR (FROM RED TO GREEN"
80 PRINT "OR FROM GREEN TO RED)."
82 PRINT
84 PRINT "CHOOSING A CORNER SQUARE CAUSES THAT SQUARE AND THE THREE"
86 PRINT "ADJACENT SQUARES TO CHANGE COLOR."
88 PRINT
90 PRINT "AND CHOOSING THE CENTER SQUARE CAUSES ALL BUT THE CORNER"
92 PRINT "SQUARES TO CHANGE COLOR."
94 PRINT
96 PRINT "YOU LOSE IF ALL SQUARES BECOME RED."
98 GOSUB 3000:PLOT 3,15,25
99 INPUT "PRESS RETURN TO BEGIN ";A$
100 S$= "124501230023560147002456836900457807890056890"
120 PLOT 15,6,6,12
300 M= 0
304 REM  SET UP BOARD
305 GOSUB 1000
310 GOSUB 950
349 REM  PRINT BOARD
350 GOSUB 900:GOSUB 550
399 REM  CHECK FOR WIN
400 GOSUB 552:GOSUB 700
410 IF LEN (W$)> 2THEN 10000
449 REM  GET MOVE
450 PLOT 14,6,3,3,0,25,11
455 PRINT TAB( 26);
460 INPUT "SQUARE: ";MO$
470 IF MO$= "0"THEN END
475 IF MO$= "A"THEN PLOT 12:GOTO 300
480 MO= VAL (MO$):IF MO< 1OR MO< > INT (MO)OR MO> 9THEN 450
490 IF B(MO)< > 0THEN 520
500 PLOT 6,1,15:PRINT TAB( 26)"ILLEGAL MOVE!"
510 FOR T= 1TO 500:NEXT :PLOT 28,11:GOTO 450
519 REM  REVISE BOARD
520 GOSUB 600
530 M= M+ 1
540 GOTO 350
550 PLOT 15,6,6,3,29,1:PRINT "NUMBER":PLOT 3,28,2:PRINT "OF MOVES:"
552 PLOT 14,6,3,3,30,5:PRINT M
554 RETURN
600 REM
610 B(0)= 5
620 FOR I= (5* MO- 4)TO 5* MO
630 T= VAL (MID$ (S$,I,1))
640 IF B(T)= 0THEN B(T)= 1:GOTO 660
650 B(T)= 0
660 NEXT :RETURN
700 S= 0:W$= ""
710 FOR J= 1TO 9:S= S+ B(J):NEXT
720 IF S= 0THEN W$= "LOST"
730 IF S< > 8THEN 850
740 IF B(5)= 0THEN W$= "WON"
750 RETURN
800 REM
810 PLOT 30,3,X,Y
820 PRINT "neeo";:GOSUB 890
830 PRINT "a"N"b";:GOSUB 890
840 PRINT "lm"
850 PLOT 29,6,6
860 RETURN
890 PLOT 10,26,26,26,26:RETURN
899 REM  PRINT BOARD
900 N= 0:PLOT 15:FOR Y= 8TO 14STEP 3
910 FOR X= 26TO 34STEP 4
920 N= N+ 1:PLOT 6,12+ 8* B(N):GOSUB 810
930 NEXT X,Y
940 RETURN
950 PLOT 15,6,5,8:PRINT " WIN":PRINT " WITH:"
955 PRINT
960 PRINT " {}{}{}":PRINT " {}{}{}":PRINT " {}{}{}"
965 PLOT 6,5,3,57,0:PRINT "LOSE":PLOT 3,57,1:PRINT "WITH:"
970 PLOT 3,57,3:FOR J= 1TO 3:GOSUB 985:NEXT :RETURN
975 PLOT 3,57,5:PRINT "{}{}{}"
980 RETURN
985 PRINT "{}{}{}";:PLOT 10,26,26,26,26,26,26:RETURN
999 REM  SET UP BOARD
1000 S= 0
1010 FOR I= 1TO 9
1020 T= RND (1)
1030 B(I)= 0:IF T< .9THEN B(I)= 1
1040 S= S+ B(I)
1050 NEXT :IF S= 0THEN 1010
1055 IF S= 8AND B(5)= 0THEN 1010
1060 RETURN
3000 PLOT 3,0,28:PRINT " * CHALLENGE TO AMBITIOUS PROGRAMMERS:"
3010 PRINT "   WRITE A PROGRAM WHICH WILL LEARN HOW TO PLAY THIS GAME.":RETURN
9999 REM  GAME OVER
10000 PLOT 14,3,0,25,11
10010 PRINT TAB( 28)"YOU "W$
10030 PRINT
10040 PRINT TAB( 22);
10045 INPUT "CARE TO PLAY AGAIN? ";A$
10050 IF LEFT$ (A$,1)= "Y"OR LEFT$ (A$,1)= "O"THEN PLOT 12:GOTO 300
10060 IF LEFT$ (A$,1)< > "N"THEN PLOT 28,11:GOTO 10040
10070 LOAD "MENU":RUN