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


Anmelden zum Antworten