Probleme beim einbinden von headern
-
Hi, habe einige Beispiele gefunden und auf meines angewandt, kann aber den Fehler nicht finden. Bestimmt nur was kleines, bekomme immer den Fehler Schachbrett not declaratet in the scope...
Schachbrett.h
#include <iostream> using namespace std; #define MARK (0x08) //*******************Schachbrett************************************************************************************************************************************************ class SchachBrett{ private: //0-2. Figuren Typ /* Leer=000 Bauer=001 Turm=010 Springer=011 Läufer=100 Dame=101 König=110 */ //3.Bit Mauschaft 1=Schwarz char spieler;//Wer gerade dran ist //7.Bit Markierung für mögliche Felder char Brett[64];//Brett char Brettp[64];//Pseudobrett char ges[13];//geschlagene Units(0-5:weiß 6:frei 7-12:schwarz)(Bauer,Turm,Springer,Läufer,Dame,König)(theoretisch sind 5,6,12 nie benutzt) char aktiv;//welches Feld ausgewählt wurde int marki(int *sch,int aus,int auso); int Schach(int spieler,char Brett[64]); int Schachmat(int spieler,char Brett[64]); int felderMarkieren(int aus,int sch,char Brett[64],int spieler); void set(int aus,char Brett[64]); public: SchachBrett(); void auswahl(int aus); char get(int aus); void reset(); int wahl(); };Schachbrett.cpp
#include <iostream> #include "adt.h" using namespace std; #define MARK (0x08) int SchachBrett::marki(int *sch,int aus,int auso){ ... } int SchachBrett::Schach(int spieler,char Brett[64]){ ... } int SchachBrett::Schachmat(int spieler,char Brett[64]){ ... } int SchachBrett::felderMarkieren(int aus,int sch,char Brett[64],int spieler){ ... } void SchachBrett::set(int aus,char Brett[64]){ ... } public: SchachBrett::SchachBrett(){ ... }; void SchachBrett::auswahl(int aus){ ... } char SchachBrett::get(int aus){ ... } void SchachBrett::reset(){ ... } int SchachBrett::wahl(){return 5;}//Wahl (derzeit konstant auf Dame)und die main.cpp
#include <iostream> #include "adt.h" #include <stdlib.h> #include <stdio.h> #ifdef __APPLE__ #include <OpenGL/OpenGL.h> #include <GLUT/glut.h> #else #include <windows.h> #include <GL/glut.h> #endif using namespace std; float _angle = 0; //The rotation of the box int spieler=0; int breite=100,hoehe=100; int collison(int x_mouse, int y_mouse){ double aspect = double(breite)/double(hoehe); int window_y = (hoehe-y_mouse) - hoehe/2; double norm_y = double(window_y)/double(hoehe/2); int window_x = x_mouse - breite/2; double norm_x = double(window_x)/double(breite/2); printf("%d # %d\n",window_y,window_x); float y = 20 * norm_y; float x = 20 * aspect * norm_x; printf("%f %f\n",y,x); int i=0; while(i*2.4<breite){ if(2.4*i<x && 2.4*(1+i)>=x){ printf("x:%d ",i+5); break; } if(-2.4*i>x && -2.4*(1+i)<=x){ printf("x:%d ",-i+4); break; } i++; } i=0; while(i*2.4<hoehe){ if(2.4*i<y && 2.4*(1+i)>=y){ printf("y:%d \n",i+5); break; } if(-2.4*i>y && -2.4*(1+i)<=y){ printf("y:%d \n",-i+4); break; } i++; } return -1; } //Für die Tastatur und für die Sondertasten auserhalb ascii void handleKeypress(unsigned char key, int x, int y) { //The current mouse coordinates printf("%d\n",key); switch (key) { default: printf("%d\n",key);break; case 27: exit(0); //Exit the program by ESC } } void processSpecialKeys(int key, int x, int y) { switch(key) { case GLUT_KEY_LEFT : break; case GLUT_KEY_RIGHT : break; case GLUT_KEY_UP : break; case GLUT_KEY_DOWN : break; } } //Maus void MeineMausTasten(int button, int state, int x, int y){ if(state== GLUT_DOWN){ switch(button) { case GLUT_LEFT_BUTTON : printf("left"); spieler=(spieler+1)%2; break; case GLUT_MIDDLE_BUTTON : // printf("middel"); printf("%d %d\n",x,y); break; case GLUT_RIGHT_BUTTON : //printf("right"); //printf("%d %d\n",x,y); collison(x,y); break; } } } void initRendering() { glEnable(GL_DEPTH_TEST); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glEnable(GL_NORMALIZE); glEnable(GL_COLOR_MATERIAL); glClearColor(0.7f, 0.9f, 1.0f, 1.0f); //Change the background to sky blue } void handleResize(int w, int h) { breite=w,hoehe=h; if(w<h) h=w; else w=h; glViewport(0, 0, w, h); breite=w; hoehe=h; glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45.0,1, 1.0, 200.0); //if(w<h) gluPerspective(45.0, (float)h/ (float)w, 1.0, 200.0); //else gluPerspective(45.0, (float)h / (float)w, 1.0, 200.0); } //Draws the 3D scene void drawScene() { float kleinesQuadrat = 1.0f,grosesQuadrat = kleinesQuadrat*8.0f+2.0f; //Letztes Blatt löschen glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); //Transformation glTranslatef(0.0f, 0.0f, -20.0f); //Licht setzen GLfloat ambientLight[] = {1.0f, 1.0f, 1.0f, 1.0f}; glLightModelfv(GL_LIGHT_MODEL_AMBIENT, ambientLight); //GLfloat lightColor[] = {1.0f, 1.0f, 1.0f, 1.0f}; //GLfloat lightPos[] = {-4 * kleinesQuadrat, -4*kleinesQuadrat, 0, 1.0f}; //glLightfv(GL_LIGHT0, GL_DIFFUSE, lightColor); //glLightfv(GL_LIGHT0, GL_POSITION, lightPos); glRotatef(-_angle, 0.0f, 0.0f, 1.0f); glBegin(GL_QUADS); //Brett glColor3f(0.1f,0.75f,0.3f); for(int x=0;x<4;x++){glVertex3f(((x+2)/4)*grosesQuadrat-kleinesQuadrat*4-1,(((x+1)/2)%2)*grosesQuadrat-kleinesQuadrat*4-1,-0.1);} //Kästchen int Farbe; glNormal3f(0.0, 1.0f, 0.0f); for(int y=0;y<8;y++){ for(int x=0;x<32;x++){ Farbe=(int)((((x)/4)%2+y)%2); if(Farbe==0){glColor3f(0.8f,0.75f,0.7f);} else {glColor3f(0.3,0.3,0.25);} glVertex3f((x+2)/4-kleinesQuadrat*4,((x+1)/2)%2+y-kleinesQuadrat*4,0); } } glEnd(); glutSwapBuffers(); } void update(int value) { ... } int main(int argc, char** argv) { Schachbrett *Brett;//######################Hier der Fehler Brett=new SchachBrett(); glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowSize(1000, 1000); glutCreateWindow("Unser Schach Programm v.1"); initRendering(); glutDisplayFunc(drawScene); glutReshapeFunc(handleResize); glutKeyboardFunc(handleKeypress); glutSpecialFunc(processSpecialKeys); glutMouseFunc(MeineMausTasten); glutTimerFunc(25, update, 0); glutMainLoop(); return 0; }Ist mein erstes OpenGl Projekt und auch das erste im Teamwork, der Code ist also noch ne Optimal, Fehler tauscht immer in der Zeile wo ich ein Objekt der class Schachbrett machen will auf
Danke für eure Hilfe
-
Seppel4 schrieb:
der Code ist also noch ne Optimal
Oh ja!
Du inkludierst doch niergens schachbrett.h
-
mein Fehler adt.h und adt.cpp
so schlimm? ich habe doch aus Beispielen den Code stark übernommen
-
Seppel4 schrieb:
mein Fehler adt.h und adt.cpp
so schlimm? ich habe doch aus Beispielen den Code stark übernommen
haha^^ coole frage.
Ja das ist schlimm...
ein computer macht genau das was er machen soll, und denkt sich nicht: mh vielleicht meint der depp vor mir ja die andere datei...
-
ja ne is klar, die Frage
so schlimm? ich habe doch aus Beispielen den Code stark übernommen bezog sich
nicht auf den Fehler das die Datein anders heißen als wie ich es gepostet habe sondern zur qualität des Codes bezüglich der aussage von Jockelx.
also die Datein heißen adt.c und adt.cpp
die klasse heißt schachbrett
-
Nein, so schlimm auch nicht.
Die printf's sind doof und das using im Header auch.
Und das Schachbrett *Brett; statt Schachbrett Brett.Hier hast du übrigens Schachbrett statt Schach B rett geschrieben.
Im Orginal auch?Edit: int* in Funktionssignaturen sind auch eher die Ausnahme.
Tut da nicht eine Referenz?Edit2: Unnötige globale Variablen
-
Die printf's sind doof und das using im Header auch.
--> ja die kommen noch weg
Und das Schachbrett Brett; statt Schachbrett Brett.
-->ok
Hier hast du übrigens Schachbrett statt Schach B rett geschrieben.
Im Orginal auch?
--> das war der Fehler, wusste doch das es was primitives war
Edit: int in Funktionssignaturen sind auch eher die Ausnahme.
Tut da nicht eine Referenz?
--> Jetzt musst du mir mal beim suchen helfen, wo genau?Edit2: Unnötige globale Variablen
--> noch was was weg kommen wirdDanke für deine Hilfe
-
Bei
int SchachBrett::marki(int *sch,int aus,int auso)Dazu dann noch ein Punkt: Nichts sagende Variablennamen wie 'sch'
-
die var namen hat mein Kolege gemacht, da dies eine Teamarbeit ist, was die variablen angeht sag ich das ihm auch immer, aber er findet elemente b vom Struct bb immer toll