Zum Inhalt springen

Snake, sorry wenn ich damit schon lamgsam nerv


Empfohlene Beiträge

Geschrieben

Hy,

ich und meine Klassenkameradin sind dabei, das SnakeSpiel zu programmieren.

Die Schlange bewegt sich auch in die Richtung die wir wollen.

Um den Apfel zu generieren hab ich ne Funktion apple()

und für die Bewegung je nachdem welche Richtung bewegung_w()

ich hab mir gedacht ich schreib ne compare(), die vergleichen soll, ob x und y von apfel und schlange vergleicht, wenn ja mach dies und das, wenn nein mach weiter.

Wie kann ich das mit der Übergabe der Werte regeln? :rolleyes:

Weil die Compare erwartet dann 4 Werte, ich kann aber sowohl von apple als auch von bewegung_w je 2 Werte an compare() geben.

Hat jemand ne einfache und kurze Idee? :P

Danke Anna-Maria

Geschrieben

Ich bin zwar kein Programmierer, aber wenn das Spiel fertig ist stell es doch mal zum Download bereit... könnte was nettes für zwischendurch werden. Das Problem bei QBasic Snake ist, dass die modernen Computer zu schnell sind und dadurch die Timings im Spiel nicht mehr stimmen. Das nur so als Info warum QBasic Spiele nicht mehr richtig laufen - jedenfalls die von Microsoft ;)

Geschrieben

wir programmieren das in C, und nicht in QBasic.

Aber wenn das funktioniert, würde ich das locker zum Download bereitstellen, brauch aber erst mal Eure Hilfe um da weiterzukommen.

Ausserdem ist mir nochwas aufgefallen

Zu Beginn hab ich die Funktion bewegung(), als Standard.

Während dieser Schleife, deren Bedingung lautet: bis Snake gegen den Rahmen läuft, wird bei jedem Durchgang geprüft, ob der User ne Taste um die Richtung zu wechseln, gedrückt hat.

Falls ja, wird ne andere Funktion aufgerufen ( bewegung_w(), ich fürchte, dass er die bewegung() nicht abbricht, weil wenn ich dann innerhalb der Funktion bewegung_w() auf den Rahmen gestossen bin ( da sollte gameover() sein ), macht er einfach mit der ersten Funktion bewegung() weiter, bis die Bedungung true ist.

Ich will aber ne Schleife abbrechen wenn eine andere Funktion aufgerufen wird.

WIe kann ich das machen?

mit break klappt das irgendwie nicht

Geschrieben
Original geschrieben von a8888j

Ich will aber ne Schleife abbrechen wenn eine andere Funktion aufgerufen wird.

Du überprüfst am besten in der Schleife ne Statusvariable, deren Status du dann mit Hilfe der anderen Methode änderst.

Beim Status abbrechen beendest du die Funktion dann entweder mit return oder durch ne Bedingung in der while-Schleife.

while(status==false){

status = pruefeAbbruch();

}

oder

while(true){

  if(pruefeAbbruch()==true)

    return;

}

Gruß Jaraz

Geschrieben

das hab ich nicht ganz verstanden

was ich mir gedacht hab -->

do

{

bla bla

richtung()

}

while(Koordinate ist größer 1);

dann will ich in der richtung()

sagen, wenn eine taste während der Do-Schleife gedrückt wurde, gib einen Wert zurück, um die Do-Schleife zu stoppen und mit einer anderen Funktion oder Anweisung zu beginnen.

Ich hoffe das geht irgendwie

Aber wie?

Irgendwie muss ich in der Do-Schleife die richtung() mit irgenwas aufrufen, diese überprüft, und gibt was zurück

Kann mir jemand helfen?

Anna

Geschrieben
Original geschrieben von a8888j

Ich will aber ne Schleife abbrechen wenn eine andere Funktion aufgerufen wird.

WIe kann ich das machen?

mit break klappt das irgendwie nicht

Normalerweise sollte es mit break klappen. Alternativ (oder besser zusätzlich) könntest du auch die Schleifenbedingung erfüllen. Falls du jetzt fragst: "Wie?", hier ein kleines Beispiel:


int counter;


for (counter = 0; counter <= 255; counter++) {

  if (counter == 100) {

    counter = 256; // Entweder so abbrechen

    break;  // Oder so abbrechen

    // Oder beide zusammen, aber das break sollte als letzte Anweisung kommen!

  }

}

In meinem Beispiel sollte die Schleife auf jeden Fall abbrechen wenn der Wert 100 erreicht wird.

Hast du dir eigentlich schon mal Gedanken über ein Ablauf-Diagramm gemacht? Wenn du eines erstellst dürfte das ganze doch gar kein Problem sein. Nur als Tipp: In professionellen Spielen gibt es immer eine Status-Variable. In deinem Fall könnte sie folgende Ereignisse (Events) enthalten: MOVE, KEYDOWN, COLLISION, PAUSE, GAMEOVER, INTRO, STATUS, etc., etc.

Gruß,

StarLord

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