schiffe versenken



  • ich versuche das spiel schiffe versenken zu programmieren(in C). Doch heute morgen ist mir aufgefallen, das ich zwar schiffe auf die meisten koordinaten setzen kann, aber beim Buchstaben h ist das ganze immer um einen Kaste nach unten verschoben.

    Falls jemand Zeit hat könnte er mir vieleicht mal den Code durchgehen, wäre sehr dankbar dafür 😉

    um folgende funktionen gehts:

    // <-----------------------------------------------------------------------------------------
    
    void zweierschiff() {
    
    	int ykoor,feldnummer1,feldnummer1old=0,z=0;
    	char xkoor;
    
    	do{
    		do{
    		GoTo(1,40);
    		printf("Gib Koordinaten ein(2er Schiff)");
    		GoTo(17,41);
    		printf("    \n\n                               ");
    		GoTo(1,41);
    		printf("X/Y-Koordinate: ");
    		xkoor=getchar();
    		scanf("%i",&ykoor);
    		fflush(stdin);
    
    		GoTo(1,43);
    		if(!((toupper(xkoor)=='A'||toupper(xkoor)=='B'||toupper(xkoor)=='C'||toupper(xkoor)=='D'||toupper(xkoor)=='E'||toupper(xkoor)=='F'||toupper(xkoor)=='G'||toupper(xkoor)=='H')&&ykoor>0&&ykoor<9)) {
    		printf(">>Error! Ung%cltige Koordinaten",129);
    		getchar();
    		}
    
    		}while(!((toupper(xkoor)=='A'||toupper(xkoor)=='B'||toupper(xkoor)=='C'||toupper(xkoor)=='D'||toupper(xkoor)=='E'||toupper(xkoor)=='F'||toupper(xkoor)=='G'||toupper(xkoor)=='H')&&ykoor>0&&ykoor<9));
    
    	feldnummer1=umwandeln(xkoor,ykoor);
    
    	if(feldnummer1old==0) {
    
    		feld1[feldnummer1]=1;
    		schiffezeichnen_feld1();
    		feldnummer1old=feldnummer1;
    	}
    
    	else {
    
    		if(feldnummer1old-1==feldnummer1||feldnummer1old+1==feldnummer1||feldnummer1old-8==feldnummer1||feldnummer1old+8==feldnummer1) {
    
    			feld1[feldnummer1]=1;
    			schiffezeichnen_feld1();
    			z=1;
    				}
    
    		}
    
    	}while(z==0);
    
    }	
    
    // <-----------------------------------------------------------------------------------------
    
    int umwandeln(char xkoor, int ykoor) {
    
    	int cnt,feldnummer;     
    	char buchstabe[9];
    	int ziffer[8];
    
    	strcpy(buchstabe,"ABCDEFGH");
    
    	for(cnt=0;cnt<8;cnt++) {
    
    		ziffer[cnt]=cnt+1;
    		}
    
    	for(cnt=0;cnt<8;cnt++) {
    
    		if (buchstabe[cnt]==toupper(xkoor)) {
    			feldnummer=cnt+1;
    		}
    	}
    
    	for(cnt=0;cnt<8;cnt++) {
    
    			if (ziffer[cnt]==ykoor) {
    				feldnummer=feldnummer+(cnt*8);
    			}
    
    		}
    
    	return(feldnummer);						// Berechnet aus den Koordinaten die Feldnummer
    }
    
    // <-----------------------------------------------------------------------------------------
    
    void schiffezeichnen_feld1() {
    
    	int t;
    	int xkoor;
    	int ykoor;
    	int xvor;
    	int yvor;
    	int z=0;
    
    	for(t=1;t<65;t++) {
    
    		if(feld1[t]==1) {
    
    			yvor=t/8;
    			xvor=xkoordinate(t);
    
    			xkoor=3+(xvor*4);
    			ykoor=2+(yvor*3);
    
    			GoTo(xkoor,ykoor);
    			printf("X");
    		}
    	}
    
    }
    

    feld1 ist ein globales array

    ich hoffe das alles wichtige hier steht, sonst häng ich dann den gesamten code dran!

    Vielen Dank schon für jeden Tipp



  • Ich glaube, du hast mehr Glück, wenn du deine Code-Beispiele nochmal mit den entsprechenden Tags setzt.

    void main()
    {
    }
    

    Ansonsten ist mir das nämlich auch zu mühselig das zu lesen...

    Nichts für ungut.



  • hmm, wie kann ich das aus visual studio rauskopieren, damit man die tag sieht?



  • habs jetzt doch gefunden.. 😃


Anmelden zum Antworten