home *** CD-ROM | disk | FTP | other *** search
AmigaBASIC Source Code | 1987-04-02 | 12.6 KB | 496 lines |
- CLS
- WINDOW 2,,,0
- WINDOW OUTPUT 2
- RANDOMIZE TIMER
- PALETTE 0,0.4,0,0
- PALETTE 1,1,1,1
- LOCATE 6,28
- PRINT "* * TIC TAC TOE * *"
- LOCATE 14,10
- PRINT "Do you want Amy to talk to you during the game? (Y or N)?"
- LOCATE 16,4
- PRINT "(If you select 'Y', then you must have the Workbench disk in the drive.)"
- LOCATE 20,30
- PRINT "Press 'Y' or 'N'"
- talkornot:
- talk$=UCASE$(INKEY$)
- IF talk$="" THEN GOTO talkornot
- IF talk$="Y" THEN a$=" ":GOSUB onemom:GOSUB t:GOTO maintitle
- IF talk$="N" THEN GOTO maintitle
- GOTO talkornot
-
- maintitle:
- CLS
- PALETTE 0,0.4,0,0
- PALETTE 2,0,0,1
- COLOR(2)
-
- AREA (40,35)
- AREA (135,20)
- AREA (100,40)
- AREA (70,90)
- AREA (80,45)
- AREAFILL
- AREA (160,25)
- AREA (170,60)
- AREA (165,95)
- AREA (150,60)
- AREAFILL
- AREA (210,25)
- AREA (290,15)
- AREA (230,30)
- AREA (225,80)
- AREA (290,75)
- AREA (200,90)
- AREA (220,55)
- AREAFILL
- AREA (330,15)
- AREA (450,5)
- AREA (410,15)
- AREA (360,80)
- AREA (380,20)
- AREAFILL
- AREA (460,10)
- AREA (480,65)
- AREA (460,50)
- AREA (430,55)
- AREA (400,75)
- AREAFILL
- AREA (510,10)
- AREA (600,10)
- AREA (540,20)
- AREA (535,65)
- AREA (580,75)
- AREA (500,70)
- AREAFILL
- AREA (180,115)
- AREA (310,100)
- AREA (250,120)
- AREA (260,155)
- AREA (230,125)
- AREAFILL
- AREA (320,105)
- AREA (410,90)
- AREA (370,150)
- AREA (285,155)
- AREAFILL
- AREA (430,95)
- AREA (520,85)
- AREA (440,110)
- AREA (470,115)
- AREA (420,130)
- AREA (485,135)
- AREA (390,160)
- AREAFILL
- COLOR(0)
- AREA (345,117)
- AREA (370,115)
- AREA (360,135)
- AREA (330,140)
- AREAFILL
- AREA (455,30)
- AREA (460,45)
- AREA (440,45)
- AREAFILL
-
- COLOR(1)
- LOCATE 21,30
- PRINT "by KIP H. HAMMOND"
- a$="amy is now ready to chalenge you at tic tac toe!"
- GOSUB t
- a$="if you are ready then press i for instrukshuns, or p to play."
- GOSUB t
- LOCATE 23,17
- PRINT "Press 'I' for Instructions, or 'P' to Play."
-
- wait1:
- zz$=UCASE$(INKEY$)
- IF zz$="I" THEN GOTO instructions
- IF zz$="P" THEN GOTO difficulty
- GOTO wait1
-
- instructions:
- CLS
- LINE (100,15)-(530,70),1,b
- PALETTE 2,0,0.4,0
- PAINT STEP (-10,-10),2,1
- LOCATE 4,25
- PRINT "Play TIC TAC TOE against Amy !!"
- LOCATE 6,39:PRINT "by"
- LOCATE 8,33
- PRINT "Kip H. Hammond"
-
- LINE (305,85)-(305,130)
- LINE (345,85)-(345,130)
- LINE (265,100)-(380,100)
- LINE (265,115)-(380,115)
- LOCATE 18,29
- PRINT "You are 'X' and Amy is 'O'."
- LOCATE 20,9
- PRINT "When it is your turn to play, select the placement of your mark"
- LOCATE 21,6
- PRINT "with the mouse, and make your mark by pressing the left mouse button."
- a$="you are x":GOSUB t:a$="and amy is o!":GOSUB t
- a$="when it is your turn to play suh lect the playcement of your mark with the mouse."
- GOSUB t
- a$="and make your mark by pressing the left mouse button!"
- GOSUB t
- a$="when you are ready press any key to continue!"
- GOSUB t
- LOCATE 23,29
- PRINT "Press any key to continue."
-
- wait2:
- zz$=INKEY$
- IF zz$="" GOTO wait2
-
- difficulty:
- CLS
- LOCATE 5,10
- PRINT "Choose your difficulty level:"
- LOCATE 10,15
- PRINT "A - EASY (Amy will be dumb! You should win easily.)"
- LOCATE 12,15
- PRINT "B - MEDIUM (Amy will have some smarts...but you can still win.)"
- LOCATE 14,15
- PRINT "C - HARD (Amy is a Genius...Impossible for you to win!!!)"
- IF zz$="again" THEN a$="ok. try again!":GOTO jump
- a$="ok let's see how brave you are. Suh lect your difficulty level!"
- jump:
- GOSUB t
- LOCATE 18,20
- PRINT "Select 'A', 'B', or 'C' on Amy's keyboard."
- GOTO selectdif
-
- selectdif:
- dif$=UCASE$(INKEY$)
- IF dif$="A" THEN a$="you are really a chicken. OK if that's the way you want it!":GOSUB t
- IF dif$="B" THEN a$="glad to see that you have some kurrage! you can win but you had better play carefully!":GOSUB t
- IF dif$="C" THEN a$="you must be crazy! you can not win! amy is a geen yus! hang on to your hat. here we go!":GOSUB t
- IF dif$="A" OR dif$="B" OR dif$="C" THEN GOTO newgame
- GOTO selectdif
-
- newgame:
- GOSUB drawgrid
- e=0:f=0:g=0:h=0:i=0:j=0:k=0:l=0:m=0
-
- startplay:
- w=0
- GOSUB yourplay
- GOSUB wincheck
- IF w=1 GOTO youwin
- IF w=3 GOTO catwins
- GOSUB amysplay
- GOSUB wincheck
- IF w=1 THEN GOTO youwin
- IF w=2 THEN GOTO amywins
- IF w=3 THEN GOTO catwins
- GOTO startplay
-
- youwin:
- FOR delay=0 TO 6000:NEXT
- CLS
- LOCATE 10,35
- PRINT "YOU WIN !!!"
- w=INT(RND*10)
- IF w=0 THEN a$="i bet you think that you are pretty smart?"
- IF w=1 THEN a$="you are not as smart as i look. in fact you are ugly!"
- IF w=2 THEN a$="you big ugly dummy! why don't you play a real human's game?"
- IF w=3 THEN a$="you are so stupid. i bet you think you are really radical!"
- IF w=4 THEN a$="ho ho ho hah hah hah. i let you win. why don't you play a harder level?"
- IF w=5 THEN a$="you are a lou zee stupid player. and ugly too."
- IF w=6 THEN a$="you are so ugly that you make frank in stine look good!"
- IF w=7 THEN a$="your bad brehth is fogg ging my screen. and you are a chicken too!"
- IF w=8 THEN a$="you are such a fraidy cat. why don't you play a harder level?"
- IF w=9 THEN a$="cluck cluck cluck you are a su per chicken. try a harder level!"
- GOSUB t
- a$="how about another game?":GOSUB t
- GOTO again
- END
-
- amywins:
- FOR delay=0 TO 6000:NEXT
- CLS
- LOCATE 10,35
- PRINT "AMY WON !!!"
- w=INT(RND*10)
- IF w=0 THEN a$="you must feel really stupid."
- IF w=1 THEN a$="i am only a bucket of bolts and i beet you!"
- IF w=2 THEN a$="i am such a geen yus and i am good looking too!"
- IF w=3 THEN a$="you are so stupid. try to play better next time!"
- IF w=4 THEN a$="ho ho ho hah hah hah. humans are so inntellectuallee infeeereeeor"
- IF w=5 THEN a$="you are a lou zee stupid player. and ugly too."
- IF w=6 THEN a$="you are so ugly that you make phyllis diller look good!"
- IF w=7 THEN a$="who told you that you could play this game? you are really bad!"
- IF w=8 THEN a$="this is too easy for me to win! is there a smarter player in the house?"
- IF w=9 THEN a$="cluck cluck cluck you are a super chicken. and a louzee player!"
- GOSUB t
- a$="how about another game?":GOSUB t
- GOTO again
- END
-
- catwins:
- FOR delay=0 TO 6000:NEXT
- CLS
- LOCATE 10,35
- PRINT "THE CAT WON !!!"
- a$="me yaaow":GOSUB t:a$="how about another game?"
- GOSUB t
- GOTO again
-
-
- again:
- LOCATE 14,17
- PRINT "Press 'Q' to quit, any other key to play again."
- zz$=UCASE$(INKEY$)
- IF zz$="Q" THEN WINDOW CLOSE 2:PALETTE 0,0,0,0.5:END
- IF zz$="" THEN GOTO again
- zz$="again"
- GOTO difficulty
-
-
- wincheck:
- IF e=1 AND f=1 AND g=1 THEN w=1:RETURN
- IF h=1 AND i=1 AND j=1 THEN w=1:RETURN
- IF k=1 AND l=1 AND m=1 THEN w=1:RETURN
- IF e=1 AND h=1 AND k=1 THEN w=1:RETURN
- IF f=1 AND i=1 AND l=1 THEN w=1:RETURN
- IF g=1 AND j=1 AND m=1 THEN w=1:RETURN
- IF e=1 AND i=1 AND m=1 THEN w=1:RETURN
- IF k=1 AND i=1 AND g=1 THEN w=1:RETURN
- IF e=2 AND f=2 AND g=2 THEN w=2:RETURN
- IF h=2 AND i=2 AND j=2 THEN w=2:RETURN
- IF k=2 AND l=2 AND m=2 THEN w=2:RETURN
- IF e=2 AND h=2 AND k=2 THEN w=2:RETURN
- IF f=2 AND i=2 AND l=2 THEN w=2:RETURN
- IF g=2 AND j=2 AND m=2 THEN w=2:RETURN
- IF e=2 AND i=2 AND m=2 THEN w=2:RETURN
- IF k=2 AND i=2 AND g=2 THEN w=2:RETURN
- IF e+f+g+h+i+j+k+l+m=13 THEN w=3:RETURN
- RETURN
-
- drawgrid:
- CLS
- LINE (260,20)-(267,155),1,bf
- LINE (365,20)-(372,155),1,bf
- LINE (160,65)-(470,68),1,bf
- LINE (160,110)-(470,113),1,bf
- RETURN
-
- yourplay:
- LOCATE 23,36
- PRINT "YOUR MOVE "
- GOSUB checkmouse
- GOSUB checkc
- IF c=0 GOTO yourplay
- GOSUB makex
- RETURN
-
- amysplay:
- LOCATE 23,36
- PRINT "AMY'S MOVE (She is thinking.)"
- FOR delay=0 TO 3000:NEXT
- d=0
- GOSUB amythinks
- GOSUB checkd
- GOSUB makeo
- RETURN
-
- checkd:
- IF d=1 THEN e=2
- IF d=2 THEN f=2
- IF d=3 THEN g=2
- IF d=4 THEN h=2
- IF d=5 THEN i=2
- IF d=6 THEN j=2
- IF d=7 THEN k=2
- IF d=8 THEN l=2
- IF d=9 THEN m=2
- RETURN
-
-
- makeo:
- IF d=1 THEN a=210:b=42
- IF d=2 THEN a=316:b=42
- IF d=3 THEN a=421:b=42
- IF d=4 THEN a=210:b=89
- IF d=5 THEN a=316:b=89
- IF d=6 THEN a=421:b=89
- IF d=7 THEN a=210:b=135
- IF d=8 THEN a=316:b=135
- IF d=9 THEN a=421:b=135
- CIRCLE (a,b),27,,,,0.55
- CIRCLE (a,b),17,,,,0.55
- PAINT STEP (20,0),3,1
- RETURN
-
- amythinks:
- IF e+f+g+h+i+j+k+l+m=1 THEN GOSUB firstmove:RETURN
- IF dif$="A" THEN GOTO easy
- IF e=2 AND g=2 AND f=0 THEN d=2:RETURN
- IF e=2 AND f=2 AND g=0 THEN d=3:RETURN
- IF f=2 AND g=2 AND e=0 THEN d=1:RETURN
- IF h=2 AND j=2 AND i=0 THEN d=5:RETURN
- IF h=2 AND i=2 AND j=0 THEN d=6:RETURN
- IF i=2 AND j=2 AND h=0 THEN d=4:RETURN
- IF k=2 AND m=2 AND l=0 THEN d=8:RETURN
- IF k=2 AND l=2 AND m=0 THEN d=9:RETURN
- IF l=2 AND m=2 AND k=0 THEN d=7:RETURN
- IF e=2 AND k=2 AND h=0 THEN d=4:RETURN
- IF e=2 AND h=2 AND k=0 THEN d=7:RETURN
- IF h=2 AND k=2 AND e=0 THEN d=1:RETURN
- IF f=2 AND l=2 AND i=0 THEN d=5:RETURN
- IF f=2 AND i=2 AND l=0 THEN d=8:RETURN
- IF i=2 AND l=2 AND f=0 THEN d=2:RETURN
- IF g=2 AND m=2 AND j=0 THEN d=6:RETURN
- IF g=2 AND j=2 AND m=0 THEN d=9:RETURN
- IF j=2 AND m=2 AND g=0 THEN d=3:RETURN
- IF e=2 AND m=2 AND i=0 THEN d=5:RETURN
- IF e=2 AND i=2 AND m=0 THEN d=9:RETURN
- IF i=2 AND m=2 AND e=0 THEN d=1:RETURN
- IF k=2 AND g=2 AND i=0 THEN d=5:RETURN
- IF k=2 AND i=2 AND g=0 THEN d=3:RETURN
- IF i=2 AND g=2 AND k=0 THEN d=7:RETURN
- IF e=1 AND g=1 AND f=0 THEN d=2:RETURN
- IF e=1 AND f=1 AND g=0 THEN d=3:RETURN
- IF f=1 AND g=1 AND e=0 THEN d=1:RETURN
- IF h=1 AND j=1 AND i=0 THEN d=5:RETURN
- IF h=1 AND i=1 AND j=0 THEN d=6:RETURN
- IF i=1 AND j=1 AND h=0 THEN d=4:RETURN
- IF k=1 AND m=1 AND l=0 THEN d=8:RETURN
- IF k=1 AND l=1 AND m=0 THEN d=9:RETURN
- IF l=1 AND m=1 AND k=0 THEN d=7:RETURN
- IF e=1 AND k=1 AND h=0 THEN d=4:RETURN
- IF e=1 AND h=1 AND k=0 THEN d=7:RETURN
- IF h=1 AND k=1 AND e=0 THEN d=1:RETURN
- IF f=1 AND l=1 AND i=0 THEN d=5:RETURN
- IF f=1 AND i=1 AND l=0 THEN d=8:RETURN
- IF i=1 AND l=1 AND f=0 THEN d=2:RETURN
- IF g=1 AND m=1 AND j=0 THEN d=6:RETURN
- IF g=1 AND j=1 AND m=0 THEN d=9:RETURN
- IF j=1 AND m=1 AND g=0 THEN d=3:RETURN
- IF e=1 AND m=1 AND i=0 THEN d=5:RETURN
- IF e=1 AND i=1 AND m=0 THEN d=9:RETURN
- IF i=1 AND m=1 AND e=0 THEN d=1:RETURN
- IF k=1 AND g=1 AND i=0 THEN d=5:RETURN
- IF k=1 AND i=1 AND g=0 THEN d=3:RETURN
- IF i=1 AND g=1 AND k=0 THEN d=7:RETURN
- IF dif$="B" THEN GOTO easy
- IF e+f+g+h+i+j+k+l+m=4 THEN GOSUB hard:RETURN
- easy:
- IF e=0 THEN d=1:RETURN
- IF f=0 THEN d=2:RETURN
- IF g=0 THEN d=3:RETURN
- IF h=0 THEN d=4:RETURN
- IF i=0 THEN d=5:RETURN
- IF j=0 THEN d=6:RETURN
- IF k=0 THEN d=7:RETURN
- IF l=0 THEN d=8:RETURN
- IF m=0 THEN d=9:RETURN
- RETURN
-
- firstmove:
- IF e=1 OR g=1 OR k=1 OR m=1 THEN d=5:RETURN
- IF i=1 THEN d=1:RETURN
- IF f=1 OR j=1 OR h=1 OR l=1 THEN d=5:RETURN
- RETURN
-
-
- hard:
- IF f=1 AND j=1 THEN d=3:RETURN
- IF j=1 AND l=1 THEN d=9:RETURN
- IF h=1 AND l=1 THEN d=7:RETURN
- IF h=1 AND f=1 THEN d=1:RETURN
- IF f=1 AND l=1 THEN d=1:RETURN
- IF h=1 AND j=1 THEN d=1:RETURN
- IF i=1 AND m=1 THEN d=3:RETURN
- IF g=1 AND h=1 THEN d=8:RETURN
- IF g=1 AND l=1 THEN d=4:RETURN
- IF e=1 AND j=1 THEN d=8:RETURN
- IF e=1 AND l=1 THEN d=6:RETURN
- IF f=1 AND m=1 THEN d=4:RETURN
- IF h=1 AND m=1 THEN d=2:RETURN
- IF f=1 AND k=1 THEN d=6:RETURN
- IF j=1 AND k=1 THEN d=2:RETURN
- IF e=1 AND m=1 THEN d=2:RETURN
- IF g=1 AND k=1 THEN d=2:RETURN
- RETURN
-
-
-
-
-
- checkmouse:
- c=0
- IF MOUSE(0)<>0 AND MOUSE(5)>160 AND MOUSE(5)<260 AND MOUSE(6)>20 AND MOUSE(6)<65 THEN c=1
- IF MOUSE(0)<>0 AND MOUSE(5)>267 AND MOUSE(5)<365 AND MOUSE(6)>20 AND MOUSE(6)<65 THEN c=2
- IF MOUSE(0)<>0 AND MOUSE(5)>372 AND MOUSE(5)<470 AND MOUSE(6)>20 AND MOUSE(6)<65 THEN c=3
- IF MOUSE(0)<>0 AND MOUSE(5)>160 AND MOUSE(5)<260 AND MOUSE(6)>68 AND MOUSE(6)<110 THEN c=4
- IF MOUSE(0)<>0 AND MOUSE(5)>267 AND MOUSE(5)<365 AND MOUSE(6)>68 AND MOUSE(6)<110 THEN c=5
- IF MOUSE(0)<>0 AND MOUSE(5)>372 AND MOUSE(5)<470 AND MOUSE(6)>68 AND MOUSE(6)<110 THEN c=6
- IF MOUSE(0)<>0 AND MOUSE(5)>160 AND MOUSE(5)<260 AND MOUSE(6)>113 AND MOUSE(6)<155 THEN c=7
- IF MOUSE(0)<>0 AND MOUSE(5)>267 AND MOUSE(5)<365 AND MOUSE(6)>113 AND MOUSE(6)<155 THEN c=8
- IF MOUSE(0)<>0 AND MOUSE(5)>372 AND MOUSE(5)<470 AND MOUSE(6)>113 AND MOUSE(6)<155 THEN c=9
- IF c=0 THEN GOTO checkmouse
- RETURN
-
- checkc:
- IF c=1 AND e=1 THEN c=0:RETURN
- IF c=1 AND e=2 THEN c=0:RETURN
- IF c=1 THEN a=180:b=27:e=1:RETURN
- IF c=2 AND f=1 THEN c=0:RETURN
- IF c=2 AND f=2 THEN c=0:RETURN
- IF c=2 THEN a=287:b=27:f=1:RETURN
- IF c=3 AND g=1 THEN c=0:RETURN
- IF c=3 AND g=2 THEN c=0:RETURN
- IF c=3 THEN a=392:b=27:g=1:RETURN
- IF c=4 AND h=1 THEN c=0:RETURN
- IF c=4 AND h=2 THEN c=0:RETURN
- IF c=4 THEN a=180:b=75:h=1:RETURN
- IF c=5 AND i=1 THEN c=0:RETURN
- IF c=5 AND i=2 THEN c=0:RETURN
- IF c=5 THEN a=287:b=75:i=1:RETURN
- IF c=6 AND j=1 THEN c=0:RETURN
- IF c=6 AND j=2 THEN c=0:RETURN
- IF c=6 THEN a=392:b=75:j=1:RETURN
- IF c=7 AND k=1 THEN c=0:RETURN
- IF c=7 AND k=2 THEN c=0:RETURN
- IF c=7 THEN a=180:b=120:k=1:RETURN
- IF c=8 AND l=1 THEN c=0:RETURN
- IF c=8 AND l=2 THEN c=0:RETURN
- IF c=8 THEN a=287:b=120:l=1:RETURN
- IF c=9 AND m=1 THEN c=0:RETURN
- IF c=9 AND m=2 THEN c=0:RETURN
- IF c=9 THEN a=392:b=120:m=1:RETURN
-
-
-
- makex:
- LINE (a,b)-(a+20,b+15)
- LINE (a+20,b+15)-(a,b+30)
- LINE (a,b+30)-(a+15,b+30)
- LINE (a+15,b+30)-(a+30,b+20)
- LINE (a+30,b+20)-(a+45,b+30)
- LINE (a+45,b+30)-(a+60,b+30)
- LINE (a+60,b+30)-(a+40,b+15)
- LINE (a+40,b+15)-(a+60,b)
- LINE (a+60,b)-(a+45,b)
- LINE (a+45,b)-(a+30,b+10)
- LINE (a+30,b+10)-(a+15,b)
- LINE (a+15,b)-(a,b)
- PAINT STEP (10,5),3,1
- RETURN
-
- t:
- IF talk$="N" THEN RETURN
- a$=TRANSLATE$(a$)
- SAY a$
- RETURN
-
- onemom:
- CLS
- LOCATE 10,32
- PRINT "One Moment Please."
- RETURN
-
-