Ok .. Mostly doing my graphics code the hard way.
Determining the right pixel values via brute force.
Make an educated guess.. Write some code
Run it. Make some adjustments based on the display: Rinse, Repeat..... Numerous times.
Spent about 2 1/2 hrs on this little 20-30 line snippet. And I still need to finish the face.
...
P.S. Projects always get us off on Tangents. I'm working on a version of the VERA colorpallette.png file
with each block labeled with its Hexadecimal number. I'm using GIMP to do it.
Tonight I didn't even finish the first row. Got to $0A. When I finish it I'll post it in Programming or maybe
elsewhere. I also want to incorporate it onto the TOP of my X16 case when I do that project.
Code: Select all
10 CLS:PRINT
15 XLIMIT = 319:YLIMIT=239:PI = 3.14159265
20 PRINT "WELCOME TO HANGMAN"
30 PRINT " ONE PLAYER AGAINST THE COMPUTER ?
40 PRINT " OR HEAD TO HEAD ?"
50 SCREEN 128
60 GOSUB 5000 : REM BACKGROUND
65 GOSUB 7000 : REM GALLOWS
70 GOSUB 8000 : REM ROPE
80 GOSUB 9500 : REM THE GUYS HEAD
95 INPUT X$
100 SCREEN 0:END
2999 REM CIRCLE AND ELLIPSE SUBROUTINE
3000 Q = 1 / RA
3010 IF FILL = 1 THEN Q = .2/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 YS < 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 THEN 3140
3130 PSET AX, AY, CC
3140 IF ZX<0 OR ZX>XLIMIT OR AY < 0 OR AY > YLIMIT THEN 3160
3150 PSET ZX, AY, CC
3160 IF AX<0 OR AX > XLIMIT OR ZY<0 OR ZY > YLIMIT THEN 3180
3170 PSET AX, ZY, CC
3180 IF ZX<0 OR ZX > XLIMIT OR ZY<0 OR ZY > YLIMIT THEN 3300
3190 PSET ZX, ZY, CC
3200 GOTO 3300
3220 LINE CX,CY,AX,AY,CC
3225 LINE CX,CY,ZX,AY,CC
3230 LINE CX,CY,AX,ZY,CC
3235 LINE CX,CY,ZX,ZY,CC
3300 NEXT I
3310 RETURN
5000 RECT 0,0, XLIMIT, YLIMIT, 14 : REM THE SKY
5010 RECT 0, 180, XLIMIT, YLIMIT, 5 : REM THE GRASS
5020 FOR Y = 161 TO 179
5030 LINE 0, Y, 40, 179, 105
5040 NEXT Y
5050 FOR Y = 180 TO 150 STEP -1
5060 LINE 288,179, XLIMIT, Y, 105
5070 NEXT Y
5080 TC = 104:GOSUB 6000:REM DRAW GRASS STUFF
5090 TC = 106:GOSUB 6000
5100 TC = 133:GOSUB 6000
5110 RETURN
6000 FOR I = 1 TO 14:REM RANDOM GRASS
6010 X1 = INT(RND(1)*XLIMIT)
6020 Y1 = INT(RND(1)*YLIMIT) + 180:IF Y1 > YLIMIT THEN GOTO 6020
6030 X2 = INT(RND(1)*XLIMIT) + 15:IF X2 = X1 OR X2 > XLIMIT THEN GOTO 6030
6040 Y2 = INT(RND(1)*YLIMIT) + 180:IF Y2 = Y1 OR Y2 > YLIMIT THEN GOTO 6040
6045 IF X2 - X1 > 105 OR X1 - X2 > 105 THEN GOTO 6010
6046 IF Y2 - Y1 > 12 OR Y1 - Y2 > 12 THEN GOTO 6010
6050 LINE X1,Y1,X2,Y2, TC
6055 PSET X1, Y1 - 1, 133:PSET X1 , Y1-1, 104:PSET X2, Y1 - 3,107
6080 NEXT I
6090 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 = 16
9510 GOSUB 3000:RA = RA - 1:GOSUB 3000
9520 RA = RA - 1:FILL = 1:CC = 37: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
9560 LINE 67,76,67,84,16
9570 LINE 66,76,66,84,16
9580 LINE 67,87,67,90,16:LINE 66,87,66,90,16
9590 LINE 82,76,82,84,16
9600 LINE 83,76,83,84,16
9605 LINE 82,87,82,90,16:LINE 83,87,83,90,16
9610 RECT 68,76,81,84,37
9620 RECT 68,89,81,91,37
9630 RA = 20:XS = .8:FILL = 0
9640 CC = 16:CX = 74:CY = 63
9650 GOSUB 3000:RA = RA -1:GOSUB 3000
9660 RA = RA -1:GOSUB 3000
9665 CY = CY - 1:GOSUB 3000:CY = CY -1:GOSUB 3000:CY=CY + 2
9670 CC = 37:FILL=1:GOSUB 3000
9680 XS = 1:YS = XS
9690 CY = CY - 6:CX = CX - 6:RA=4:CC = 1:GOSUB 3000
9700 GOSUB 9950
9710 CX = CX + 12:GOSUB 3000
9720 GOSUB 9950
9900 RETURN
9950 PSET CX,CY, 16:PSET CX -1,CY,16
9955 PSET CX,CY -1,16:PSET CX - 1, CY -1 ,16
9960 RETURN