problem array und zahlen grafisch umzusetzen
-
hi!
ich bin gerade dabei othello/reversi zu programmieren, allerdings bin ich vor ein paar tagen auf ein problem gestoßen.
den ablauf des spiels hab ich soweit fertig, allerdings möchte ich die chips und das feld grafisch darstellen und nicht durch 1en und 2en.
hierbei steht 1 für weiß, 2 für schwarz und 0 für leer/unbesetzt.für das spiel habe ich ein 2dim. array erstellt, wo entweder nun 0,1 oder 2 drinstehen.
nun zu meinem problem: wie kann ich einem arrayfeld das jeweilige gezeichnete kästchen zuteilen und sagen, dass wenn z.b. dort eine 1 enthalten ist, er einen weißen kreis zeichnen soll?
ich bin am verzweifeln, habe schon mehrere foren abgesucht, bin aber nicht fündig geworden bzw. habe es vielleicht nicht erkannt als die lösung meiner probleme...ich bitte um hilfe! :|
hier mein quellcode, wobei ich void main() etc. mal weglasse ^^
int feld[8][8], x, y, p1, p2, c, u, zug, n_zug, ok, zwischen; char key; p1=1; p2=2; zug=p1; n_zug=p2; ok=0; pruef=0; for (y=0;y<=7;y++) for (x=0;x<=7;x++) //feld auf 0 setzen feld[y][x]=0; feld[3][3]=p1; feld[3][4]=p2; //startaufstellung, 1=w, 2=sw feld[4][3]=p2; feld[4][4]=p1; ///////START////////// x=0; y=0; //startposition u=y; c=x; while(pruef<=64) //solange felder uebrig sind { while(ok==0) //solange kein gueltiger zug, nicht ok { while(key!=0x0D) //ENTER { if((key==0x48)&&(x!=0)) //hoch y--; if((key==0x50)&&(x!=8)) //runter y++; if((key==0x4B)&&(y!=0)) //links x--; if((key==0x4D)&&(y!=8)) //rechts x++; } //ende enter if((key==0x0D)&&(feld[y][x]==0)) //platz nicht belegt { u=y; c=x; if(feld[u-1][c]==n_zug) //nach oben gueltig { do { u--; }while(feld[u][c]==n_zug); //geht solange nach oben wie gegnerplaettchen liegt if(feld[u][c]==zug) //eigenes plaettchen { ok=1; for(u;u<y;u++) feld[u][c]=zug; //gegnerplaettchen werden umgedreht } } //ende oben u=y; c=x; elseif(feld[u+1][c]==n_zug) //nach unten do { u++; }while(feld[u][c]==n_zug); //geht solange nach unten wie gegnerplaettchen liegt if(feld[u][c]==zug) //eigenes plaettchen { ok=1; for(u;u>y;u--) feld[u][c]=zug; //gegnerplaettchen werden umgedreht } } //ende unten u=y; c=x; elseif(feld[u][c-1]==n_zug) //nach links do { c--; }while(feld[u][c]==n_zug); //geht solange nach links wie gegnerplaettchen liegt if(feld[u][c]==zug) //eigenes plaettchen { ok=1; for(c;c<x;c++) feld[u][c]=zug; //gegnerplaettchen werden umgedreht } } //ende links u=y; c=x; elseif(feld[u][c+1]==n_zug) //nach rechts do { c++; }while(feld[u][c]==n_zug); //geht solange nach rechts wie gegnerplaettchen liegt if(feld[u][c]==zug) //eigenes plaettchen { ok=1; for(c;c>x;c--) feld[u][c]=zug; //gegnerplaettchen werden umgedreht } } //ende rechts else ok=0; } //ende platz nicht belegt else //platz belegt ok=0; } //ende ok zwischen=zug; zug=n_zug; //2.spieler ist dran n_zug=zwischen; for (y=0;y<=7;y++) for (x=0;x<=7;x++) //besetzte felder zaehlen if(feld[y][x]!=0) pruef++; } //ende pruefung
mfg pio
-
mit c++ allein wirst da keine grafik programmieren können..
da muss dann ne grafik api ran. allegro beispielsweise oder die SDL