Snake probleme...
-
also hi erstmal^^
ich habe angefangen snake in c++ zu programmieren, so weit so gut...
der schlangen kopf bewegt sich runter... auf tastendruck geht er dann nich links... bewegt sich dann aber NUR nach links.
kann mir da wer helfen?
ich probiere nun schon 15h durchgehend dadran rum aber nichts geh... hoffe ihr könnt mir helfen...^^
-
Naja, probier mal nen Beitrag zu schreiben bei dem man sieht wo das Problem ist.
(Warum sollte die Schlange nicht nur nach links gehen wenn ich nach links drücke ? Wenn ich mich recht entsinne ist die schlange nie wo anderst hin wenn ich links gedrückt hab)
-
also ich versuch mich mal klarer auszudrücken :
das "spiel" beginnt,
die schlange bewegt sich nach unten,
ich drücke irgend eine taste ,
sie geht nach links,
ich drücke erneut irgend eine taste es passiert nichts.das ist mein problem^^
hoffe ist verständlicher...
-
Die Problemfeststellung scheint verständlich, aber wir können dir so bei der Lösung bestimmt nicht helfen. Wir brauchen den Code an den erwähnten Stellen um dir helfen zu können.
Mit den von dir gegebenen Angaben kann ich dir nur soviel sagen: Ja, ich bestätige das Fehlverhalten. Grund: Du hast im Code einen Fehler eingebaut.
MfG SideWinder
-
XD stimmt... also hier kommt mal der code...^^
nich wundern hab da erstmal n bissl "gespielt" ... muss also noch vieles ändern...
#include <iostream> #include "conioex.h" #include <conio.h> #include <windows.h> using namespace std; void rahmen(); void s_u(); void s_l(); void s_r(); void s_d(); int x = 30; int y = 3; int main() { int seiten = 5; _setcursortype (0); do{ rahmen(); s_d(); seiten = (int) kbhit(); y=y+1; if(kbhit()==true) { seiten=getch(); if (seiten == 1); { x=x-1; } if (seiten == 2); { x=x+1; } } Sleep (1000); clrscr(); }while (y<=15); system("PAUSE"); return 0; } void s_u() { textcolor (YELLOW); cout << "A"; } void s_l() { textcolor (YELLOW); cout << "<"; } void s_r() { textcolor (YELLOW); cout << ">"; } void s_d() { textcolor (YELLOW); gotoxy(x,y); cout << "V"; } void rahmen() { gotoxy (25,3); textbackground (LIGHTBLUE); cout <<" "; //30 gotoxy (25,4); textbackground (LIGHTBLUE); cout <<" "; //30 gotoxy (25,5); textbackground (LIGHTBLUE); cout <<" "; //30 gotoxy (25,6); textbackground (LIGHTBLUE); cout <<" "; //30 gotoxy (25,7); textbackground (LIGHTBLUE); cout <<" "; //30 gotoxy (25,8); textbackground (LIGHTBLUE); cout <<" "; //30 gotoxy (25,9); textbackground (LIGHTBLUE); cout <<" "; //30 gotoxy (25,10); textbackground (LIGHTBLUE); cout <<" "; //30 gotoxy (25,11); textbackground (LIGHTBLUE); cout <<" "; //30 gotoxy (25,12); textbackground (LIGHTBLUE); cout <<" "; //30 gotoxy (25,13); textbackground (LIGHTBLUE); cout <<" "; //30 gotoxy (25,14); textbackground (LIGHTBLUE); cout <<" "; //30 gotoxy (25,15); textbackground (LIGHTBLUE); cout <<" "; //30 textbackground (BLACK); }
bin halt noch ein anfänger
-
Ich glaub du bist hier in der falschen Ecke gelanded, das sieht mir net nach CLI mit net aus, das sieht eher wie MFC oder 'normales' C++ aus
-
mist.. XD
wo is bei den ganzen dingern denn der unterschied?Oo
und das ganze dann in mfc posten oder wo?...
sorry kenn mich hier absolut net aus...
-
Vllt verschiebt ein Moderator in das richtige Forum
der gotoxy code sähe in ClI so aus:
Console::SetCursorPosition(x,y);
Mit welcher IDE (Visual C,Visual Studio 2005,Borland irgendwas) Programmierst du?
-
Dev-C++ ...
^^
-
Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Upps... C++ wäre wohl besser gewesen...
Aber "gotoxy" gibt es AFAIk weder in C noch in C++... sondern nur in DOS...
-
Jochen Kalmbach schrieb:
Upps... C++ wäre wohl besser gewesen...
Aber "gotoxy" gibt es AFAIk weder in C noch in C++... sondern nur in DOS...Jup, ich denke DOS und Win32-Konsole ist hier am ehesten geeignet.
-
Dieser Thread wurde von Moderator/in Tim aus dem Forum ANSI C in das Forum DOS und Win32-Konsole verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
also des gotoxy is ne extra biblio... conioex.h ...
für farben etc.^^und zurrück zu meiner frage
könnte mir wer helfen oder einen tipp geben wo ich meine fehler beheben kann?^^bin für alles offen
-
Lidlemen schrieb:
int x = 30; int y = 3;
Globale Variablen sind schlecht - die solltest du besser vermeiden.
int main() { int seiten = 5; _setcursortype (0); do{ rahmen(); s_d(); seiten = (int) kbhit();
Diese Anweisung ist sinnlos, weil seiten vor dem nächsten Zugriff sowieso überschrieben wird (und kbhit() sagt dir auch nur, OB eine Taste gedrückt wurde)
if(kbhit()==true) { seiten=getch(); if (seiten == 1); { x=x-1; } if (seiten == 2); { x=x+1; } }
getch() gibt dir den ASCII-Code der eingetippten Taste zurück, bei Steuertasten erhältst du nacheinander 0 und einen entsprechenden Code. Und genau diese Tastencodes mußt du auswerten (in der FAQ findest du eine Tabelle, welche Taste wie dargestellt wird).
void s_u() { textcolor (YELLOW); cout << "A"; } void s_l() { textcolor (YELLOW); cout << "<"; } void s_r() { textcolor (YELLOW); cout << ">"; } void s_d() { textcolor (YELLOW); gotoxy(x,y); cout << "V"; }
Vier Funktionen, die abgesehen vom Ausgabewert identisch sind? Das schreit geradezu danach, die zu einer Funktion zusammenzufassen (und die auszugebenden Werte als Parameter mitzugeben).
(btw, soweit ich das sehe, wird nur die letzte Funktion tatsächlich aufgerufen)
-
also zualler erst : danke für die schnelle antwort
dann :
wo im faq steht das denn?
hab den bisher allgemein noch nicht gefunden...
das mit der komischen variablen deklaration von seiten is sone angewohnheit von mir geworden das ich beim definieren auch gleich deklariere.
und bei seiten hab ich das gemacht das da auf jedenfall weder true noch false bei raus kommt da ich standard alle variablen auf 0 setzte...wie mein lehrer sich auch schon beschwerte : globale variablen sind pöööse...
nur bin ich zu dumm die via funktion zu übergeben..^^"und zu getch():
kann ich dann einfach in eine switch funktion die steuerung machen?
oder auch einfach das mit den if's belassen nur dann halt if (variable == asccicode)?
das wäre dann die perfekte antwort auf mein problem
-
Lidlemen schrieb:
also zualler erst : danke für die schnelle antwort
dann :
wo im faq steht das denn?
hab den bisher allgemein noch nicht gefunden...Dann schau genauer hin - der Beitrag heißt "Einlesen von Pfeiltasten, F-Tasten und Tastenkombinationen" (finden mußt du ihn schon selber ;)).
das mit der komischen variablen deklaration von seiten is sone angewohnheit von mir geworden das ich beim definieren auch gleich deklariere.
und bei seiten hab ich das gemacht das da auf jedenfall weder true noch false bei raus kommt da ich standard alle variablen auf 0 setzte...Gegen die Initialisierung habe ich ja nichts - aber die Anweisung "seiten=kbhit()" ist sinnlos (die nächste Anweisung, die etwas mit der Variablen macht, überschreibt sie mit einem neuen Wert).
wie mein lehrer sich auch schon beschwerte : globale variablen sind pöööse...
nur bin ich zu dumm die via funktion zu übergeben..^^"Dann schau doch mal in deinem Lehrbuch unter "Parameter" nach
und zu getch():
kann ich dann einfach in eine switch funktion die steuerung machen?
oder auch einfach das mit den if's belassen nur dann halt if (variable == asccicode)?switch() ist zwar keine "Funktion", aber ansonsten ja (und im Allgemeinen ist es auch flotter als eine if-else-Kaskade).
-
dankeschöööön!^^
habs gefunden ______hast ja recht mit der variable...^^" dummer fehler von mir -.- xD
so laaaaaaangsam krieg ich das mit den parametern gebacken ^^
und danke euch erstmal!!!
nu kann ich endlich das weiter machen
wenn ich nochmal einen fehler hab melde ich mich bestimmt wieder bei euch xD sofern ich ihn nicht selber lösen kann...^^