Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

.. 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

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;

    } 

} 

if (kbhit())

muss da nicht ein ! davor

if (!kbhit())

static bedeutet?

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.

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

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

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

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

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

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

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.