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

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:
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 |
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 |

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