Snake
-
jetzt bringt mir der Compiler schon weniger Fehlermeldungen raus
gibt aber immernoch einigewir koennen deine fehlermeldungen natuerlich nur nachvollziehen, wenn du auch die zeilennummer mit angibst, oder die entsprechende zeile mit dazu schreibst.
ich denke aber dein problem ist folgendes:
du hast ein zweidimensionales array spielfeld, in dem du fuer jede zeile/spalte speichern moechtest, ob die schlange dort schon war, indem du im spielfeld die aktuelle orientierung oben/unten/rechts/links speicherst.
nun ist jedes feld des spielfelds aber vom typ rechteck, beinhaltet also die koordinaten (oben links, unten rechts) die ein feld auf dem bildschirm belegt.
eigentlich ist diese information fuer dich egal, denn deine schlange bewegt sich sowieso immer nur um ein spielfeld weiter.
aendere also einfach den typ des spielfelds von rechteck in int und dein programm muesste schon viel mehr das tun, was du eigentlich willst...
-
shinaia schrieb:
binary '=' : no operator found which takes a right-hand operand of type 'int' (or there is no acceptable conversion)
bei dir bedeutet dass zu 90% einen gleiche fehler wie bei
snake.[unten oder oben]= ...ist. das heisst, dass du keiner ganzen struktur einen einzelnen wert zuweisen kannst. also mal genauer:
beistruct someStruct { int a,b,c; }und
struct someStruct meine_struct; meine_struct=1;versucht der compiler der strukturvariable meine_struct den wert 1 zuzuweisen. jetzt merkt er: "hui, meine_struct is ja keine eindeutige variable, sondern ein gebilde aus variablen, in welcher 3 elemente (a,b,c) sind, wo pack ich jetzt die 1 hin?" ergebnis: fehler.
daher dann so:
meine_struct.a=1; meine_struct.b=1; meine_struct.c=1;.
was du versuchst ist in etwa so, als würdest du versuchen die eingekauften nahrungsmittel aus dem supermarkt deiner wohnung zuzuweisen, wo sie dann vergammeln, weil dein haus nicht automatisch auch für den kühlschrank steht.mfg
-
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.
