VC 20
Spiel

Q + Bert

Die VC 20-Version des bekannten Spielhallenhits. Nur besteht diese Variante aus drei verschiedenen Bildern.

Das Spielfeld im ersten Bild

Ziel des Spieles ist es, genau wie im bekannten Original, sämtliche Felder der Pyramide umzufärben. Das erreicht man, indem man einfach auf die noch unbeschränkten Felder springt. Damit es nicht zu einfach wird, ist noch eine Schlange mit im Spiel, mit der man nicht in Kontakt kommen darf. Wenn man es geschafft hat, alle Felder umzufärben, ohne die Schlange zu berühren, gelangt man in die nächste Pyramide. Nachdem auch die dritte Pyramide bewältigt ist, wechseln die Farben, und man fängt wieder mit der ersten Pyramide an, diesmal jedoch mit einem höheren Schwierigkeitsgrad.

Q + Bert wird mit folgenden Tasten gesteuert:

  • A — für einen Sprung nach links oben
  • F — für einen Sprung nach rechts oben
  • C — für einen Sprung nach links unten
  • Z — für einen Sprung nach rechts unten
  • Diese Steuerung ist etwas gewöhnungsbedürftig, eine Routine zur Abfrage des Joysticks hätte den Programmablauf jedoch stark verlangsamt. Außerdem können die Tasten in den Zeilen 320 bis 350 leicht geändert werden.

    Bei den ersten beiden Pyramiden muß keine besondere Strategie angewendet werden. Zu beachten ist lediglich, daß man sich nur an der Schlange vorbeibewegen kann, nachdem sie aufgeblinkt hat. Weiter ist es hilfreich zu wissen, daß die Schlange sich nur dann bewegt, wenn sowohl deren X-Position als auch deren Y-Position nicht mit der eigenen X-Position beziehungsweise Y-Position übereinstimmt. In der dritten Pyramide kann man sich nicht an der Schlange vorbeimogeln. Aus diesem Grund muß man zuerst alle Felder umfärben, auf die die Schlange nicht gelangen kann und sie dann auf die umgefärbten Felder locken. Danach können die restlichen Felder umgefärbt werden.

    Falls das Spiel so zu leicht erscheint, kann in Zeile 580 der Schwierigkeitsgrad erhöht werden, indem »S*2« durch »S*3« ersetzt wird.

    (Oliver Pabst/ev)
    Zeile Funktion
    10 Herabsetzen des für Basic verfügbaren Speicherplatzes
    25-45 Erstellung des neuen Zeichensatzes
    46-60 Festlegen der Variablen und Setzen der Farben
    75 Aufruf zum Drucken der Pyramide
    80-90 Initialisieren des Farb-RAMs (Modus für mehrfarbige Zeichen)
    300-350 Tastaturabfrage
    360-370 Tastaturpuffer entleeren / Schrittgeräusch
    410-415 Fehlende Teile der Pyramide an die alte Position POKEn
    420-421 Zeichen der Pyramide an der neuen Position ermitteln
    424-430 Q+BERT am Rand der Pyramide?
    440-445 Q+BERT POKEn
    500-505 Feld schon umgefärbt?
    520 Punktestand ausdrucken
    530-560 Gesamte Pyramide umgefärbt?
    580 Gegner bewegen? (RD kleiner 21-S*2)
    600-630 Neue Position des Gegners errechnen
    660-666 Fehlende Teile der Pyramide an die alte Position POKEn
    670-675 Zeichen der Pyramide an der neuen Position ermitteln
    676-677 Gegner am Rand der Pyramide?
    678-680 Gegner POKEn
    1000-1500 Erste Pyramide drucken
    2000-2050 Feld umfärben / Punktestand erhöhen)
    3000-3200 Zweite Pyramide drucken
    4000-4200 Dritte Pyramide POKEn
    5000-5310 Unterprogramme, die testen, ob die Bewegung des Gegners möglich ist, oder er von der Pyramide springt
    3000-8050 Unterprogramm zum Abziehen der Punkte
    10000-10200 Daten für die Umprogrammierung des Zeichensatzes
    20000-20060 Fall von der Pyramide
    20080-20100 Wackeln des Bildschirms
    20200-20260 Abfrage, ob noch ein Spiel und Ausgabe der erreichten Punkte
    30000-30020 Gegner fängt Q+BERT
    Der Programmaufbau von »Q+Bert«
    U Entscheidet, welche Pyramide gedruckt wird
    RD Entscheidet, ob Gegner bewegt wird
    S Farbe und Schwierigkeitsgrad
    X Eigene X-Position
    Y Eigene Y-Position
    D X-Position des Gegners
    DD Y-Position des Gegners
    PU Anzahl der umgefärbten Felder
    D1 Zeichen der Pyramide unter dem Gegner
    D2 Zeichen der Pyramide unter dem Gegner
    C1 Zeichen der Pyramide unter Q+Bert
    C2 Zeichen der Pyramide unter Q+Bert
    XX Eigene alte X-Position
    YY Eigene alte Y-Position
    S1 Zeichen Q+BERT (links oben)
    S2 Zeichen Q+BERT (rechts oben)
    AD Alte X-Position des Gegners
    SD Alte Y-Position desGegners
    O1 Zeichen Gegner (links oben)
    O2 Zeichen Gegner (rechts oben)
    C3 Zeichen der Pyramide unter Q+BERT (nur beim Fall)
    C4 Zeichen der Pyramide unter Q+BERT (nur beim Fall)
    F1 Hilfsfarbe
    F2 Farbe, in die umgefärbt wird
    Variablentabelle
    1 rem q-bert
    2 rem ======
    3 rem 64/2/85 --- vc 20
    4 rem
    5 rem
    10 poke52,24:poke56,24:clr
    20 poke649,1
    21 print"{clr}"
    25 fori=6400to6408:pokei,0:nexti
    30 fori=0to175
    40 reada:poke6152+i,a:nexti
    45 fori=376to456:poke6152+i,peek(32776+i):next:p=0
    46 poke36869,254:u=1:ti$="000000":rd=15:s=3
    50 poke36879,9
    52 f1(3)=2:f2(3)=12:f1(4)=6:f2(4)=15:f1(5)=8:f2(5)=14
    55 f1(6)=2:f2(6)=12
    60 poke36878,f1(s)*16or15
    65 ifp=0then72
    70 poke198,0:gosub8000
    72 print"{clr}":rd=15
    75 onugosub1000,3000,4000
    80 fori=38421to38905:pokei,11
    90 nexti
    210 pu=0:d1=8:d2=7
    220 ti$="000000":c1=8:c2=7
    230 poke198,0:ifu=3thenc1=1:c2=2
    240 a$="":goto310
    300 geta$:ifa$=""then500
    310 xx=x:yy=y
    320 ifa$="z"thenx=x+1:y=y+66
    330 ifa$="a"thenx=x-1:y=y-66
    340 ifa$="c"thenx=x-1:y=y+66
    350 ifa$="f"thenx=x+1:y=y-66
    360 poke198,0:poke36874,128
    370 poke36875,138:poke36874,0:poke36875,0
    410 poke7680+xx+yy,c1:poke7680+xx+yy+1,c2
    415 poke7680+xx+yy+22,3:poke7680+xx+yy+23,4
    420 c1=peek(7680+x+y)
    421 c2=peek(7680+x+y+1)
    424 s1=15:s2=16
    425 ifc1=1thens1=11
    426 ifc2=2thens2=12
    430 ifc1<>1andc1<>8then20000
    440 poke7680+x+y,s1:poke7680+x+y+1,s2
    445 poke7680+x+y+22,13:poke7680+x+y+23,14
    500 a=peek(38400+x+y)and7
    505 ifa=3thengosub2000
    520 print"{home}{wht}";int(p*25);"{home}"tab(17);right$(ti$,4)
    530 ifpu=21andu=1thenu=2:goto70
    550 ifu=2andpu=37thenu=3:goto70
    560 ifu=3andpu=28thenu=1:s=s+1:goto60
    570 rd=rd+1
    580 ifrd<21-s*2then800
    590 ad=d:sd=dd
    600 ifx>dandy>ddthend=d+1:dd=dd+66:gosub5000
    610 ifx>dandy<ddthend=d+1:dd=dd-66:gosub5100
    620 ifx<dandy<ddthend=d-1:dd=dd-66:gosub5200
    630 ifx<dandy>ddthend=d-1:dd=dd+66:gosub5300
    660 poke7680+ad+sd,d1:poke7680+ad+sd+1,d2
    666 poke7680+ad+sd+22,3:poke7680+ad+sd+23,4
    667 ifz=s1then30000
    670 d1=peek(7680+d+dd)
    675 d2=peek(7680+d+dd+1)
    676 o1=17:o2=18:ifd1=1theno1=21
    677 ifd2=2theno2=22
    678 poke7680+d+dd,o1:poke7680+d+dd+1,o2
    680 poke7680+d+dd+22,19:poke7680+d+dd+23,20
    690 rd=0
    800 goto300
    1000 x=10:y=9*22:d=10:dd=15*22
    1010 print:print
    1020 print"          ab"
    1030 print"          cd"
    1040 print"          ef"
    1050 print"         aghb"
    1060 print"         cdcd"
    1070 print"         efef"
    1080 print"        aghghb"
    1090 print"        cdcdcd"
    1100 print"        efefef"
    1110 print"       aghghghb"
    1120 print"       cdcdcdcd"
    1130 print"       efefefef"
    1140 print"      aghghghghb"
    1150 print"      cdcdcdcdcd"
    1160 print"      efefefefef"
    1170 print"     aghghghghghb"
    1180 print"     cdcdcdcdcdcd"
    1190 print"     efefefefefef"
    1200 print"     ijijijijijij"
    1500 return
    2000 poke36875,180
    2005 pu=pu+1:p=p+1
    2010 poke38400+x+y,f2(s)
    2020 poke38400+x+1+y,f2(s)
    2030 poke38400+x+y+22,f2(s)
    2040 poke38400+x+23+y,f2(s)
    2045 poke36875,0
    2050 return
    3000 x=10:y=6*22:d=10:dd=18*22
    3005 print:print
    3010 print"         abab
    3015 print"         cdcd
    3020 print"         efef
    3030 print"  abab  aghghb  abab
    3040 print"  cdcd  cdcdcd  cdcd
    3050 print"  efef  efefef  efef
    3060 print" aghghbaghghghbaghghb
    3070 print" cdcdcdcdcdcdcdcdcdcd
    3080 print" efefefefefefefefefef
    3090 print" ijihghghghghghghgjij
    3100 print"    cdcdcdcdcdcdcd
    3110 print"    efefefefefefef
    3120 print"    ihghghghghghgj
    3130 print"     cdcdcdcdcdcd
    3140 print"     efefefefefef
    3150 print"     ihghghghghgj
    3160 print"      cdcdcdcdcd
    3170 print"      efefefefef
    3180 print"      ijijijijij
    3200 return
    4000 print:print:x=10:y=12*22:d=10:dd=6*22
    4005 print"     abababababab
    4010 print"     cdcdcdcdcdcd
    4020 print"     efefefefefef
    4030 print"    aghghghghghghb
    4040 print"    cdcdcdcdcdcdcd
    4050 print"    efefefefefefef
    4060 print"   agjijijijijijihb
    4070 print"   cd            cd
    4080 print"   ef            ef
    4090 print"   ihbabababababagj
    4100 print"    cdcdcdcdcdcdcd
    4110 print"    efefefefefefef
    4120 print"    ihghghghghghgj
    4130 print"     cdcdcdcdcdcd
    4140 print"     efefefefefef
    4150 print"     ijijijijijij
    4200 return
    5000 z=peek(7680+d+dd):ifz>8andz<>s1thend=d-1:dd=dd-66
    5010 return
    5100 z=peek(7680+d+dd):ifz>8andz<>s1thend=d-1:dd=dd+66
    5110 return
    5200 z=peek(7680+d+dd):ifz>8andz<>s1thend=d+1:dd=dd+66
    5210 return
    5300 z=peek(7680+d+dd):ifz>8andz<>s1thend=d+1:dd=dd-66
    5310 return
    8000 print"{wht}{home}       "
    8005 fori=1to2*val(ti$)
    8010 p=p-0.2
    8020 print"{home}";int(p*25)
    8030 nexti
    8040 fori=1to1800:next
    8050 return
    10000 data2,2,10,10,42,42,170,170
    10010 data128,128,160,160,168,168,170,170
    10020 data170,170,106,106,90,90,86,86
    10030 data170,170,171,171,175,175,191,191
    10040 data85,85,85,85,85,85,85,85
    10050 data255,255,255,255,255,255,255,255
    10060 data149,149,165,165,169,169,170,170
    10070 data254,254,250,250,234,234,170,170
    10080 data85,85,21,21,5,5,1,1
    10090 data255,255,252,252,240,240,192,192
    10100 data2,2,15,15,47,44,188,191
    10110 data128,128,224,224,248,248,254,254
    10120 data175,175,111,111,90,90,86,86
    10130 data238,234,235,251,175,175,191,191
    10135 data254,254,251,251,239,236,188,191
    10140 data149,149,229,229,233,233,254,254
    10150 data254,254,240,240,196,192,160,168
    10160 data149,149,165,165,169,41,42,42
    10170 data168,170,106,96,82,80,86,86
    10180 data10,10,11,43,175,47,191,191
    10190 data2,2,0,0,4,0,160,168
    10200 data128,128,160,160,168,40,42,42
    20000 fori=1to21-y/22
    20010 c1=peek(7680+x+y+i*22):c2=peek(7680+x+y+1+i*22)
    20015 c3=peek(7680+x+y+22+i*22):c4=peek(7680+x+y+23+i*22)
    20020 poke7680+x+y+i*22,11
    20021 poke7680+x+y+1+i*22,12
    20022 poke7680+x+y+22+i*22,13
    20023 poke7680+x+y+23+i*22,14
    20040 poke7680+x+y+i*22,c1
    20041 poke7680+x+y+1+i*22,c2
    20042 poke7680+x+y+22+i*22,c3
    20043 poke7680+x+y+23+i*22,c4
    20060 nexti
    20080 fori=1to32
    20090 poke36865,38:poke36865,39:poke36865,40:poke36865,39
    20100 next
    20200 poke36879,27:print"{clr}{blu}"
    20210 poke36869,240
    20215 print"{down}{down}{down}{down}{down}{down}{down}{down} ihre punkte:";int(p*25)
    20220 print"{down}{down} noch ein spiel (j/n)"
    20230 geta$:ifa$=""then20230
    20240 ifa$="n"thenend
    20250 ifa$="j"thenclr:goto46
    20260 goto20230
    30000 poke7680+d+dd,o1:poke7680+d+dd+1,o2
    30010 poke7680+d+dd+22,19:poke7680+d+dd+23,20
    30020 goto20000
    Listing »Q+Bert«
    PDF Diesen Artikel als PDF herunterladen
    Mastodon Diesen Artikel auf Mastodon teilen
    ← Vorheriger ArtikelNächster Artikel →