home *** CD-ROM | disk | FTP | other *** search
- REM Hasen - Einfangen
- REM (C) 1988 B. Freier & PASCAL International
- REM Turbo BASIC - IBM PC/XT/AT
-
- SCREEN 1 'Initialisierungen
- COLOR 15,0
-
- DIM hase%(95) 'Arrays bereitstellen
- DIM rahmen%(182)
- DIM spielfeld%(1:56,1:28)
-
- RANDOMIZE TIMER 'Zufallsgenerator starten
-
- CLS 'Hase zeichnen
- CIRCLE (10,23),10,3
- PAINT (10,23),3,3
- CIRCLE (10,10),5,3
- PAINT (10,10),3,3
- CIRCLE (10,27),4,0
- LINE ( 5,0)-( 7,7),3,B
- LINE (13,0)-(15,7),3,B
-
- GET (0,0)-(20,30),hase% 'Hase als Symbol in
- 'ein Array einlesen
-
-
- CLS 'Rahmen zeichnen
- LINE (0,0)-(30,40),2,BF
- LINE (4,4)-(26,36),0,BF
-
- GET (0,0)-(30,40),rahmen% 'Rahmen einlesen
-
-
-
- spielerklaerung:
- CLS
- LOCATE 3,7:?"H A S E N F A N G E N";
- LOCATE 6,2:?"Oh Schreck! Dem Nachbarn sind die";
- LOCATE 8,2:?"Hasen aus dem Stall entlaufen.";
- LOCATE 10,2:?"Sie sitzen unbewacht im Garten.";
- LOCATE 13,2:?"Nimm schnell einen Rahmen";
- LOCATE 15,2:?"und hilf beim Fangen der Hasen.";
- LOCATE 18,2:?"Steuere den Rahmen mit den Pfeil-";
- LOCATE 20,2:?"tasten. Druecke die Eingabetaste,";
- LOCATE 22,2:?"wenn der Rahmen um den Hasen liegt.";
- LOCATE 25,2:?"Druecke jetzt irgendeine Taste!";
-
- WHILE NOT INSTAT:WEND:nix$=INKEY$ 'Taste löschen
-
-
- start:
-
- SCREEN 1
-
- freie% = 6 'Werte auf Startwert
- gefangen% = 0
-
- CLS 'Spielfeld aufbauen
- VIEW (10,1)-(310,171),1,3
- WINDOW SCREEN (1,1)-(60,34)
-
- FOR versatz%=2 TO 55 STEP 9 'Hasen zufällig
- zufallx%=INT(RND*5)+1 + versatz% 'verteilen
- zufally%=INT(RND*26)+2
- spielfeld%(zufallx%,zufally%) = 1
- PUT (zufallx%,zufally%),hase%
- NEXT versatz%
-
- rahmenx%=28 'Rahmen in die Mitte
- rahmeny%=14
-
- PUT (rahmenx%,rahmeny%),rahmen%
- GOSUB wertausgabe
-
-
- abfrage:
- WHILE INSTAT 'Tastaturpuffer leeren
- nix$ = INKEY$
- WEND
-
- WHILE NOT INSTAT 'Zeichen von Tastatur
- WEND 'einlesen
- eingabe$ = INKEY$
- IF LEN(eingabe$) = 2 THEN GOTO steuercodes
- IF eingabe$ = CHR$(13) THEN
- IF spielfeld%(rahmenx%+1,rahmeny%+1) = 1 THEN
- GOTO richtig
- ELSE
- GOTO falsch
- END IF
- ELSEIF eingabe$="E" OR eingabe$="e" THEN
- GOTO beendigung
- ELSE
- PRINT CHR$(7);:GOTO abfrage
- END IF
-
-
- steuercodes: 'Cursortaste wurde
- xalt% = rahmenx% 'gedrückt
- yalt% = rahmeny%
- eingabe$ = RIGHT$(eingabe$,1)
- 'Aufwärtspfeil
- IF eingabe$=CHR$(72) AND rahmeny%>1 THEN
- rahmeny%=rahmeny%-1
- 'Abwärtspfeil
- ELSEIF eingabe$=CHR$(80) AND rahmeny%<26 THEN
- rahmeny%=rahmeny%+1
- 'Linkspfeil
- ELSEIF eingabe$=CHR$(75) AND rahmenx%>1 THEN
- rahmenx%=rahmenx%-1
- 'Rechtspfeil
- ELSEIF eingabe$=CHR$(77) AND rahmenx%<54 THEN
- rahmenx%=rahmenx%+1
-
- ELSE 'andere Taste
- PRINT CHR$(7);:GOTO abfrage
- END IF
-
- 'Rahmen neu zeichnen
- PUT (xalt%,yalt%),rahmen%
- PUT (rahmenx%,rahmeny%),rahmen%
- GOTO abfrage
-
-
-
- richtig: 'Hase richtig eingerahmt
- FOR i%=250 TO 275 STEP 5 'Erfolgsmelodie
- SOUND i%,1.5
- NEXT i%
-
- 'Löschen des Wertes
- spielfeld%(rahmenx%+1,rahmeny%+1)=0
- 'Bild des Hasen löschen
- PUT (rahmenx%+1,rahmeny%+1),hase%
- freie% = freie%-1 'Werte neu berechnen
- gefangen% = gefangen%+1
- GOSUB wertausgabe 'Werte aktualisieren
-
- LOCATE 23,4 'Satz zur Motivation
- PRINT "Hurra, wieder ein Hase gefangen !";
-
- DELAY 1 'Verzögerung
- LOCATE 23,2:PRINT STRING$(37,32);
- 'Zum Spielende
- IF freie%=0 THEN GOTO erfolgsmeldung
- GOTO abfrage 'Rücksprung
-
-
-
- wertausgabe:
- LOCATE 25,1 'Werte ausgeben
- PRINT "Hasen gefangen: ";gefangen%;
- LOCATE 25,26
- PRINT "Noch frei: ";freie%;
- RETURN
-
-
-
- falsch: 'Rahmen nicht über Hase
- PRINT CHR$(7);
- gesucht% = 0
- FOR suchx% = -2 TO 2 'Umgebung absuchen
- FOR suchy% = -3 TO 3
- IF spielfeld%(rahmenx%+1+suchx%,rahmeny%+1+suchy%)_
- = 1 THEN GOSUB daneben:gesucht% = -1
- 'Hilfstext
- NEXT suchy%
- NEXT suchx%
-
- 'Meldung bei Mißerfolg
- IF gesucht% = 0 THEN
- LOCATE 23,7:PRINT "Hier ist kein Hase !!!";
- DELAY 1
- LOCATE 23,2:PRINT STRING$(37,32);
- END IF
- GOTO abfrage
-
-
-
- daneben: 'Hilfe für den Spieler
- LOCATE 23,3
- PRINT "Lege den Rahmen genau um den Hasen!";
- DELAY 1
- LOCATE 23,2: PRINT STRING$(38,32);
- RETURN
-
-
-
- erfolgsmeldung: 'Alle Hasen sind gefangen
- SCREEN 1 'Sätze mit Erfolgsmeldung
- CLS
- LOCATE 8,10:PRINT "Das ist ja prima ! ! !"
- LOCATE 14,6:PRINT "Es sind alle Hasen im Stall !"
-
-
-
-
- wiederholungsfrage:
- LOCATE 20,7:PRINT "Noch ein Spiel ( J / N ) ?";
-
- eingabe$=INKEY$ 'Tastaturabfrage
- IF eingabe$ = "" THEN GOTO wiederholungsfrage
- IF eingabe$ = "J" OR eingabe$ = "j" THEN_
- GOTO start ELSE END
-
-
-
- beendigung: 'Spielabbruch
- SCREEN 1
- CLS 'Satz des Bedauerns
- LOCATE 8,7:PRINT "Schade, dass Du aufgibst !";
- GOTO wiederholungsfrage
-
- END 'Programmende