Array und vergleich Probleme glaube ich :)



  • Hallo

    Ich probiere mich derzeit wieder in Allegro ich weiß nicht viele können es aber derzeit hat es noch wenig mit allegro zu tun.

    Scheinbar wird das Array mit der Zahl nicht richitg verglichen und ich weiß nicht wieso.

    #include <allegro.h>
    
    const int MAP_W = 10;
    const int MAP_H = 4;
    const int TILE_W = 30;
    const int TILE_H = 30;
    BITMAP *doubleBuffer ;
    char karte[MAP_H*MAP_W] = 
    "xxxxxxxxxx"
    "xyyyyyyyyx"
    "xxxxxxxxxx"
    ;
    
    int main() {   
    
    	int pos=0;
    	for(int y=0;y<MAP_H;++y){
    		for(int x=0;x<MAP_W;++x){
    
    			int nummer = karte[x*y];
    
    			if(nummer =2){
    			blit(stein,screen,0,0,x*TILE_W,y*TILE_H,stein->w,stein->h);
    
    			}
    			if(nummer =1){
    				blit(gras,screen,0,0,x*TILE_W,y*TILE_H,gras->w,gras->h);
    			}
    
    		}
    	}
    
    	while(!keypressed());
    
    return 0;
    
    } END_OF_MAIN()
    

    ein paar unwichte sachen habe ich raus gelöscht. Also wie oben geschrieben in der if schleife wird nicht richitg verglichen es rutscht immer durch auch wenn es nicht wahr ist.

    BIn für jede Hlfe dankbar



  • if(nummer = 2){ // Zuweisung
    
    if(nummer == 2){ // Vergleich
    

    Kurt



  • Beim vergleichen brauchst du

    if(nummer == 2)
    

    und nicht

    if(nummer = 2)
    

    Edit: Da war ich wohl zu langsamm.



  • das habe ich mir auch so gedacht doch leider wird dann gar nix mehr angezeigt. Könnte auch sein das das array gar kein von den beiden zahlen zurück gibt?



  • Jens Bond schrieb:

    das habe ich mir auch so gedacht doch leider wird dann gar nix mehr angezeigt. Könnte auch sein das das array gar kein von den beiden zahlen zurück gibt?

    Ja da hast du recht. nummer ist immer 'x' oder 'y' ( bei deiner indizierung auch noch irgendwas zufälliges ).
    denke es sollte wahrscheinlich so irgendwie sein

    int nummer = karte[x+y*MAP_W];
    

    Kurt



  • Erstmal haut die Positionsberechnung in der Karte nicht ganz hin - du bräuchtest

    nummer=karte[x+y*MAP_W];
    

    und zweitens passen deine Vergleichswerte nicht ganz zu dem, was in der Karte drinsteht ('nummer' bekommt den ASCII-Wert der Kartenzeichen, der im Bereich 120 ('x') bis 122 ('z') liegt - da ergibt ein Vergleich mit 1 oder 2 garantiert falsch.


Anmelden zum Antworten