Snake
-
nur so neben bei, in welche schule gehst du ???
-
joa das hab ich mittlerweile geändert ^^ und das Programm allgemein ziemlich umgeschrieben ... mit etwas Hilfe
es hapert dabei aber noch an so einigen Stellen -.- Zeile 96 ist ein gutes Beispiel *g*.Na ja ich mache eine technische Ausbildung, und da gehört auch Programmieren zu. Ich bin eher jemand, der die Hardware bevorzugt ><.
#include <stdlib.h> #include <time.h> #include "graphics.h" #define SCREEN_X 800 #define SCREEN_Y 600 #define BGCOLOR WHITE #define FGCOLOR BLUE #define FUTTER YELLOW #define SCHL_TOT BLACK #define SCHLANGE CYAN #define SCHLAFZEIT 50 #define MAX_GLIEDER 10 #define LAENG 10 #define BREIT 10 #define SPALT SCREEN_X/LAENG #define ZEIL SCREEN_Y/BREIT //Punkt struct Punkt { int x,y; }; //Rechteck struct Rechteck { struct Punkt oben; struct Punkt unten; }; struct Koord{ int zeile; int spalte; }; //Schlange struct Snake { int Farbe; int anzglieder; struct Rechteck Glieder[MAX_GLIEDER]; }; int main(int argc, char*argv[], char**envp) { struct Rechteck Kopf; struct Rechteck Kopfn; struct Snake Schlange; struct Rechteck Futter; struct Rechteck Spielfeld[SPALT][ZEIL]; struct Punkt Richtung = {0,0}; // Richtungsvektor int Ende = 0; // Endekennung int taste; int i, spalt, zeil, schx,schy, fux, fuy; // Grafikmous initialisieren initgraph(SCREEN_X, SCREEN_Y); // Zeichenflaeche in der Hintergrundfarbe fuellen cleardevice(BGCOLOR); //Spielfeld in Rechtecke teilen for (zeil=0;zeil<ZEIL;zeil++) { for (spalt=0;spalt<SPALT;spalt++) { Spielfeld [spalt][zeil].oben.x=spalt*LAENG; Spielfeld [spalt][zeil].oben.y=zeil*BREIT; Spielfeld [spalt][zeil].unten.x=((spalt+1)*LAENG)-1; Spielfeld [spalt][zeil].unten.y=((zeil+1)*BREIT)-1; } } //Schlange setzen srand((unsigned int)time(NULL)); //Zufallsgenerator starten schx = rand() % SPALT; schy = rand() % ZEIL; Kopf=Spielfeld [schx][schy]; Schlange.Glieder[0]=Spielfeld[schx][schy]; // Schlange ausmalen setfillstyle(SOLID_FILL,SCHLANGE); bar(Kopf.oben.x, Kopf.oben.y,Kopf.unten.x, Kopf.unten.y); //Futter setzen do { fux = rand() % SPALT; fuy = rand() % ZEIL; Futter= Spielfeld [fux][fuy]; } while (Futter.oben.x==Schlange.Glieder.oben.x)&&(Futter.oben.y==Schlange.Glieder.oben.y)&&(Futter.unten.x==Schlange.Glieder.unten.x)&&(Futter.unten.x==Schlange.Glieder.unten.y)); //Futter ausmalen setfillstyle(SOLID_FILL,FUTTER); bar(Snake.oben.x, Snake.oben.y, Snake.unten.x, Snake.unten.y); while (!Ende)//solange Futter nicht gefunden { //Auf Eingabe ueberpruefen if (kbhit()) { taste=getch(); //wenn ja, Richtungsvektor setzen, 180° Wechsel nicht zulassen switch(taste) { case Key_Left: if (Richtung.x==0) { Richtung.x=-1; Richtung.y=0; } break; case Key_Right: if (Richtung.x==0) { Richtung.x=1; Richtung.y=0; } break; case Key_Up: if (Richtung.y==0) { Richtung.x=0; Richtung.y=-1; } break; case Key_Down: if (Richtung.y==0) { Richtung.x=0; Richtung.y=1; } break; case Key_Escape: // Programmende Ende=1; break; } } // neue Kopfposition berechnen schx=schx+ Richtung.x; schy=schy + Richtung.y; kopfn = spielfeld[schx][schy]; //Kopf=Futter if((Kopf.oben.x == Futter.oben.x) && (Kopf.oben.y == Futter.oben.y)) { //neuen Kopf uebergeben + Kopf zeichnen Kopf=Schlange.Glieder[0]=Kopfn; setfillstyle(SOLID_FILL, SCHLANGE); bar(Kopfn.oben.x,Kopfn.oben.y,Kopfn.unten.x,Kopfn.unten.y); //Futterposition wird zum neuem Schlangenglied + Futterfarbe -> Schlangenfarbe Schlange.anzglieder++; Schlange.Glieder[Schlange.anzglieder]=Futter; //len setfillstyle(SOLID_FIll,FUTTER); bar(Futter.oben.x,Futter.oben.y,Futter.unten.x,Futter.unten.y); //Wenn anzahl der Glieder 10 if (Schlange.anzglieder==10) { Ende =1; } //neues Futter platzieren do { fux = rand() % SPALT; fuy = rand() % ZEIL; Futter= Spielfeld [fux][fuy]; } while((Futter.oben.x==Schlange.Glieder.oben.x)&&(Futter.oben.y==Schlange.Glieder.oben.y)&&(Futter.unten.x==Schlange.Glieder.unten.x)&&(Futter.unten.y==Schlange.Glieder.unten.y); //Futter zeichnen setfillstyle(SOLID_FIll,FUTTER); bar(Futter.oben.x,Futter.oben.y,Futter.unten.x,Futter.unten.y); } //Kopf ist .... // Hindernisse //Rand // X -Richtung if((Kopfn.oben.x>SCREEN_X)||(Kopfn.oben.x<0)) { Schlange.Farbe=SCHL_TOT; Ende=1; } // y -Richtung if((Kopfn.oben.y>SCREEN_Y)||(Kopfn.oben.y<0) { Schlange.Farbe=SCHL_TOT; Ende=1; } //gegen eigenen Schlangenkoerper for(i=1; i< Schlange.anzglieder;i++) { if ((Kopfn.oben.x=Schlange.Glieder.oben.x)&&(Kopfn.oben.y==Schlange.Glieder.oben.y)&&(Kopfn.unten.x==Schlange.Glieder.unten.x)&&(Kopfn.unten.y==Schlange.Glieder.unten.y); { Schlange.Farbe=SCHL_TOT; Ende =1; break; } } //sonst: Snake malen //Schwanz loeschen setfillstyle(SOLID_FILL, BGCOLOR); bar(Snake.Glieder[0].x,Snake.Glieder[0].y,Snake.Glieder[0].x +10,Snake.Glieder[0].y +10); //Kopf malen setfillstyle(SOLID_FILL, SCHLANGE); bar(Kopf.oben.x,Kopf.oben.y,Kopf.unten.x,Kopf.unten.y); // ein bisschen schlafen, damits nicht zu schnell wird delay(SCHLAFZEIT); // Grafikmodus beenden getch(); closegraph(); return 0; }
-
Interessante Story... f'`8k
Bye, TGGC (Das Eine, welches ist.)
-
TGGC schrieb:
Interessante Story... f'`8k
Bye, TGGC (Das Eine, welches ist.)
was bedeutet f'`8k ausgesprochen?
-
Was bedeutet (: ausgesprochen? f'`8k
Bye, TGGC (Das Eine, welches ist.)
-
-
TGGC hat doch selber keine Ahnung. :p
-
Nur keinen Neid. f'`8k
Bye, TGGC (Das Eine, welches ist.)
-
Neid darauf, dass du keine Ahnung hast? n^^ ~*'`' 64k
-
Ach, wenn es doch nur das wär... f'`8k
Bye, TGGC (Das Eine, welches ist.)
-
TGGC schrieb:
Was bedeutet (: ausgesprochen? f'`8k
Bye, TGGC (Das Eine, welches ist.)
das solln smiley sein? was soll das denn darstellen?
-
TGGC schrieb:
(BTW: Auf meiner Seite gibts auch 'nen Snake Source)
Willst Leute zum cheaten motivieren ...
-
C.Santa schrieb:
Neid darauf, dass du keine Ahnung hast? n^^ ~*'`' 64k
TGGC schrieb:
Ach, wenn es doch nur das wär... f'`8k
Hast du noch mehr Probleme auf die man "neidisch" sein kann?
Vielleicht auf das komische Foto auf der Homepage, oder das du ein schlechter Coder bist?
-
das hier ist zwar ein netter honeypott für tggc und seine streiter, aber sooo kilometerweit neben dem topic, dass es jetzt wirklich reicht.
