Code: Select all
10 CLS:PRINT
15 XLIMIT = 319:YLIMIT=239
20 PI = 3.1416
25 Q1 = 1:Q2 = 1:Q3 = 1:Q4 = 1
35 PRINT "WELCOME TO HANGMAN"
40 PRINT " ONE PLAYER AGAINST THE COMPUTER ?
45 PRINT " OR HEAD TO HEAD ?"
55 SCREEN 128
60 GOSUB 5000 : REM BACKGROUND
65 GOSUB 7000 : REM GALLOWS
70 GOSUB 8000 : REM ROPE
80 GOSUB 9500 : REM THE GUYS HEAD
85 GOSUB 10000 : REM THE TORSO
95 INPUT X$
100 SCREEN 0:END
2999 REM CIRCLE AND ELLIPSE SUBROUTINE
3000 Q = 1 / RA
3010 IF FILL = 1 THEN Q = .3/RA
3030 FOR I = 0 TO PI / 2 STEP Q
3040 DY = SIN(I) * RA
3050 IF YS > 0 AND YS < 1 THEN DY = DY*YS
3060 DX = COS(I) * RA
3070 IF XS > 0 AND XS < 1 THEN DX = DX*XS
3080 ZX = INT(CX - DX)
3090 ZY = INT(CY - DY)
3100 AX = INT(CX + DX)
3110 AY = INT(CY + DY)
3115 IF FILL = 1 THEN 3220
3120 IF AX<0 OR AX > XLIMIT OR AY<0 OR AY > YLIMIT OR Q4 = 0 THEN 3140
3130 PSET AX, AY, CC
3140 IF ZX<0 OR ZX>XLIMIT OR AY < 0 OR AY > YLIMIT OR Q3 = 0 THEN 3160
3150 PSET ZX, AY, CC
3160 IF AX<0 OR AX > XLIMIT OR ZY<0 OR ZY > YLIMIT OR Q2 = 0 THEN 3180
3170 PSET AX, ZY, CC
3180 IF ZX<0 OR ZX > XLIMIT OR ZY<0 OR ZY > YLIMIT OR Q1 = 0 THEN 3300
3190 PSET ZX, ZY, CC
3200 GOTO 3300
3220 IF Q4<> 0 THEN LINE CX,CY,AX,AY,CC
3225 IF Q3<> 0 THEN LINE CX,CY,ZX,AY,CC
3230 IF Q2<> 0 THEN LINE CX,CY,AX,ZY,CC
3235 IF Q1<> 0 THEN LINE CX,CY,ZX,ZY,CC
3300 NEXT I
3310 RETURN
5000 RECT 0,0, XLIMIT, YLIMIT, 14 : REM THE SKY
5010 CX = 5:CY=4:CC = 16:FILL = 0:XS=0:YS=0:RA = 33
5020 GOSUB 3000:RA=RA-1:GOSUB 3000
5030 CC = 7:
5040 FOR RA = 31 TO 1 STEP -1:GOSUB 3000:NEXT RA
5050 GOSUB 6500:REM DRAW A CLOUD
5110 RECT 0, 180, XLIMIT, YLIMIT, 5 : REM THE GRASS
5120 FOR Y = 161 TO 179
5130 LINE 0, Y, 40, 179, 105
5140 NEXT Y
5150 FOR Y = 180 TO 150 STEP -1
5160 LINE 288,179, XLIMIT, Y, 105
5170 NEXT Y
5180 TC = 104:GOSUB 6000:REM DRAW GRASS STUFF
5190 TC = 106:GOSUB 6000
5200 TC = 133:GOSUB 6000
5210 RETURN
6000 FOR I = 1 TO 14:REM RANDOM GRASS
6110 X1 = INT(RND(1)*XLIMIT)
6120 Y1 = INT(RND(1)*YLIMIT) + 180:IF Y1 > YLIMIT THEN GOTO 6120
6130 X2 = INT(RND(1)*XLIMIT) + 15:IF X2 = X1 OR X2 > XLIMIT THEN GOTO 6130
6140 Y2 = INT(RND(1)*YLIMIT) + 180:IF Y2 = Y1 OR Y2 > YLIMIT THEN GOTO 6140
6145 IF X2 - X1 > 105 OR X1 - X2 > 105 THEN GOTO 6110
6146 IF Y2 - Y1 > 12 OR Y1 - Y2 > 12 THEN GOTO 6110
6150 LINE X1,Y1,X2,Y2, TC
6155 PSET X1, Y1 - 1, 133:PSET X1 , Y1-1, 104:PSET X2, Y1 - 3,107
6180 NEXT I
6190 RETURN
6500 RETURN:B1 = INT(RND(1)* XLIMIT/2)+1
6510 B2 = INT(RND(1)* XLIMIT/3)+1
6520 B3 = INT(RND(1)* YLIMIT/3)+1
6530 B4 = INT(RND(1)* YLIMIT/4)+1
6540 FOR I = 1 TO 300
6550 X1 = INT(RND(1)*B1)+1
6560 X2 = INT(RND(1)*B2)+1
6570 Y1 = INT(RND(1)*B3)+1
6580 Y2 = INT(RND(1)*B4)+1
6590 C = INT(RND(1)*6)+1
6600 IF C = 1 THEN
6600 IF C = 2 THEN C = 65
6610 IF C = 3 THEN C = 64
6620 IF C = 4 THEN C = 28
6630 IF C = 5 THEN C = 27
6640 IF C = 6 THEN C = 25
6650 RECT X1,Y1,X2,Y2, C
6660 NEXT I
6670 RETURN
7000 REM THE GALLOWS
7010 FRAME 189,195,285,208,16
7020 FRAME 190,196,284,209,16
7030 FRAME 275,21,285,207,16
7040 FRAME 276,22,284,205,16
7050 FRAME 67,20,285,30,16
7060 FRAME 68,21,284,29,16
7070 RECT 71,30,79,33,16
7080 RECT 191,197,283,207,83
7090 RECT 277,23,283,206,83
7100 RECT 69,22,283,28,83
7150 RETURN
8000 REM THE ROPE
8010 LINE 73,33,73,53,16
8020 LINE 77,33,77,53,16
8030 RECT 74,34,76,53,87
8040 FOR Y = 38 TO 53 STEP 3
8050 LINE 73, Y, 77, Y - 3, 16
8060 NEXT Y
8070 FRAME 71,53,80, 68, 16
8080 RECT 72,54,79,68,87
8090 FOR Y = 56 TO 68 STEP 4
8100 LINE 72,Y,79, Y-4, 16
8110 NEXT Y
8120 REM THE NOOSE
8130 RA = 24
8140 YS = .38
8150 CX = 75:CY = 79:CC = 16
8160 GOSUB 3000:RA=25:GOSUB 3000
8165 RA = 24:GOSUB 3000
8170 RA = 19:GOSUB 3000
8175 RA = 18:GOSUB 3000
8180 CC = 87
8190 FOR X = 21 TO 23 STEP .7
8200 RA = X:GOSUB 3000
8210 NEXT X
9000 YS=0:RETURN
9499 REM THE FACE
9500 CX = 59:CY = 60:RA = 6:XS = .4:CC = $10
9510 GOSUB 3000:RA = RA - 1:GOSUB 3000
9520 RA = RA - 1:FILL = 1:CC = $25:GOSUB 3000
9530 CX = 89:RA = 6:CC=16
9540 GOSUB 3000:RA = RA - 1:GOSUB 3000
9550 RA = RA - 1:FILL = 1:CC = 37:GOSUB 3000
9555 REM DRAW HIS NECK
9560 LINE 67,76,67,84,$10
9570 LINE 66,76,66,84,$10
9580 LINE 67,87,67,90,$10:LINE 66,87,66,90,$10
9590 LINE 82,76,82,84,$10
9600 LINE 83,76,83,84,$10
9605 LINE 82,87,82,90,$10:LINE 83,87,83,90,$10
9610 RECT 68,76,81,84,$25
9620 RECT 68,89,81,90,$25
9621 REM END NECK
9630 RA = 20:XS = .8:FILL = 0
9640 CC = $10:CX = 74:CY = 63
9650 GOSUB 3000:RA = RA -1:GOSUB 3000
9660 RA = RA -1:GOSUB 3000:RA = RA -1:GOSUB 3000
9665 CY = CY - 1:GOSUB 3000:CY = CY -1:GOSUB 3000:CY=CY + 2
9670 RA = RA :CC = 37:FILL=1:CY = CY + 1:GOSUB 3000
9680 XS = 1:YS = XS
9690 CY = CY - 6:CX = CX - 6:RA=4:CC = $01:GOSUB 3000
9700 GOSUB 9950:REM THE PUPILS OF HIS EYES
9710 CX = CX + 12:GOSUB 3000
9720 GOSUB 9950:CX = 74:CY = 63
9730 LINE CX-1,CY, CX - 2, CY + 6, $10
9740 LINE CX+1,CY, CX + 2, CY + 6, $10
9750 LINE CX,CY,CX -1, CY + 6, $23
9760 LINE CX,CY,CX + 1, CY + 6, $23
9770 LINE CX,CY+3,CX,CY+6,$22
9780 Q3=0:Q4=0:CC=$10:CY = CY + 13:YS=.35:RA=6:FILL=0
9790 GOSUB 3000
9800 CY = CY + 1:CC=$31:GOSUB 3000
9805 CY = CY + 1:CC=$10:GOSUB 3000
9806 Q3=1:Q4=1:YS=0: REM REMEMBER TO TURN CIRCLE FULLY ON !!!
9810 RETURN
9949 REM THE PUPILS
9950 PSET CX,CY, 16:PSET CX -1,CY,16
9955 PSET CX,CY -1,16:PSET CX - 1, CY -1 ,16
9960 RETURN
9999 REM THE TORSO
10000 LINE 82,90,105,93, $10
10010 LINE 83,91,105,94, $10
10020 LINE 68,90,48,93, $10
10030 LINE 69,91,48,94, $10
10040 LINE 67,90,74,105, $10
10050 LINE 83,90,74,105,$10
10059 REM THIS FOR LOOP FILLS IN THE NECKLINE
10060 FOR X = 81 TO 68 STEP -1
10070 LINE 75,103,X, 90, $25
10080 NEXT X
10090 LINE 74,105,71,109,$10
10100 LINE 71,109,71,139,$10
10110 LINE 71,139,92,144,$10
10120 LINE 92,144,92,107,$10
10300 CC = 16:RA = 1
10310 CX = 74:FILL = 1
10305 REM SHIRT BUTTONS
10320 FOR CY = 106 TO 142 STEP 8
10330 GOSUB 3000
10340 NEXT CY
10350 Q1 = 0:Q3 = 0:Q4 = 0:FILL = 0
10360 XSQUISH = .52
10365 RA = 16
10370 CY = 123:CX = 93:GOSUB 3000:CX=92:GOSUB 3000
10380 CX = 106:CY = 110:GOSUB 3000:RA=15:GOSUB 3000
10500 RETURN