Snake
-
Hi Leute!
ich hab folgendes Problem:
ich will als kleines Programm 'Snake' schreiben. ich habe schon so eine ungefähre Ahnung wie das funktionieren soll. allerdings macht der computer nicht was ich will sondern irgendwas. schaut euch bitte den code an und sagt mir was ich falsch gemacht haben könnte. Danke!!
(ich denke mal nicht, dass ich die #include befehle dazupacken muss
)int main() { char position[15][15]; char richtung; int irichtung[225]={4}; int f_x=0, f_y=0; int pos_s_x[225]={0}, pos_s_y[225]={0}; int zs_pos_s_x[225], zs_pos_s_y[225]; int score=1; bool tot; bool fressen_vorhanden=false; srand(time(NULL)); for(int k=0; k<15; k++) { for(int l=0; l<15; l++) { position[l][k]=' '; } } position[0][0]='S'; while(!tot) { system("cls"); for(int i=0; i<15; i++) { for(int j=0; j<15; j++) { cout<<position[j][i]; } cout<<'|'<<endl; } cout<<"----------------"<<endl; cout<<endl<<irichtung[1]<<' '<<pos_s_x[1]<<' '<<pos_s_y[1]; if(position[f_x][f_y]=='S') { score++; switch(irichtung[score-1]) { case 1: pos_s_x[score]=pos_s_x[score-1]; pos_s_y[score]=pos_s_y[score-1]-1; break; case 2: pos_s_x[score]=pos_s_x[score-1]-1; pos_s_y[score]=pos_s_y[score-1]; break; case 3: pos_s_x[score]=pos_s_x[score-1]; pos_s_y[score]=pos_s_y[score-1]+1; break; case 4: pos_s_x[score]=pos_s_x[score-1]+1; pos_s_y[score]=pos_s_y[score-1]; break; } fressen_vorhanden=false; } if(!fressen_vorhanden) { f_x=rand()%15+1; f_y=rand()%15+1; for(int p=0; p<score; p++) { if(f_x!=pos_s_x[p]&&f_y!=pos_s_y[p]) { fressen_vorhanden=true; position[f_x][f_y]='o'; } } } Sleep(100); if(kbhit()) { richtung=getch(); switch(richtung) { case 'w': if(irichtung[1]!=3){irichtung[1]=1;} break; case 'a': if(irichtung[1]!=4){irichtung[1]=2;} break; case 's': if(irichtung[1]!=1){irichtung[1]=3;} break; case 'd': if(irichtung[1]!=2){irichtung[1]=4;} break; } } for(int o=0; o<score; o++) { switch(irichtung[o]) { case 1: position[pos_s_x[o]][pos_s_y[o]]=' '; pos_s_y[o]=(pos_s_y[o]-1)%15; position[pos_s_x[o]][pos_s_y[o]]='S'; break; case 2: position[pos_s_x[o]][pos_s_y[o]]=' '; pos_s_x[o]=(pos_s_x[o]-1); if(pos_s_x[o]<0){pos_s_x[o]=14;} position[pos_s_x[o]][pos_s_y[o]]='S'; break; case 3: position[pos_s_x[o]][pos_s_y[o]]=' '; pos_s_y[o]=(pos_s_y[o]+1)%15; position[pos_s_x[o]][pos_s_y[o]]='S'; break; case 4: position[pos_s_x[o]][pos_s_y[o]]=' '; pos_s_x[o]=(pos_s_x[o]+1)%15; position[pos_s_x[o]][pos_s_y[o]]='S'; break; } } for(int p=score; p>=0; p--) { irichtung[p]=irichtung[p-1]; } } }
-
also im moment fehlen mir natürlich noch der code, wie man stirbt, aber ich will erst mal eine zusammenhängende schlange hinbekommen (da liegt mein problem)
-
Clundsch schrieb:
Hi Leute!
ich hab folgendes Problem:
ich will als kleines Programm 'Snake' schreiben. ich habe schon so eine ungefähre Ahnung wie das funktionieren soll. allerdings macht der computer nicht was ich will sondern irgendwas. schaut euch bitte den code an und sagt mir was ich falsch gemacht haben könnte. Danke!!Soso. "Irgendwas" macht er. Meinst du, wir können was damit anfangen? Lies dir bitte mal die als wichtig gekennzeichneten Threads hier im Forum durch oder die Links in meiner Signatur, da erfährst du, wie man beantwortbare Fragen stellt.
(ich denke mal nicht, dass ich die #include befehle dazupacken muss
)Doch, jede Menge. srand, system, cout, Sleep, khbit. Alles keine Schlusselwörter, sondern Funktionen/Objekte aus einer Bibliothek. Im Falle von Sleep und khbit nicht einmal die Standardbibliothek.
-
erstmal danke für die schnelle antwort. und ja ich weiß, dass ich es blöd erklärt habe. also hier meine problemschilderung:
1. Fehler: Die 'Schlange' bewegt sich nicht automatisch, wie sie es eigentlich sollte.
2. Fehler: sobald ich ein teilchen 'fresse' erscheint nicht hinter dem letzten schlangenglied ein neues, sondern irgendwo in der obersten zeile.hoffe das war gut genug geschildert.
hier der header:#include <iostream> #include <windows.h> #include <cstdlib> #include <conio.h> #include <time.h> using namespace std;
-
Problem gelöst, trotzdem danke für die eine Antwort
