home *** CD-ROM | disk | FTP | other *** search
- REM Der Zahlenwurm Teil II - Erweiterungen
- REM Spiel zum Kennenlernen des Zahlenraumes 1 - 9
- REM (C) 1988 B. Freier & PASCAL Int.
-
- SCREEN 1
- COLOR 15,0
- REM Spielerklaerung
- CLS
- LOCATE 2,6:PRINT "Z A H L E N S C H L A N G E"
- LOCATE 6,1
- PRINT"Bei diesem Spiel geht es darum, eine"
- LOCATE 7,1
- PRINT"Schlange durch einen Raum zu fuehren,"
- LOCATE 8,1
- PRINT"in dem die Zahlen von 1 bis 9 stehen."
- LOCATE 9,1
- PRINT"Die Schlange muss die Zahlen genau in"
- LOCATE 10,1
- PRINT"der richtigen Reihenfolge fressen,"
- LOCATE 11,1
- PRINT"wobei mit jeder Ziffer die Laenge der"
- LOCATE 12,1:PRINT"Schlange zunimmt."
- LOCATE 13,1
- PRINT"Die Aussenwand sowie die Schlange"
- LOCATE 14,1
- PRINT"selbst duerfen nicht angeknabbert wer-";
- LOCATE 15,1
- PRINT"den. Ein Bremsen ist ebenfalls nicht"
- LOCATE 16,1
- PRINT"moeglich, da sie sich dadurch selbst"
- LOCATE 17,1:PRINT"verschluckt."
- LOCATE 19,3:PRINT"Steuerung mit den Pfeiltasten"
- LOCATE 20,3:PRINT"oder mit dem Joystick moeglich."
- LOCATE 21,3:PRINT"Start mit einer dieser Tasten."
- LOCATE 24,6:PRINT"Bitte eine Taste druecken !";
-
- WHILE NOT INSTAT:WEND
-
- REM Levelabfrage 'Benutzer bestimmt Tempo
-
- CLS
- LOCATE 4,3
- PRINT "Welche Schwierigkeitsstufe: (1..5)";
- LOCATE 6,9: PRINT"1 ganz langsam"
- LOCATE 8,9: PRINT"2 langsam"
- LOCATE 10,9: PRINT"3 mittel"
- LOCATE 12,9: PRINT"4 schnell"
- LOCATE 14,9: PRINT"5 sehr schnell"
- LOCATE 18,3
- PRINT"Bitte die gewaehlte Ziffer druecken !";
-
-
-
- leveleingabe: 'Auswertung der Eingaben
-
- eingabe$=INKEY$
- IF eingabe$="" THEN GOTO leveleingabe
- IF VAL(eingabe$)<1 OR VAL(eingabe$)>5 THEN_
- GOTO leveleingabe
- stufe%=VAL(eingabe$)
- level! = 0.1 / stufe% + 0.1
- 'Geschwindigkeit der Stufen
-
-
- start:
- REM BITTE AUS DEM LETZTEN HEFT ÜBERNEHMEN !!
-
- DIM posi%(1:300,1:2) 'Array für Schlangenteile
-
- REM Initialisierungen und Voreinstellungen
- untergrenze%=49 'Untergrenze für Ziffern
- obergrenze%=57 'Obergrenze für Ziffern
- waag%=18 'Waagrechte Koordinate
- senk%=2 'Senkrechte Koordinate
- anfang%=6 'Anfangslänge der Schlange
- schluss%=1 'Schwanzende am Anfang
- randzeichen%=15 'ASCII-Zeichen für Umrandung
- kopfzeichen%=2 'ASCII-Zeichen für Schlangenkopf
- schlange%=79 'ASCII-Zeichen für Schlangenkörper
- geschafft%=0 'Schalter, wenn Stufe fertig
- kollision%=0 'Schalter, falls angestoßen
- mehr%=-1 'Schalter für Wachstum der Schlange
-
-
-
- REM Spielfeldaufbau 'Setzen des Randes
- REM BITTE AUS DEM LETZTEN HEFT ÜBERNEHMEN !!
-
- LOCATE 24,7:PRINT "Schwierigkeitsstufe : ";stufe%;
-
-
-
- REM Grundstellung 'Ausgangsposition des Kopfes
- schirm%(waag%,senk%)=kopfzeichen%
- posi%(6,1)=waag%:posi%(6,2)=senk%
- LOCATE senk%,waag%:PRINT CHR$(kopfzeichen%);
- hilf%=14
- FOR i%=19 TO 23 'Ausgangsposition der Schlange
- schirm%(i%,2)=schlange%
- posi%(i%-hilf%,1)=i%
- posi%(i%-hilf%,2)=2
- hilf%=hilf%+2
- LOCATE 2,i%:PRINT CHR$(schlange%);
- NEXT i%
-
-
- REM Speiseaufbau 'Verteilen der Zahlen
- REM BITTE AUS DEM LETZTEN HEFT ÜBERNEHMEN !!
-
-
-
- abfrage:
- REM BITTE AUS DEM LETZTEN HEFT ÜBERNEHMEN !!
-
-
-
- steuercodes: 'Einlesen der Eingaben
- REM BITTE AUS DEM LETZTEN HEFT VON ÜBERNEHMEN !!
-
- IF geschafft%=-1 THEN GOTO naechsterlevel
- 'alles geschafft
- GOTO steuercodes
-
-
-
- kollisionsbehandlung: 'Leider angestoßen
- REM BITTE AUS DEM LETZTEN HEFT ÜBERNEHMEN !!
-
-
-
- wiederholung: 'Wiederholungsfrage
- REM BITTE AUS DEM LETZTEN HEFT ÜBERNEHMEN !!
-
-
-
- naechsterlevel: 'Eine Stufe höher
- IF stufe%=5 THEN GOTO schlussanzeige
- CLS
- stufe%=stufe%+1
- LOCATE 5,5
- PRINT "Prima, Du hast es geschafft !"
- PLAY "O3 T180 CFCFGAGFG" 'Kleine Melodie mit PLAY
- LOCATE 7,5
- PRINT "Du kommst in die naechste"
- LOCATE 9,5
- PRINT "Schwierigkeitsstufe : ";stufe%
- level!=0.3/stufe%+0.1
- goto wiederholung
-
-
-
- schlussanzeige: 'Alles geschafft
- CLS
- LOCATE 5,5
- PRINT "Prima, Du hast es geschafft !"
- PLAY "O3 T180 CFCFGAGFG" 'Kleine Melodie mit PLAY
- GOTO wiederholung
-
-
-
- falschetaste: 'Falsche Taste gedrückt
- REM BITTE AUS DEM LETZTEN HEFT ÜBERNEHMEN !!
-
-
-
- beendigung: 'Reguläres Programmende
- REM BITTE AUS DEM LETZTEN HEFT ÜBERNEHMEN !!
-
-
-
- links: 'Unterprogramm Linkspfeil
- DO WHILE NOT INSTAT
- waag%=waag%-1
- IF schirm%(waag%,senk%)=untergrenze% THEN_
- untergrenze%=untergrenze%+1:speisezahl%=_
- speisezahl%-1:SOUND 500,1:mehr%=-1 ELSE_
- SOUND 300,1
- IF schirm%(waag%,senk%)=0 OR schirm%(waag%,senk%)_
- =untergrenze%-1 THEN schirm%(waag%+1,senk%)=_
- schlange%:schirm%(waag%,senk%)=kopfzeichen%:_
- LOCATE senk%,waag%+1:PRINT CHR$(schlange%);:_
- LOCATE senk%,waag%:PRINT CHR$(kopfzeichen%);:_
- GOSUB schwanz: ELSE kollision%=-1:EXIT LOOP
- DELAY level!
- IF speisezahl%=0 THEN geschafft%=-1:EXIT LOOP
- mehr%=0
- LOOP
- RETURN
-
-
-
- rechts: 'Unterprogramm Rechtspfeil
- DO WHILE NOT INSTAT
- waag%=waag%+1
- IF schirm%(waag%,senk%)=untergrenze% THEN_
- untergrenze%=untergrenze%+1:speisezahl%=_
- speisezahl%-1:SOUND 500,1:mehr%=-1 ELSE_
- SOUND 300,1
- IF schirm%(waag%,senk%)=0 OR schirm%(waag%,senk%)_
- =untergrenze%-1 THEN schirm%(waag%-1,senk%)=_
- schlange%:schirm%(waag%,senk%)=kopfzeichen%:_
- LOCATE senk%,waag%-1:PRINT CHR$(schlange%);:_
- LOCATE senk%,waag%:PRINT CHR$(kopfzeichen%);:_
- GOSUB schwanz: ELSE kollision%=-1:EXIT LOOP
- DELAY level!
- IF speisezahl%=0 THEN geschafft%=-1:EXIT LOOP
- mehr%=0
- LOOP
- RETURN
-
-
-
- ab: 'Unterprogramm Abwärtspfeil
- DO WHILE NOT INSTAT
- senk%=senk%+1
- IF schirm%(waag%,senk%)=untergrenze% THEN_
- untergrenze%=untergrenze%+1:speisezahl%=_
- speisezahl%-1:SOUND 500,1:mehr%=-1 ELSE_
- SOUND 300,1
- IF schirm%(waag%,senk%)=0 OR schirm%(waag%,senk%)_
- =untergrenze%-1 THEN schirm%(waag%,senk%-1)=_
- schlange%:schirm%(waag%,senk%)=kopfzeichen%:_
- LOCATE senk%-1,waag%:PRINT CHR$(schlange%);:_
- LOCATE senk%,waag%:PRINT CHR$(kopfzeichen%);:_
- GOSUB schwanz: ELSE kollision%=-1:EXIT LOOP
- DELAY level!
- IF speisezahl%=0 THEN geschafft%=-1:EXIT LOOP
- mehr%=0
- LOOP
- RETURN
-
-
-
- auf: 'Unterprogramm Aufwärtspfeil
- DO WHILE NOT INSTAT
- senk%=senk%-1
- IF schirm%(waag%,senk%)=untergrenze% THEN_
- untergrenze%=untergrenze%+1:speisezahl%=_
- speisezahl%-1:SOUND 500,1:mehr%=-1 ELSE_
- SOUND 300,1
- IF schirm%(waag%,senk%)=0 OR schirm%(waag%,senk%)_
- =untergrenze%-1 THEN schirm%(waag%,senk%+1)=_
- schlange%:schirm%(waag%,senk%)=kopfzeichen%:_
- LOCATE senk%+1,waag%:PRINT CHR$(schlange%);:_
- LOCATE senk%,waag%:PRINT CHR$(kopfzeichen%);:_
- GOSUB schwanz: ELSE kollision%=-1:EXIT LOOP
- DELAY level!
- IF speisezahl%=0 THEN geschafft%=-1:EXIT LOOP
- mehr%=0
- LOOP
- RETURN
-
-
-
- schwanz:
- anfang%=anfang%+1
- IF anfang%>300 THEN anfang%=1
- posi%(anfang%,1)=waag%
- posi%(anfang%,2)=senk%
- IF mehr%=0 THEN LOCATE posi%(schluss%,2),_
- posi%(schluss%,1):PRINT CHR$(32);:schirm%_
- (posi%(schluss%,1),posi%(schluss%,2))=0:_
- schluss%=schluss%+1
- IF schluss%>300 THEN schluss%=1
- RETURN