anfang eines Spieles

Tutorials.at
Verfügbare Informationen zu "anfang eines Spieles"

  • Qualität des Beitrags: 0 Sterne
  • 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:05

    anfang 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)