brauche mal hilfe fuer mein snkae prog!!!schlange wächst net:(
-
hallo alle zusammen....
ich hab mich seit langen mal dazu entshclossen ein kleinen konsolen spiel zu programmieren.klappt alles super hervorragend, wenn ich die beute einfachne bekomm ich punkte das level erhöht sich ect. DOCH zwei mangel hat mein programmdas ERST: nach einer gewissen zeit wenn ich des obst oder so eingesammelt habe bleibt die am schlangenkopf haengen also es einfach hinten dran gehaengt und erscheint nicht neu auf dem screen(es ist immer unterschiedlich wann das obst aufeinmal da haften bleibt)
wieso???das ZWEITE: und des wegen hab ich mich hier auch eigentlich im forum gemeldet ist das ich moechte das wenn die schlange das obst frist, es hinten angehängt wird und so die schlange waechst. es waere dann auch sicher gute wenn ich mit der schlange ubern screen laufe das der schwanz auch dort wo die schlange abbiegt, abbiegt und so fort... ihr alle kennt ja sicher snake....
wenn hilft ich code unter borland builder 6 c++
fuer Hilfe bin ich recht dankbar.THANX!!
mfg, Sn4k3
-
bei deiner ersten frage braucht man eine kristallkugel.
ohen code keine chance
-
als erstes mal der code koennt ja mal schaun ob ihr was mit anfangen koennt.... evtl koennt ihr mir ja dann meine fragen beantworten *g*
void GAME() { int Score(0); int Level(1); Intro(); int Key; // Tasten int snake_pos_x=3,snake_pos_y=3; // Position der Schlange int creep_pos_x=41,creep_pos_y=7; // Position der Beute int set_pos_x, set_pos_y; // Hilfsvariable while (Key != 27) { gotoxy(snake_pos_x,snake_pos_y); // Spawnpoint: Schlange textcolor(LIGHTRED); cprintf("S"); gotoxy(creep_pos_x,creep_pos_y); // Spwanpoint: Beute, später auf Zufall textcolor(GREEN); cprintf("o"); gotoxy(1,20); textbackground(LIGHTBLUE); textcolor(WHITE); cprintf("________________________________________________________________________________"); cout << "\n"; textcolor(YELLOW); cprintf("Level: %d",Level); cout << "\n\n"; cprintf("Score: %d",Score); Sleep(90); // gibt die Geschwindigkeit der Schlange an if (kbhit()) // wenn Taste gedrückt wird { Key = getch(); // Taste sofort auswerten, ohne auf Eingabe } // zu warten switch (Key) // Tastenfunktion zuweisen { case 'w': snake_pos_y--; break; // hoch case 'a': snake_pos_x--; break; // links case 's': snake_pos_y++; break; // runter case 'd': snake_pos_x++; break; // rechts } clrscr(); // Randbegrenzung: set_pos_x = snake_pos_x; // LINKS <------> RECHTS if(snake_pos_x == 81) // wenn Schlange den rechten Rand erreicht, { // wird die pos_x auf 1 gesetz, d.h. sie set_pos_x = 1; // erscheint gegenüber auf der rechten Seite. } if (snake_pos_x == 0) // wenn Schlange den linken Rand erreicht, { // wird die pos_x auf 79 gesetz, d.h. sie set_pos_x = 80; // erscheint gegenüber auf der linken Seite. } snake_pos_x=set_pos_x; // set_pos_x übergibt den geänderten Wert // Randbegrenzung: set_pos_y=snake_pos_y; // OBEN <------> UNTEN if (snake_pos_y == 20) // wenn Schlange den unteren Rand erreicht, { // wird die pos_y auf 1 gesetz, d.h. sie set_pos_y = 1; // erscheint gegenüber auf der oberen Seite. } if (snake_pos_y == 0) // wenn Schlange den oberen Rand erreicht, { // wird die pos_y auf 20 gesetz, d.h. sie set_pos_y = 20; // erscheint gegenüber auf der unteren Seite. } snake_pos_y=set_pos_y; // set_pos_y übergibt den geänderten Wert // Beute Gefunden?! if (snake_pos_x==creep_pos_x) // Ist pos_x der Schlange gleich { // der pos_x der Beute ... UND ... if (snake_pos_y==creep_pos_y) // Ist pos_y der Schlange gleich { // der pos_y der Beute creep_pos_x=0; // Setze die pos_x und pos_y der creep_pos_y=0; // Beute auf 0 Beep(950,40); // Gib kurz einen BeepTon aus Score += 10; if(Score % 100 == 0) { Level += 1; } randomize(); // Initialisiere Zufallsgenerator if (creep_pos_x==0) // wenn pos_x der Beute 0 ist { // gib eine zufällige Zahl für creep_pos_x=random(79); // pos_x der Beute aus (Zahl zw. 0-79) } if (creep_pos_y==0) // wenn pos_y der Beute 0 ist { // gib eine zufällige Zahl für creep_pos_y=random(19); // pos_y der Beute aus (Zahl zw. 0-19) } // Neue Beute setzen End } } // Beute finden End } // Kb.Abfrage End }
guckt mal bitte ich weiss kein rat wie ich die schlange verlaengern koennte, thanx
mfg, Sn4k3
-
Hallo,
Logiklösungen sind immer die besten.
Ich würde erstens die Länge der Schlange in einer Variable festhalten. Wenn man ein Obst einsammelt, dann wird dieser Wert x += 1.
Du speicherst immer die Coordinaten der Schlange + 1 (hinten).
if(ObstToken){ print(das schlangenende,pos curSnake - 1);}
Ich hoffe das hilft dir
MFG winexec*
-
Sn4k3 schrieb:
das ERST: nach einer gewissen zeit wenn ich des obst oder so eingesammelt habe bleibt die am schlangenkopf haengen also es einfach hinten dran gehaengt und erscheint nicht neu auf dem screen(es ist immer unterschiedlich wann das obst aufeinmal da haften bleibt)
wieso???bei mir spielt es sich nach kleinem umbau hervorragend..
meines erachtens haus du das obst einfach raus.. ich nutze statt der borland funktionalität mal die standardbibiothek und mache die initialisierung mit srand, und die zufallszahl mit rand.
ich vermute (nur eine vermutung), du vergisst, dass die konsole bei 1 beginnt, und nicht bei 0, und damit hängt dein obst im nirvana nicht sichtbar.ich setze deshalb rand % 19 +1, also von 1 bis 20, im notfall verkleiner den bereich, aber lass es nicht rausspringen..
srand(time(0)); // Initialisiere Zufallsgenerator if (creep_pos_x==0) // wenn pos_x der Beute 0 ist { // gib eine zufällige Zahl für creep_pos_x=rand()%79+1; // pos_x der Beute aus (Zahl zw. 0-79) } if (creep_pos_y==0) // wenn pos_y der Beute 0 ist { // gib eine zufällige Zahl für creep_pos_y=rand() %19+1; // pos_y der Beute aus (Zahl zw. 0-19) } // Neue Beute setzen End
ps: wieso obst, ich dachte, es wären mäuse. o.ä.
-
elise schrieb:
ps: wieso obst, ich dachte, es wären mäuse. o.ä.
Sind halt vegetarische Schlangen.
-
hmm... habs nnun seit dem letzten post versucht , aber ich bekomms irgendwie nicht hin mit dem wachsen der schlangeee... hmmpff... koenntemit nicht jemand zeigen wies geht???
-
please sagt wat....
-
Hallo,
Ich kann dir das Spiel programmieren, aber nicht jetzt. Mal sehen, vielleicht komm ich die nächsten drei Tage dazu.
MFG winexec*
-
hin win... ist zwar lieb von dir und ich weiss eigentlich sollte ich nACH KOMPleten codes fragen.... und es ist ja auch super des ihr mir immer so die beispiele gebt nur kann ich da meistens nix mit anfangen wenn ihr mir nur schreibt if(...) ... und dann so und dies und des ist fuer mich als neuling noch etwas krass. aber wenn du ich oder ne mail hast koennte ich dir ja mal mein code geben und du sagst mir dann wo und wie ich diese funktion mit schlangen kolision und verlängern hin schreiben muss... des waer kool... also evtl schaust duu ja hier noch mal rein und sagst wat zu mein vorshclag...
mfg Sn4ke
-
oder icq waere noch besser !
-
Hallo,
Ich mag IM nicht so. Poste einmal deine E-Mail.
MFG winexec*
-
naja ich hab hier noch meinen alten snake-code in C ( schlechtes C )
war nen alten schulprojekt.http://www.lo-net.de/fileexchange/47180/1551334/snake-v0.3.c
bittö
-
wenn du MSV benutzt musste warscheinlich
clrscr();
durch
system("cls");
oder noch schlechteres ersetzen^^
-
meine mail SteahlZ@web.de
-
Interessant in dem oben verlinkten Code ist vor allem die Schreibweise des Essens... Will die Schlange laufen lernen?
-
-
hmmm kann mir sonst keiner weiter mit meinen problem helfen ???? ich möchte doch nur des sie waecchst und bei selbst beruehung des prog endet