Snake



  • Dieser Code sollte, wenn man ihn in die Entwicklungsumgebung kopiert ohne weiteres starten. Der Code ist nur ein kleiner Ausschnitt des gesamten Projekts und soll das Problem mit den kurzzeitigen Löchern veranschaulichen, wenn man es startet.

    Im Gesamten funktioniert alles, nur bei der Richtungsänderung kommt es meistens zu Löchern die aber wieder verschwinden und das soll ja nicht sein. Möchte nur gerne wissen mit was das zusammenhängt, bzw. was geändert werden muss.

    mfg



  • hab das gerade mal durch den vc++2010 gejagt, scheinbar erlaubt der utf-8 *kotz*

    void Haupt(int iSchlangeX[], int iSchlangeY[], int &iGroeßeSchlange){ 
    
        int dir = 0; 
    
        int iKopfX = iSchlangeX[0]; 
        int iKopfY = iSchlangeY[0];
        int iZaehlerD = 0; 
        int iZaehler = 0; 
    
        StartSchlange(iSchlangeX, iSchlangeY, &iGroeßeSchlange); 
        while(1){ 
            iZaehler++;
    		switch(dir){
    		case 0:
    			iSchlangeX[iGroeßeSchlange-iZaehler]=--iKopfX; 
                iSchlangeY[iGroeßeSchlange-iZaehler]=iKopfY;
    		break;
    		case 1:
    			iSchlangeX[iGroeßeSchlange-iZaehler]=++iKopfX; 
                iSchlangeY[iGroeßeSchlange-iZaehler]=iKopfY;
    		break;
    		case 2:
    			iSchlangeX[iGroeßeSchlange-iZaehler]=iKopfX; 
                iSchlangeY[iGroeßeSchlange-iZaehler]=--iKopfY;
    		break;
    		case 3:
    			iSchlangeX[iGroeßeSchlange-iZaehler]=iKopfX; 
                iSchlangeY[iGroeßeSchlange-iZaehler]=++iKopfY;
    		break;
    		}
    		if(iZaehler==iGroeßeSchlange)
    		        iZaehler=0; 
    
    		if(iZaehlerD++>21){
    			if(iZaehlerD>27)
    				iZaehlerD=0;
                dir = 1;
    		}else if(iZaehlerD++>14)
    			dir = 2;
    		else if(iZaehlerD++>7)
    			dir = 0;
    		else
    			dir = 3;
    
    		Sleep(500); 
            clrscr(); 
            ZeichneSchlange(iSchlangeX, iSchlangeY, iGroeßeSchlange, iKopfX, iKopfY); 
            } 
    }
    

    lg lolo



  • was ist utf-8???

    mfg



  • void _tmain(){

    char *中華人民共和 = "utf-8 in source sucks";

    cout << 中華人民共和;
    }

    ______________________
    und wie gut ist dein chinesisch 😉



  • gehörte wieder mal aufpoliert



  • noobLolo schrieb:

    void _tmain(){

    char *中華人民共和 = "utf-8 in source sucks";

    cout << 中華人民共和;
    }

    ______________________
    und wie gut ist dein chinesisch 😉

    das wär doch mal was für den "International Obfuscated C Code Contest" 😃



  • thx, funktioniert, muss noch schauen was du anders gemacht hast



  • franz-21 schrieb:

    thx, funktioniert, muss noch schauen was du anders gemacht hast

    glaub der haupt fehler war iZaehlerH und iZaehlerV die ich zusammengefasst hab zu iZaehler

    warum hast da eigentlich "ae" statt "ä" war das ne göttliche eingebung 😉



  • lol, ne, Umlaute sollte man ja nicht benutzen beim Programmieren, oder?!?!?

    mfg


  • Mod

    noobLolo schrieb:

    und wie gut ist dein chinesisch 😉

    中華人民共和
    In Porzellan Leute Porzellan total und!
    Besser bekannt als Volksrepublik China.



  • wollts nicht unbeding nochmal ausgraben, aber hatte gestern noch so eine idee die ich euch nich vorenthalten wollte

    void Haupt(int iSchlangeX[], int iSchlangeY[], int &iGroeßeSchlange){
    
        int dir = 0;
    
        int iKopfX = iSchlangeX[0];
        int iKopfY = iSchlangeY[0];
        int iZaehlerD = 0;
        int iZaehler = 0;
    
        StartSchlange(iSchlangeX, iSchlangeY, &iGroeßeSchlange);
        while(1){
            iZaehler++;
    
            switch(dir){
            case 0:
                iKopfX--;
            break;
            case 1:
                iKopfX++;
            break;
            case 2:
                iKopfY--;
            break;
            case 3:
                iKopfY++;
            break;
            }
            iSchlangeX[iGroeßeSchlange-iZaehler]=iKopfX;
            iSchlangeY[iGroeßeSchlange-iZaehler]=iKopfY;
    
            if(iZaehler==iGroeßeSchlange)
                    iZaehler=0;
    
            if(iZaehlerD++>21){
                if(iZaehlerD>27)
                    iZaehlerD=0;
                dir = 1;
            }else if(iZaehlerD++>14)
                dir = 2;
            else if(iZaehlerD++>7)
                dir = 0;
            else
                dir = 3;
    
            Sleep(500);
            clrscr();
            ZeichneSchlange(iSchlangeX, iSchlangeY, iGroeßeSchlange, iKopfX, iKopfY);
            }
    }
    

    aber schlimmer gehts immer;)


Anmelden zum Antworten