Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Wie kann ich es in einer for schleife schreiben in der ich sage

ein Objekt macht dies und das bis zum Beispiel bis ein User ein W,S,A oder Y eingibt.

kann man in dem Teil der Bedingungen in der for schleife sagen

for ( wurmkörper=x_koordinate;x_koordinate>1 || eingabe='W' || ....;x_kkordinate--)

{

mach dies und das}

???:confused:

er soll während das Objekt sich bewegt horchen ob der User was eingibt, und nicht mit getch() nach jeder kleinen Bewegung warten bis der User was eingibt. Hat jemand ne Idee?

Danke

Anna

Geschrieben

Dein Problem ist, dass getch synchron arbeitet, d.h. die Funktion wartet, bis eine Taste gedrückt wurde. Solange steht Dein Programm.

kbhit könnte wohl abhelfen, wenn es auch nicht Standard ist (AFAIK).

Geschrieben

.. könnte ich mir dieses kbhit() vorstellen?

Ich will dass er in einer Schleife andauern überprüft ob ein w, s,y oder a eingegeben wurde, wenn nicht, soll die Sache ihren Lauf nehmen, wenn ja soll er etwas anderes machen als das was in der Schleife steht, soll z.B. ne neue Schleife beginnen.

War das zu verstehen?!?!?

:rolleyes:

Ich hoffe schon

Danke erst mal

Anna

Geschrieben
Original geschrieben von a8888j

.. könnte ich mir dieses kbhit() vorstellen?

Ob du es dir vorstellen kannst weiß ich nicht, aber erklären kann ichs dir. ;) Die Funktion kbhit() liefert TRUE (wert != 0) zurück wenn eine Taste gedrückt worden ist. #include <conio.h> nicht vergessen!

Hier ein Beispiel:


for ( wurmkörper=x_koordinate; x_koordinate > 1; x_kkordinate--) { 

  static char keycode;  // Notfalls außerhalb der Schleife definieren, static ist wichtig!


  if (kbhit()) {

    keycode= getch();

    switch(keycode) {

      // In diesem Beispiel werden sowohl Klein- als auch

     //Großbuchstaben abgefangen und ausgewertet

      case 'w':

      case 'W': //mach dies und das

                break;

      case 's':

      case 'S': //mach dies und das

                break;

      case 'a':

      case 'A': //mach dies und das

                break;

      case 'y':

      case 'Y': //mach dies und das

                break;

    } 

} 

Geschrieben

Das das eine Variable ist, die immer an derselben Speicherstelle steht und deren Inhalte auch bei verlassen des Namespace erhalten bleiben. Die Variable wird auf dem Heap nicht auf dem Stack angelegt. Innerhalb von Namespaces bleiben die Inhalte erhalten und sie sind local für eine Funktion. Außerhalb einer Funktion werden sie zu externen, globalen Variablen des entsprechenden Files in dem sie deklariert werden.

Geschrieben

Kann man in eine For-Schleife mehrere Bedingungen angeben?

Oder besser eine Do-While Schleife?

Das mit dem kbhit hat gut geklappt danke

Ich hab aber noch son Problem

Soll ich dir mal dieDatei schicken?

Ich hab am Anfang ne Manüauswahl und sage z.B. 2: für Snake mit Hinderniss

case '2': bewegung();

ich ruf die Funktion bewegung() auf, innerhalb dieser Funktion ruf ich gegebenenfalls eine andere Funktion auf. Je nachdem welche Taste während dem Spiel.

Sagen wir zum Beispiel Funktion bewegung_w();

bewegung_w() wird auch ausgeführt, aber sobald die zu Ende ist,sprint er wieder in bewegung() rein, solange wie die Bedingung in der FOR-Schleife in bewegung() true ist.

Wie kann ich sagen, diese FOR-Schleife wird bei AUfrufen einer anderen Funktion abgebrochen

AM

Geschrieben
Original geschrieben von a8888j

if (kbhit())

muss da nicht ein ! davor

Nein! Du willst doch auf Tastatureingaben reagieren und nicht darauf warten... oder habe ich das falsch verstanden?

Gruß,

StarLord

Geschrieben
Original geschrieben von a8888j

Kann man in eine For-Schleife mehrere Bedingungen angeben?

Natürlich, empfehle ich aber nicht. So was wird sehr unübersichtlich.

Original geschrieben von a8888j

Wie kann ich sagen, diese FOR-Schleife wird bei AUfrufen einer anderen Funktion abgebrochen

Den gleichen Befehl um ein switch/case abzubrechen kann man auch für For- und While-Schleifen verwenden: break

Gruß,

StarLord

Geschrieben

ok soweit so gut, alles gut funktioniert: Ich kann meine Schlange frei auf dem Spielfeld bewegen.

Ich hab jetzt gedacht, ich füge eine

compare()-Funktion ein, die irgendwie überprüfen soll, ob die Schlange gerade auf der selben Koordinate wie der momentane Apfel ist ( mit random hab ich irgendwo auf dem Spielfeld den Apfel generiert ).

Wie löse ich da am besten die Übergabe der Werte?

Anna

Geschrieben

Die einfachste Variante duerfte die Uergabe von vier Parametern an die Funktion "compare" sein: X- und Y-Koordinate des Apfels, sowie aktuelle X- und Y-Koordinate Deiner Schlange. Falls Du spaeter noch weitere Aepfel erzeugen moechtest, wuerde ich empfehlen, diese innerhalb eines Arrays abzulegen, welches Du an die compare Funktion uebergibst.

Nic

Geschrieben

mhhh, wie soll das denn gehen,

weil ich hab ne Funktion die Äpfel generiert jedes mal wenn sie aufgerufen wird, und ne andere Funktion, die die Schlange bewegt

also

apple()

bewegung_w() oder _s oder so, je nachdem welche Richtung

weil von den jeweiligen 2 Funktionen kann ich dann nur 2 Werte übergeben:

apple() --> apple_x, apple_y

bewegung --> Koordinate_x, Koordinate_y

obwohl die compare aber 4 erwartet.

Wie kann ich das lösen? :OD

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...