-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMONDAT.BAS
178 lines (178 loc) · 6.01 KB
/
MONDAT.BAS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
10 ' MONITOR DE DATOS GRAFICOS PARA SCREEN 2
20 ' INICIO
30 CLEAR 100,40999!
35 'gosub 9000
40 NT%=0:ND%=3:XC%=1:YC%=1:YD%=0:DI!=50000!:DH!=DI!:DA!=DI!:DU!=DI!-1:HA%=1:HM%=1
50 DIM H(255)
60 GOSUB 1000:' PANTALLA
70 GOSUB 1200:' REPRESENTAR DATOS
80 SPRITE$(0)=CHR$(255)+STRING$(7,CHR$(0)):PUT SPRITE 0,(XC%*24+40,YC%*16+7),6,0
90 ' MENU
100 ON KEY GOSUB 1900,2000,1500,3000,,3200,3300
110 GOSUB 1450
120 A%=STICK(0)
130 IF STRIG(0)<>0 THEN GOSUB 1700:' INPUT
140 IF A%=0 THEN 120
150 IF A%=3 AND XC%<ND% THEN XC%=XC%+1
160 IF A%=7 AND XC%>1 THEN XC%=XC%-1
170 IF A%=5 AND YC%<10 AND YD%*10+YC%<H(HA%) THEN YC%=YC%+1
180 IF A%=1 AND YC%>1 THEN YC%=YC%-1
190 DA!=DH!+YD%*10*ND%+(YC%-1)*ND%+XC%-1
200 LOCATE 13,23:PRINT USING"#####";DA!;
210 PUT SPRITE 0,(XC%*24+40,YC%*16+7)
215 IF STICK(0)<>0 THEN 215
220 GOTO 120
1000 ' PANTALLA
1010 KEY OFF:COLOR 14,0,0:SCREEN 1,1:CLS
1020 RESTORE
1030 FOR F=1 TO 10
1040 READ A$
1050 LOCATE 20,F*2:PRINT A$
1060 NEXT F
1070 DATA "F1=Í PAG","F2=Î PAG","F3=A¥ADIR","F4=BORRAR","F5=VER","F6=NUEVO","F7=HAB.","F8=DISCO","F9= ","F10= "
1080 LOCATE 0,0:PRINT " N. FIG X Y COL"
1090 LOCATE 0,23:PRINT USING" DI=#####";DI!;:PRINT USING" DA=#####";DA!;:PRINT USING" DU=#####";DU!;
1095 LOCATE 18,0:PRINT USING"V HAB=###";HA%
1100 LOCATE 0,1:PRINT"XWWWRWWWRWWRWWRWWWUWWWWWWWWWW"
1110 LOCATE 0,21:PRINT"ZWWWQWWWQWWQWWQWWWQWWWWWWWWWW"
1120 FOR F%=1 TO 10:LOCATE 0,F%*2:PRINT"V V V V V V":NEXT F%
1130 FOR F%=1 TO 9:LOCATE 0,F%*2+1:PRINT"TWWWUWWWUWWUWWUWWWS":NEXT F%
1140 RETURN
1200 ' REPRESENTAR DATOS
1210 GOSUB 1400:' KEYS OFF
1220 A!=DH!+YD%*10*ND%
1230 FOR F%=1 TO 10
1235 LOCATE 1,F%*2:PRINT USING "###";F%+(YD%*10)
1240 IF (A!-DH!)>=(H(HA%)*ND%) THEN LOCATE 5,F%*2:PRINT"FIN":RETURN
1250 LOCATE 5,F%*2:PRINT USING "###";PEEK(A!)
1260 LOCATE 9,F%*2:PRINT USING "##";PEEK(A!+1)
1270 LOCATE 12,F%*2:PRINT USING "##";PEEK(A!+2)
1280 IF ND%=4 THEN LOCATE 15,F%*2:PRINT USING "##";PEEK(A!+3)
1290 A!=A!+ND%
1300 NEXT F%
1310 RETURN
1400 ' KEYS OFF
1410 FOR F%=1 TO 10:KEY(F%) OFF:NEXT:RETURN
1450 ' KEYS ON
1460 FOR F%=1 TO 10:KEY(F%) ON:NEXT F%:RETURN
1500 ' A¥ADIR
1505 GOSUB 1400:' KEYS OFF
1510 H(HA%)=H(HA%)+1
1520 DA!=DI!+YD%*10*ND%+(YC%-1)*ND%+XC%-1
1530 IF HA%<HM% THEN GOSUB 4000:' ABRIR HUECO
1540 XC%=1:YC%=H(HA%)-INT((H(HA%)-1)/10)*10
1550 IF YC%=1 THEN FOR F%=1 TO 10:LOCATE 0,F%*2:PRINT"V V V V V V":NEXT F%:IF H(HA%)>1 THEN YD%=YD%+1
1560 LOCATE 1,YC%*2:PRINT USING "###";H(HA%)
1570 FOR XC%=1 TO ND%
1575 DA!=DH!+YD%*10*ND%+(YC%-1)*ND%+XC%-1
1576 LOCATE 13,23:PRINT USING"#####";DA!;
1580 GOSUB 1700:' INPUT
1590 NEXT XC%
1600 IF YC%<>10 THEN LOCATE 5,(YC%+1)*2:PRINT"FIN"
1605 DU!=DU!+3:XC%=1:DA!=DA!-2
1606 LOCATE 13,23:PRINT USING"#####";DA!;
1607 LOCATE 22,23:PRINT USING"#####";DU!;
1610 FOR F=1 TO 10
1615 PUT SPRITE 0,(XC%*24+40,YC%*16+7),6,0
1620 GOSUB 1450:RETURN
1700 ' INPUT
1705 PUT SPRITE 0,(XC%*24+40,YC%*16+7),3
1710 NA%=PEEK(DA!)
1720 IF XC%=1 THEN NM%=255
1730 IF XC%=2 THEN NM%=30
1740 IF XC%=3 THEN NM%=22
1750 IF XC%=4 THEN NM%=255
1755 GOTO 1790
1760 A%=STICK(0)
1770 IF INKEY$=CHR$(13) THEN POKE DA!,NA%:PUT SPRITE 0,STEP(0,0),6:RETURN
1780 NA%=NA%+(A%=7)-(A%=3)
1790 IF NA%<0 THEN NA%=0
1800 IF NA%>NM% THEN NA%=NM%
1810 ON XC% GOTO 1820,1830,1830,1820
1820 LOCATE XC%*4+1,YC%*2:PRINT USING "###";NA%:GOTO 1840
1830 LOCATE XC%*3+3,YC%*2:PRINT USING "##";NA%
1840 FOR F%=1 TO 40:NEXT
1850 GOTO 1760
1900 ' Í 10 +
1910 GOSUB 1400:' KEYS OFF
1915 FOR F%=1 TO 10:LOCATE 0,F%*2:PRINT"V V V V V V":NEXT F%
1920 IF (YD%+1)*10>H(HA%) THEN BEEP:GOSUB 1450:RETURN
1930 YD%=YD%+1
1940 GOSUB 1200:' REPRESENTAR DATOS
1950 XC%=1:YC%=1
1960 PUT SPRITE 0,(XC%*24+40,YC%*16+7)
1970 DA!=DH!+YD%*10*ND%+(YC%-1)*ND%+XC%-1
1980 LOCATE 13,23:PRINT USING"#####";DA!;
1990 GOSUB 1450:RETURN
2000 ' Î 10 -
2010 GOSUB 1400:' KEYS OFF
2020 IF YD%=0 THEN BEEP:GOSUB 1450:RETURN
2030 YD%=YD%-1
2040 GOSUB 1200:' REPRESENTAR DATOS
2050 XC%=1:YC%=1
2060 PUT SPRITE 0,(XC%*24+40,YC%*16+7)
2070 DA!=DH!+YD%*10*ND%+(YC%-1)*ND%+XC%-1
2080 LOCATE 13,23:PRINT USING"#####";DA!;
2090 GOSUB 1450:RETURN
3000 ' BORRAR
3010 GOSUB 1400
3020 IF H(HA%)<1 THEN BEEP:GOTO 3100
3030 H(HA%)=H(HA%)-1
3040 DA!=DH!+YD%*10*ND%+(YC%-1)*ND%
3050 FOR F!=DA! TO DU!
3060 POKE F!,PEEK(F!+3)
3061 POKE F!+1,PEEK(F!+4)
3062 POKE F!+2,PEEK(F!+5)
3070 NEXT F!
3080 DU!=DU!-3:IF YC%>1 THEN YC%=YC%-1 ELSE IF YD%>0 THEN YD%=YD%-1:YC%=10
3081 LOCATE 22,23:PRINT USING"#####";DU!;
3082 PUT SPRITE 0,(XC%*24+40,YC%*16+7)
3085 FOR F%=1 TO 10:LOCATE 0,F%*2:PRINT"V V V V V V":NEXT F%
3090 GOSUB 1200
3100 GOSUB 1450:RETURN
3200 ' NUEVO
3210 GOSUB 1400
3220 LOCATE 3,22:PRINT"INICIAR FICHERO (S/N) ?"
3230 POKE&HFCAB,1:A$=INKEY$:IF A$="" OR (A$<>"S" AND A$<>"N") THEN 3230
3240 IF A$="S" THEN RUN
3250 GOSUB 1450
3260 LOCATE 3,22:PRINT" ":RETURN
3300 ' HABITACION
3310 GOSUB 1400
3320 LOCATE 3,22:PRINT"HABITACION ?";HA%
3330 NA%=HA%
3340 A%=STICK(0)
3344 IF STRIG(0)<>0 THEN 3390
3345 IF A%=0 THEN 3340
3350 NA%=NA%-(A%=3)+(A%=7)
3360 IF NA%<1 THEN NA%=1 ELSE IF NA%>HM%+1 THEN NA%=HM%+1
3370 LOCATE 15,22:PRINT NA%
3375 IF STICK(0)<>0 THEN 3375
3380 GOTO 3340
3390 HA%=NA%:IF HA%>HM% THEN HM%=NA%
3395 LOCATE 18,0:PRINT USING"V HAB=###";HA%
3400 DH!=0
3410 FOR F%=0 TO HA%-1
3420 DH!=DH!+H(F%)*ND%
3430 NEXT F%
3440 DH!=DI!+DH!:DA!=DH!
3441 XC%=1:YC%=1:YD%=0:HA%=NA%
3442 FOR F%=1 TO 10:LOCATE 0,F%*2:PRINT"V V V V V V":NEXT F%
3443 GOSUB 1200
3444 LOCATE 13,23:PRINT USING"#####";DA!;
3445 LOCATE 3,22:PRINT" "
3446 PUT SPRITE 0,(XC%*24+40,YC%*16+7),6,0
3449 IF STRIG(0)<>0 THEN 3449
3450 GOSUB 1450:RETURN
4000 ' ABRIR HUECO
4010 FOR F!=DU! TO DA! STEP-1
4020 POKE F!+ND%,PEEK(F!)
4021 POKE F!+ND%+1,PEEK(F!+1)
4022 POKE F!+ND%+2,PEEK(F!+2)
4023 IF ND%=4 THEN POKE F!+ND%+3,PEEK(F!+3)
4030 NEXT F!
4040 RETURN
9000 ' CARGA DE DISCO
9010 BLOAD"DIBFIG.BIN"
9100 RETURN