home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tiger Disk 25
/
Tiger_Disk_025_19xx_Tiger-Crew-Disk_de_Side_D.d64
/
b.fahrseq
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2023-02-26
|
7KB
|
282 lines
0 code=7*4096:vars=5*4096+6*256:gx=196
1 sys code,10:sys code,11,0,0,20,9
2 poke 53269,peek(53269)or12:poke 53252,gx:poke 53253,176:poke 56322,224
3 sys code,3:for i=1024+23*40 to 1024+25*40-1:poke i,96:next i
4 for i=1833 to 1848:poke i,96:next:sys code,6,5:poke 50170,56:poke 50171,60
5 poke 53276,peek(53276)or12
6 poke 53285,6:poke 53286,15
7 poke 53289,14:poke 53290,14
8 poke code+7,peek(code+7)or8
9 gosub 5000:mn=0:gosub 4000
10 s$(0)=" [176][195][195][195][195][195][195][195][174] [214][174]"
20 s$(1)=" [194] [214] [194] [176][195][195][195][174] [194]"
30 s$(2)="[176][189] [194][176][178][195][219][195][195][195][189] [194] [194]"
40 s$(3)="[194] [214][176][195][177][189][194] [194] [194] [194]"
50 s$(4)="[194] [194][194] [194] [173][174] [194] [194]"
60 s$(5)="[194] [171][179] [194] [194] [171][195][179]"
70 s$(6)="[194] [194][194] [194] [176][177][178][195][174] [194] [194]"
80 s$(7)="[194] [194][173][195][178][195][177][195][189] [194] [173][195][195][195][189] [194]"
90 s$(8)="[173][195][189] [214] [214] [214][189]"
95 sp=0:ga=0:dr=0:jf=0
96 dr$="160520052405280532053605001004100810121016102010"
97 km$="00000400080012001600200024002800320036000005040508051205"
100 x=11:y=8:l$="+y":tr$="":d=1:tt=0
110 xa=11:ya=8:dr=0:km=0:vr=0:va=0
140 gosub 1320
150 rem *** neue richtung holen ***
160 gosub 770
170 if d=0 then goto 680
180 j=peek(56320)
185 if (j and 1)=0 then k$="w"
188 if (j and 2)=0 then k$="z"
190 if (j and 4)=0 then k$="a"
192 if (j and 8)=0 then k$="s"
195 if j=127 then 180
200 tr$=tr$+k$:ta=1:tm=len(tr$)
210 gosub 720:m$=""
220 rem *** sackgasse ***
230 if a$<>"[214]" then 280
240 r$=right$(l$,1)
250 l$=left$(l$,1)+"1":z=val(l$)
260 if z>0 then m$="-"+r$
270 if z<0 then m$="+"+r$
280 if m$="+x" then k$="s"
290 if m$="-x" then k$="a"
300 if m$="+y" then k$="z"
310 if m$="-y" then k$="w"
320 rem *** bewegung ***
330 if k$="a" then gosub 440
340 if k$="s" then gosub 500
350 if k$="w" then gosub 560
360 if k$="z" then gosub 620
370 gosub 1100
380 if x=xa and y=ya and d=1 then d=0:mn=1:gosub 4000:goto 150
381 if x<>xa or y<>ya then 390
382 if vr/va<=9 then 385
383 mn=6:gosub 4000:mn=7:gosub 4000:goto 386
385 mn=4:gosub 4000:mn=5:gosub 4000
386 end:sys code,1,"l.abrech",8
390 rem *** bis naechste abzweigung ***
400 gosub 720
410 if a$="[171]" or a$="[179]" or a$="[177]" or a$="[178]" or a$="[219]" then 150
420 if a$="[194]" or a$="[195]" then 220
430 gosub 1200 : goto 220
440 rem *** nach links fahren
450 if a$="[176]" then 620
460 if a$="[173]" then 560
470 if a$="[195]" or a$="[219]" or a$="[174]" or a$="[189]" then m$="-x"
480 if a$="[179]" or a$="[177]" or a$="[178]" then m$="-x"
490 return
500 rem *** nach rechts fahren
510 if a$="[174]" then 620
520 if a$="[189]" then 560
530 if a$="[195]" or a$="[219]" or a$="[176]" or a$="[173]" then m$="+x"
540 if a$="[171]" or a$="[177]" or a$="[178]" then m$="+x"
550 return
560 rem *** nach oben fahren
570 if a$="[176]" then 500
580 if a$="[174]" then 440
590 if a$="[194]" or a$="[219]" or a$="[173]" or a$="[189]" then m$="-y"
600 if a$="[177]" or a$="[171]" or a$="[179]" then m$="-y"
610 return
620 rem *** nach unten fahren
630 if a$="[173]" then 500
640 if a$="[189]" then 440
650 if a$="[194]" or a$="[219]" or a$="[176]" or a$="[174]" then m$="+y"
660 if a$="[178]" or a$="[171]" or a$="[179]" then m$="+y"
670 return
680 if ta>tm then 710
690 k$=mid$(tr$,ta,1)
700 ta=ta+1:goto 210
710 poke 56322,255:end
720 :
730 rem *** hole aktuelles element
740 :
750 a$=mid$(s$(y),x+1,1)
760 return
770 :
780 rem *** setze auto
790 :
845 if d=0 then 920
850 for ht=0 to za-1
860 if h(0,ht)=x-1 and h(1,ht)=y then 895
870 if h(0,ht)=x+1 and h(1,ht)=y then 895
880 if h(0,ht)=x and h(1,ht)=y-1 then 895
890 if h(0,ht)=x and h(1,ht)=y+1 then 895
891 next ht
892 return
895 h(2,ht)=1:sys code,23,8,2,h(0,ht)*2,h(1,ht)*2,2,2
900 goto 891
920 for ht=0 to za-1
930 if h(0,ht)=x-1 and h(1,ht)=y then 985
940 if h(0,ht)=x+1 and h(1,ht)=y then 985
950 if h(0,ht)=x and h(1,ht)=y-1 then 985
960 if h(0,ht)=x and h(1,ht)=y+1 then 985
970 next ht
980 return
985 h(2,ht)=2:sys code,23,8,4,h(0,ht)*2,h(1,ht)*2,2,2
986 goto 970
1100 :
1110 rem *** auto bewegen
1120 :
1130 if m$="" then return
1140 l$=m$
1150 r$=right$(m$,1)
1160 z=val(left$(m$,1)+"1")
1170 if r$="x" then x=x+z
1180 if r$="y" then y=y+z
1185 gosub 2000
1190 goto 770
1200 :
1210 rem *** kurven
1220 :
1230 if a$="[176]"andm$="-x" then m$="+y"
1240 if a$="[176]"andm$="-y" then m$="+x"
1250 if a$="[174]"andm$="+x" then m$="+y"
1260 if a$="[174]"andm$="-y" then m$="-x"
1270 if a$="[173]"andm$="+y" then m$="+x"
1280 if a$="[173]"andm$="-x" then m$="-y"
1290 if a$="[189]"andm$="+x" then m$="-y"
1300 if a$="[189]"andm$="+y" then m$="-x"
1310 return
1320 :
1330 rem *** haeuser highlighten
1340 :
1345 dim h(3,17)
1350 za=0:ze=int(rnd(0)*16)+1
1360 restore
1370 for i=0 to 16
1380 read x1,y1
1390 if rnd(0)<.5 then 1430
1400 h(0,za)=x1:h(1,za)=y1:h(2,za)=0
1405 sys code,23,8,0,x1*2,y1*2,2,2
1410 za=za+1
1420 if za=ze then return
1430 next i
1440 goto 1360
1450 data 01,04
1451 data 01,06
1452 data 01,07
1453 data 02,02
1454 data 04,05
1455 data 04,06
1456 data 06,05
1457 data 07,01
1458 data 10,03
1459 data 11,04
1460 data 11,05
1461 data 18,07
1462 data 18,06
1463 data 18,04
1464 data 18,02
1465 data 18,01
1466 data 07,08
2000 :
2010 rem *** move ***
2020 :
2030 if m$="+x" then dx=8:dy=0:poke 50170,55
2040 if m$="-x" then dx=-8:dy=0:poke 50170,55
2050 if m$="+y" then dx=0:dy=8:poke 50170,56
2060 if m$="-y" then dx=0:dy=-8:poke 50170,56
2070 :
2080 for c=0 to 1
2082 if c=0 then gosub 5000
2085 gx=gx+dx
2090 poke 53252,gx and 255
2095 poke code+7,int(gx/255)*4+8
2100 poke 53253,peek(53253)+dy
2110 if d=1 then 2170
2120 gosub 3000
2130 vz=(int(sp/40)-5)*-1
2140 gosub 3000
2150 vz=vz-1
2160 if vz>=0 then 2140
2170 next c
2180 return
3000 :
3010 rem *** joystick ***
3020 :
3030 j=peek(56320)
3040 if (j and 16)<>0 then 3120
3050 dr=dr+1000
3060 if dr>=10000 then dr=10000
3070 if (j and 1)=0 and jf=0 then jf=1:goto 3140
3080 if (j and 1)=0 and jf=1 then jf=0:ga=ga+1:if ga>5 then ga=5
3090 if (j and 2)=0 and jf=0 then jf=2:goto 3140
3100 if (j and 2)=0 and jf=2 then jf=0:ga=ga-1:if ga<0 then ga=0
3110 goto 3140
3120 dr=dr-1000
3130 if dr<0 then dr=0
3140 sp=dr/210*ga:vr=vr+int(dr/666):va=va+1
3150 if sp=0 then 3030
3160 return
4000 :
4010 rem *** message ausgeben ***
4020 :
4030 sys code,3
4040 if mn=0 then gosub 4100
4041 if mn=1 then gosub 4200
4042 if mn=2 then gosub 4300
4043 if mn=3 then gosub 4400
4044 if mn=4 then gosub 4500
4045 if mn=5 then gosub 4600
4046 if mn=6 then gosub 4700
4047 if mn=7 then gosub 4800
4048 if mn=8 then gosub 4900
4050 sys code,6,5
4055 for w=0 to 400
4060 if (peek(56320)and16)<>0 then next
4070 for i=1024+23*40 to 1024+25*40-1:poke i,96:next i:sys code,6,5:return
4100 print "beliefern[160]sie[160]ihre[160]kunden![160]legen[160]sie"
4110 print "bitte[160]eine[160]entsprechende[160]strecke[160]fest..";
4120 return
4200 print "beliefern[160]sie[160]ihre[160]kunden![160]fahren[160]sie"
4210 print "m*glichst[160]energiesparend...";
4220 return
4300 print "sie[160]haben[160]leider[160]nicht[160]gen^gend"
4310 print "treibstoff,[160]um[160]diese[160]strecke[160]zu[160]fahren!";
4320 return
4400 print "die[160]bestellungen[160]sind[160]kalt[160]geworden!"
4410 print "sie[160]m^ssen[160]sie[160]wieder[160]mitnehmen!";
4420 return
4500 print "sehr[160]gut![160]sie[160]sind[160]besonders[160]energie-"
4510 print "sparend[160]gefahren!...weiter";
4520 return
4600 print "durch[160]ihren[160]fahrstil[160]schonen[160]sie[160]die"
4610 print "umwelt[160]und[160]sparen[160]gleichzeitig[160]geld!";
4620 return
4700 print "sie[160]sollten[160]ihre[160]fahrweise[160]^berdenken!"
4710 print "aufgrund[160]ihres...weiter";
4720 return
4800 print "aggressiven[160]fahrstils[160]belasten[160]sie[160]die"
4810 print "umwelt[160]durch[160]erh*hten[160]energieverbrauch!";
4820 return
4900 print "sie[160]sollten[160]ihre[160]route[160]so[160]w@hlen,[160]da\"
4910 print "sie[160]ihre[160]kunden[160]beliefern[160]k*nnen!";
4920 return
5000 :
5010 rem *** display refreshen ***
5020 :
5025 if sp<80 then tt=tt+1
5026 if tt<20 then 5030
5027 mn=3:gosub 4000:goto 1
5030 x$=mid$(km$,int(sp/19)*4+1,4)
5040 kx=val(left$(x$,2))
5050 ky=val(right$(x$,2))
5060 x$=mid$(dr$,int(dr/1000)*4+1,4)
5070 rx=val(left$(x$,2))
5080 ry=val(right$(x$,2))
5090 sys code,23,kx,ky+10,2,18,4,5
5100 sys code,23,rx,ry+10,27,18,4,5
5101 for i=1 to 15
5102 if int(dr/666)>=i then poke 56104+i,7:goto 5104
5103 poke 56104+i,0
5104 next i
5110 if ga=0 then poke 53254,33:poke 53255,203:return
5120 if ga=1 then poke 53254,20:poke 53255,196:return
5130 if ga=2 then poke 53254,20:poke 53255,212:return
5140 if ga=3 then poke 53254,31:poke 53255,196:return
5150 if ga=4 then poke 53254,31:poke 53255,212:return
5160 if ga=5 then poke 53254,42:poke 53255,196:return
5170 return