Verfügbare Informationen zu "anfang eines Spieles"
Qualität des Beitrags: Beteiligte Poster: Moritz - Dragorad - wirthi Forum: Tutorials.at Forenbeschreibung: Programmierforum aus dem Unterforum: Pascal Antworten: 16 Forum gestartet am: Mittwoch 19.04.2006 Sprache: deutsch Link zum Originaltopic: anfang eines Spieles Letzte Antwort: vor 15 Jahren, 4 Monaten, 18 Tagen, 11 Stunden, 19 Minuten
Alle Beiträge und Antworten zu "anfang eines Spieles"
Re: anfang eines Spieles
Moritz - 09.10.2007, 20:05anfang eines Spieles
Hallo..bin in Pascal eigentlich eher ein Anfänger... und ich habe mal ein Programm geschrieben, mit dem man ein #-Zeichen mit asdw bewegen kann und mit q "Bomben" legen kann. Nun ist meine Frage, wie mache ich es, das man während des Countdowns für die "Bomben" die # weiter mit asdw bewegen kann. (Also sodass das Program eine eventuell gemachte Eingabe speichert und aber nicht auf eine Eingabe wartet!!) :?:
Danke schon mal für Antworten :wink:
Quellcode:
Code:
program game;
uses crt;
var i, j: integer; {Variablen deklarieren}
eingabe: char;
x, y: integer;
x1, y1: integer;
begin
randomize;
clrscr;
window(1,1,80,24); {Fenster einrichten, }
x:= 40; {damit man das ganz unten funktioniert}
y:= 12;
gotoxy (x, y);
write ('#');
repeat
delay(10);
clrscr;
gotoxy (x, y);
write ('#');
eingabe:=readkey;
{--------------------------------------------------------}
if (eingabe='a') then
begin
x:=x-1;
gotoxy (x,y);
write ('#');
end;
{--------------------------------------------------------}
if (eingabe='d') then
begin
x:=x+1;
gotoxy(x, y);
write('#');
end;
{--------------------------------------------------------}
if (eingabe='w') then
begin
y:=y-1;
gotoxy (x, y);
write('#');
end;
{--------------------------------------------------------}
if (eingabe='s') then
begin
y:=y+1;
gotoxy(x, y);
write('#');
end;
{--------------------------------------------------------}
if (eingabe='q') then
begin
x1:=x; {zum bomben ablegen}
y1:=y;
eingabe:= readkey;
for j:=1 to 3 do
begin
if (eingabe= 'a') then
begin
x:=x-1;
gotoxy (x, y);
write ('#');
end;
if (eingabe='d') then
begin
x:= x+1;
gotoxy (x, y);
write ('#');
end;
if (eingabe='s') then
begin
y:= y+1;
gotoxy (x, y);
write ('#');
end;
if (eingabe='w') then
begin
y:=y-1;
gotoxy (x, y);
write ('#');
end;
end;
textcolor (red);
for i:=2 downto 0 do
begin;
clrscr;
gotoxy (x, y);
write ('#');
gotoxy (x+1, y);
write (i);
delay (1000);
end;
textcolor (yellow);
gotoxy (x+2, y);
write ('-');
gotoxy (x+2, y+1); {Grafik der "Bombe bzw explosion}
write ('\');
gotoxy (x+1, y+1);
write ('"');
gotoxy (x, y+1);
write ('/');
gotoxy (x, y-1);
write ('\');
gotoxy (x+1, y-1);
write ('"');
gotoxy (x+2, y-1);
write ('/');
delay (2000);
textcolor (white);
end;
if (x>78) then x:=2; {wenn man über den Bildschirmrand hinausgeht, landet man am anderem ende}
if (y>22) then y:=2; {deswegen das Fenster}
if (x=1) then x:=78;
if (y=1) then y:=22;
until (eingabe='0');
end.
Modmodus: hab' den Code mal markiert ... ;) Dragorad
Re: anfang eines Spieles
Dragorad - 09.10.2007, 20:50
In TurboPascal kann man meiner Meineung nach keine gleichzeitig ablaufende Prozesse abspielen.
Versuch's mal folgendermaßen:
Code:
mit "q" Bombe ablegen
wiederhole
Countdownzähler eins runter
Schritt machen (oder mehrere)
bis Countdownzähler=0
Schritt machen (oder mehrere)
Explosion
Das ist jetzt sehr abstakt geschrieben, aber so kann ich mir's noch am ehesten vorstellen.
Re: anfang eines Spieles
Moritz - 09.10.2007, 21:06
Dragorad hat folgendes geschrieben: In TurboPascal kann man meiner Meineung nach keine gleichzeitig ablaufende Prozesse abspielen.
Versuch's mal folgendermaßen:
Code:
mit "q" Bombe ablegen
wiederhole
Countdownzähler eins runter
Schritt machen (oder mehrere)
bis Countdownzähler=0
Schritt machen (oder mehrere)
Explosion
Das ist jetzt sehr abstakt geschrieben, aber so kann ich mir's noch am ehesten vorstellen.
aber wenn man dann Keinen Schritt macht explodiert die Bombe auch nicht!!
weil das Programm wartet bis eine Taste gedrückt wird!!
Re: anfang eines Spieles
wirthi - 09.10.2007, 22:20
Du könntest etwa eine schleife machen, in der du X-mal schaust, ob gerade eine Taste gedrückt wird (keypressed heißt die Funktion glaub ich), und wenn es nicht der Fall ist, dann machst du halt einen "Schritt" (d.h. lässt die Bombe explodieren). Wird eine Taste gedrückt, dann fragst du die halt ab mit readln, wartest anschließend bis keypressed false ist (Damit du nicht zweimal die gleiche Taste erwischt).
Re: anfang eines Spieles
Moritz - 10.10.2007, 15:03
also
Code:
repeat
...
until (keypressed = 1);
oder wie????
Re: anfang eines Spieles
Moritz - 10.10.2007, 17:32
Ich habe noch mal alles in eine Unit gebracht (aber ohne bombe)
allerdings funktioniert es nicht!!
Warum nicht??
Code:
program Spiel_better;
uses crt, definitions;
var objekt, eingabe: char;
x, y:integer;
begin
objekt:= '#';
moveasdw (objekt, eingabe, x, y);
readkey;
end.
und die Unit (da ist ein bisschen mehr drin(was mir mal eingefallen ist), aber das macht ja keinen unterschied):
Code:
unit definitions;
interface
procedure count (Anfang, i: integer);
procedure countln (Anfang, i: integer);
procedure moveasdw (Objekt, eingabe: char; x, y:integer);
implementation
uses crt;
procedure count (Anfang, i: Integer);
begin
for i:= Anfang downto 0 do
begin
clrscr;
write(i);
delay (1000);
end;
end;
procedure countln (Anfang, i:integer);
begin
for i:= Anfang downto 0 do
begin
delay (1000);
writeln (i);
end;
end;
procedure moveasdw (Objekt, Eingabe: char; x, y: integer);
begin
repeat
clrscr;
eingabe:= readkey;
if (eingabe = 'a') then
begin
x:=x-1;
gotoxy (x, y);
write (Objekt);
end;
if (eingabe = 'd') then
begin
x:=x+1;
gotoxy (x, y);
write (Objekt);
end;
if (eingabe = 's') then
begin
y:=y+1;
gotoxy (x, y);
write (Objekt);
end;
if (eingabe = 'w') then
begin
y:=y-1;
gotoxy (x, y);
write (Objekt);
end;
until (ord (eingabe)= 27);
end;
end.
Re: anfang eines Spieles
Dragorad - 10.10.2007, 20:38
Hast du den Quellcode der Unit auch als *.tpu-Datei kompiliert? Diese muss dann in den Ordner, wo auch die anderen *tpu's drin sind (bei mir der TP-Ordner) - dann sollte's funktionieren ...
Re: anfang eines Spieles
Moritz - 11.10.2007, 14:46
die unit ist richtig eingebunden, denn die anderen Prozeduren aus der Unit funktionieren, nur diese nicht!!
Re: anfang eines Spieles
Dragorad - 11.10.2007, 21:17
Was für eine Fehlermeldung kommt denn? Vlt. musst du im Quellcode vor der Prozedur noch die Variablen einstellen oder die Prozedur als Funktion schreiben (?)
Re: anfang eines Spieles
Moritz - 11.10.2007, 21:41
keine Fehlermeldung, aber der cursor bleibt oben links stehen und blinkt, mehr passiert nicht
Re: anfang eines Spieles
Dragorad - 12.10.2007, 21:22
Die Variablen x und y sollten noch Werte bekommen, damit du so die Startposition ermitteln kannst. Vlt. hilft das erstmal weiter ...
Re: anfang eines Spieles
Moritz - 14.10.2007, 14:06
geht trotzdem nicht
Re: anfang eines Spieles
Dragorad - 14.10.2007, 22:34
ich würde's mal statt der vier IF-Anweisungen mit 'ner Case ... Of-Anweisung versuchen:
case of anweisung do
'A':begin
end;
'W':begin
end;
'S':begin
end;
'D':begin
end;
end;
Re: anfang eines Spieles
Moritz - 23.10.2007, 20:51
geht trotzdem nicht.
aber mal was anderes... ich habe neulich ein echt geiles prog. als vp-Beispiel gesehen (heißt stencil)...wie macht man sowas??
wer will kann ich es per email schicken
Re: anfang eines Spieles
Dragorad - 23.10.2007, 21:41
schick' mal, hab' davon noch nie was gehört. Was ist das für'n Programm, was macht es, was kann es???
Re: anfang eines Spieles
Moritz - 10.11.2007, 23:35
das ist nur ein sich bewegender 3d Knoten, aber sieht cool aus
Mit folgendem Code, können Sie den Beitrag ganz bequem auf ihrer Homepage verlinken
Weitere Beiträge aus dem Forum Tutorials.at
Rubik Würfel - gepostet von c# am Sonntag 25.03.2007
Zeichen - gepostet von schlodel am Freitag 13.04.2007
Sound über die Bios BOX (Alle meine Entchen) - gepostet von Tro1aner am Montag 22.01.2007
C++ Lernen - gepostet von Nightm4r3 am Mittwoch 20.09.2006
Linker- Probleme mit gcc - undefined reference to ... - gepostet von DrPhil_Guth am Sonntag 10.12.2006
Haha!^^ - gepostet von Dirty Oerty am Freitag 28.09.2007
Lieblings Tools ? - gepostet von exbs am Dienstag 27.02.2007
Welche Programmiersprache? - gepostet von The Dust am Sonntag 24.06.2007
Ähnliche Beiträge wie "anfang eines Spieles"
Besiedlung eines neuen Planeten - Drex (Sonntag 13.11.2005)
Bewerbung eines Hexenmeisters[Tryout failed] - Ryu (Donnerstag 18.01.2007)
Bewerbung eines Hexenmeisters - Anonymous (Montag 03.12.2007)
KARAS ANFANG!!! - Destrox (Samstag 30.06.2007)
Anfang - dark96 (Dienstag 23.01.2007)
Frühlings Anfang - sternchen (Montag 21.03.2005)
Bewerbung eines HM`s - Anonymous (Dienstag 30.01.2007)
Bildung eines Zenrums! - mr. Onetouchable (JMaul) (Dienstag 26.06.2007)
Aller Anfang. - tommy7 (Sonntag 24.12.2006)
Die aufgaben eines Handwerkers - Killerbraut (Montag 17.10.2005)
