3 gewinnt

@relevation: es wandelt die 88 nicht um, in ein X. habe das es die zeichnung wiederholt, schnell eine variable definiert etwas. lösche sie nacher schon wieder, ist nur das du mal das programm siehst und vielleicht den fehler findest. thx


Code:
  #include <stdio.h>
void main()
{
	 
	 int zahl1=1;
	 int zahl2=2;
	 int zahl3=3;
	 int zahl4=4;
	 int zahl5=5;
	 int zahl6=6;
	 int zahl7=7;
	 int zahl8=8;
	 int zahl9=9;
	 int etwas=0;
	 
	 char spieler1[30];
	 char spieler2[30];
	 char buffer[5];
	 printf("Namen des Spieler 1: ");
	 scanf("%c", &spieler1);
	 fflush(stdin);
	 
	 printf("Namen des Spieler 2: ");
	 scanf("%c", &spieler2);
	 fflush(stdin);
	 while (etwas==0)
	 {	 
		 printf("\n ------- ------- ------- ");
		 printf("\n|	   |	   |	   |");
		 printf("\n|   %i   |   %i   |   %i   |", zahl1, zahl2, zahl3);
		 printf("\n|	   |	   |	   |");
		 printf("\n ------- ------- ------- ");
		 printf("\n|	   |	   |	   |");
		 printf("\n|   %i   |   %i   |   %i   |", zahl4, zahl5, zahl6);
		 printf("\n|	   |	   |	   |");
		 printf("\n ------- ------- ------- ");
		 printf("\n|	   |	   |	   |");
		 printf("\n|   %i   |   %i   |   %i   |", zahl7, zahl8, zahl9);
		 printf("\n|	   |	   |	   |");
		 printf("\n ------- ------- ------- ");
		 
		 
		 printf("Geben sie eine zahl ein: ");
		 scanf("%s", buffer); // Einlesen der Daten, AdressOf-Operator überflüssig da buffer char * ist
	
		 // Zuordnung der Werte
		 if(strcmp("1", buffer) == 0)
		 {
			zahl1 = 88; // ASCII-Code für X speichern
		 }
	 }  
	 getchar();
	 
}
 
@relevation: an Beispielen lernt man. ausserdem hab ich nicht gesagt dass das der Code dafur sein MUSS, nur son Beischpiel damit man vergleichen kann :p das dass ich ein schlechter Lehrer bin, wusste ich auch so ;)

@lz9c1j: dafur muss du in printf() nicht %i sondern %c nehmen
 
Hi,

@ PixelShader: lol ;)
Du hast jetzt aber auch einen Fehler gemacht: Das X wird zwar richtig angezeigt, jedoch die Zahlen nicht..... :)

Folgende Änderungen:

Definiere deine Variabeln zahl1 usw. als char (Muss nicht, ist hier aber sinnvoll.).
Weise ihnen die nicht die Zahlen sonder die Zeichn zu. Das erreichst du durch:
Code:
char zahl1 = '1';

Gruß
Johannes

PS: Vergiss nicht das
Code:
while (etwas==0)
;)
 
ahhhhhh. jetzt ist es klar. wusste nicht dass man int in %c machen darf. aber jetzt sehen die Zahlen 1-9 nicht mehr schoen aus. Weiss jemand gerade einen guten Link zur ASCI-Tabelle sonst gehe ich nämlich suchen
 
ah ist jetzt egal, da ich von einer homepage die asci-tabelle rauskopiert habe. also jetzt sollte ich gerade keine probleme haben und probiere einfach mal. danke für eure schnelle hilfe. werde vielleicht später nochmals fragen
 
ALSO (capslock) bin schon ein bisschen weitergekommen. jetzt habe ich wieder ein problem, dass ich manchmal einfach habe. trotz dem getchar(); geht mein Fenster nach dem Sieg einfach zu. Wieso? Kann mir das jemand sagen.


Code:
 #include <stdio.h>
void main()
{
	 
	 int zahl1=65;
	 int zahl2=66;
	 int zahl3=67;
	 int zahl4=68;
	 int zahl5=69;
	 int zahl6=70;
	 int zahl7=71;
	 int zahl8=72;
	 int zahl9=73;
	 int ablaufzahl=1;
	 char buffer[5];
	 printf("Willkommen beim Tic Tac Toe Game");

	 while (ablaufzahl==1)
	 {   
		 
		 printf("\n\nSpieler 1: x\n");
		 printf("Spieler 2: o\n\n");  
		 
		 
		 printf("\n ------- ------- ------- ");
		 printf("\n|	   |	   |	   |");
		 printf("\n|   %c   |   %c   |   %c   |", zahl1, zahl2, zahl3);
		 printf("\n|	   |	   |	   |");
		 printf("\n ------- ------- ------- ");
		 printf("\n|	   |	   |	   |");
		 printf("\n|   %c   |   %c   |   %c   |", zahl4, zahl5, zahl6);
		 printf("\n|	   |	   |	   |");
		 printf("\n ------- ------- ------- ");
		 printf("\n|	   |	   |	   |");
		 printf("\n|   %c   |   %c   |   %c   |", zahl7, zahl8, zahl9);
		 printf("\n|	   |	   |	   |");
		 printf("\n ------- ------- ------- ");
		 
		 
		 printf("\n\nSpieler 1 ist an der Reihe.Geben sie bitte einen Buchstaben ein: ");
		 scanf("%s", buffer); // Einlesen der Daten, AdressOf-Operator überflüssig da buffer char * ist
	
		 // Zuordnung der Werte
		 if(strcmp("A", buffer) == 0  && zahl1!=11 && zahl1!=120)
		   zahl1 = 120; // ASCII-Code für X speichern
		 if(strcmp("B", buffer) == 0  && zahl2!=11 && zahl2!=120)
		   zahl2 = 120; // ASCII-Code für X speichern
		   
		 if(strcmp("C", buffer) == 0  && zahl3!=11 && zahl3!=120)
		   zahl3 = 120; 
		   
		 if(strcmp("D", buffer) == 0  && zahl4!=11 && zahl4!=120)
		   zahl4 = 120;
		   
		 if(strcmp("E", buffer) == 0  && zahl5!=11 && zahl5!=120)
		   zahl5 = 120; 
		   
		 if(strcmp("F", buffer) == 0  && zahl6!=11 && zahl6!=120)
		   zahl6 = 120; 
		   
		 if(strcmp("G", buffer) == 0  && zahl7!=11 && zahl7!=120)
		   zahl7 = 120;   
		   
		 if(strcmp("H", buffer) == 0  && zahl8!=11 && zahl8!=120)
		   zahl8 = 120; 
		   
		 if(strcmp("I", buffer) == 0  && zahl9!=11 && zahl9!=120)
		   zahl9 = 120; 
			
		 if (zahl1==120 && zahl2==120 && zahl3==120)
		   ablaufzahl=2;
		   
		 if (zahl4==120 && zahl5==120 && zahl6==120)
		   ablaufzahl=2;
		   
		 if (zahl7==120 && zahl8==120 && zahl9==120)
		   ablaufzahl=2;
		   
		 if (zahl1==120 && zahl4==120 && zahl7==120)
		  ablaufzahl=2;
		   
		 if (zahl2==120 && zahl5==120 && zahl8==120)
		   ablaufzahl=2;  
		   
		 if (zahl3==120 && zahl6==120 && zahl9==120)
		   ablaufzahl=2;  
		   
		 if (zahl1==120 && zahl5==120 && zahl9==120)
		   ablaufzahl=2;
		   
		 if (zahl3==120 && zahl5==120 && zahl7==120)
		   ablaufzahl=2; 
	 } 
	 
	 if (ablaufzahl==2) 
	 {
	   printf("\n\n\nSpieler 1 hat das Spiel gewonnen");
	   
		 printf("\n\n\n ------- ------- ------- ");
		 printf("\n|	   |	   |	   |");
		 printf("\n|   %c   |   %c   |   %c   |", zahl1, zahl2, zahl3);
		 printf("\n|	   |	   |	   |");
		 printf("\n ------- ------- ------- ");
		 printf("\n|	   |	   |	   |");
		 printf("\n|   %c   |   %c   |   %c   |", zahl4, zahl5, zahl6);
		 printf("\n|	   |	   |	   |");
		 printf("\n ------- ------- ------- ");
		 printf("\n|	   |	   |	   |");
		 printf("\n|   %c   |   %c   |   %c   |", zahl7, zahl8, zahl9);
		 printf("\n|	   |	   |	   |");
		 printf("\n ------- ------- ------- ");
	   
	   printf("\n\n\nWollen Sie noch ein Spiel machen");
	 
	 }
	 
	 getchar();
	 
}
 
nach den letzten tippen in scanf() bleiben noch Tasturbefehle über, die warten bis so eine Funktion wie getchar() diese übernimmt. Beispiel, wenn Windows mal hängenbleibt, und du viele Tasten drückst, dann nach einiger Zeit weden diese Tasten einfach alle auf einmal wahrgenommen!
also, lösung lautet so:
Code:
fflush(stdin); // Tastaturbuffer löschen
getchar();
der Befehl fflush(stdin); löscht die Tastaturwarteschlange.
 
Zuletzt bearbeitet:
man wieso. jetzt funktioniert gar nichts mehr. also erster fehler ist, dass es nicht zum 2 spieler geht. und zweiter fehler ist das es nach dem sieg immernoch das fenster schliesst. wieso? bitte um hilfe

Code:
 #include <stdio.h>
void main()
{
	 
	 int zahl1=65;
	 int zahl2=66;
	 int zahl3=67;
	 int zahl4=68;
	 int zahl5=69;
	 int zahl6=70;
	 int zahl7=71;
	 int zahl8=72;
	 int zahl9=73;
	 int ablaufzahl=1;
	 char buffer[5];
	 printf("Willkommen beim Tic Tac Toe Game");

	 while (ablaufzahl==1)
	 {   
		 
		 printf("\n\nSpieler 1: x\n");
		 printf("Spieler 2: o\n\n");  
		 
		 
		 printf("\n ------- ------- ------- ");
		 printf("\n|	   |	   |	   |");
		 printf("\n|   %c   |   %c   |   %c   |", zahl1, zahl2, zahl3);
		 printf("\n|	   |	   |	   |");
		 printf("\n ------- ------- ------- ");
		 printf("\n|	   |	   |	   |");
		 printf("\n|   %c   |   %c   |   %c   |", zahl4, zahl5, zahl6);
		 printf("\n|	   |	   |	   |");
		 printf("\n ------- ------- ------- ");
		 printf("\n|	   |	   |	   |");
		 printf("\n|   %c   |   %c   |   %c   |", zahl7, zahl8, zahl9);
		 printf("\n|	   |	   |	   |");
		 printf("\n ------- ------- ------- ");
		 
		 
		 printf("\n\nSpieler 1 ist an der Reihe.Geben sie bitte einen Buchstaben ein: ");
		 scanf("%s", buffer); // Einlesen der Daten, AdressOf-Operator überflüssig da buffer char * ist
		 fflush(stdin);
	
		 // Zuordnung der Werte
		 if(strcmp("A", buffer) == 0  && zahl1!=111 && zahl1!=120)
		   zahl1 = 120; // ASCII-Code für X speichern
		 if(strcmp("B", buffer) == 0  && zahl2!=111 && zahl2!=120)
		   zahl2 = 120;
		   
		 if(strcmp("C", buffer) == 0  && zahl3!=111 && zahl3!=120)
		   zahl3 = 120; 
		   
		 if(strcmp("D", buffer) == 0  && zahl4!=111 && zahl4!=120)
		   zahl4 = 120;
		   
		 if(strcmp("E", buffer) == 0  && zahl5!=111 && zahl5!=120)
		   zahl5 = 120; 
		   
		 if(strcmp("F", buffer) == 0  && zahl6!=111 && zahl6!=120)
		   zahl6 = 120; 
		   
		 if(strcmp("G", buffer) == 0  && zahl7!=111 && zahl7!=120)
		   zahl7 = 120;   
		   
		 if(strcmp("H", buffer) == 0  && zahl8!=111 && zahl8!=120)
		   zahl8 = 120; 
		   
		 if(strcmp("I", buffer) == 0  && zahl9!=111 && zahl9!=120)
		   zahl9 = 120; 
			
		 if (zahl1==120 && zahl2==120 && zahl3==120)
		   ablaufzahl=2;
		   
		 if (zahl4==120 && zahl5==120 && zahl6==120)
		   ablaufzahl=2;
		   
		 if (zahl7==120 && zahl8==120 && zahl9==120)
		   ablaufzahl=2;
		   
		 if (zahl1==120 && zahl4==120 && zahl7==120)
		  ablaufzahl=2;
		   
		 if (zahl2==120 && zahl5==120 && zahl8==120)
		   ablaufzahl=2;  
		   
		 if (zahl3==120 && zahl6==120 && zahl9==120)
		   ablaufzahl=2;  
		   
		 if (zahl1==120 && zahl5==120 && zahl9==120)
		   ablaufzahl=2;
		   
		 if (zahl3==120 && zahl5==120 && zahl7==120)
		   ablaufzahl=2; 
		   
		 ablaufzahl=3;
	 } 
	 
	 
	 if (ablaufzahl==2) 
	 {
	   printf("\n\n\nSpieler 1 hat das Spiel gewonnen");
	   
		 printf("\n\n\n ------- ------- ------- ");
		 printf("\n|	   |	   |	   |");
		 printf("\n|   %c   |   %c   |   %c   |", zahl1, zahl2, zahl3);
		 printf("\n|	   |	   |	   |");
		 printf("\n ------- ------- ------- ");
		 printf("\n|	   |	   |	   |");
		 printf("\n|   %c   |   %c   |   %c   |", zahl4, zahl5, zahl6);
		 printf("\n|	   |	   |	   |");
		 printf("\n ------- ------- ------- ");
		 printf("\n|	   |	   |	   |");
		 printf("\n|   %c   |   %c   |   %c   |", zahl7, zahl8, zahl9);
		 printf("\n|	   |	   |	   |");
		 printf("\n ------- ------- ------- ");
	   
	   printf("\n\n\nWollen Sie noch ein Spiel machen");
	 }	 
	 
	 while (ablaufzahl==3)
	 {
		 
		 printf("\n\nSpieler 1: x\n");
		 printf("Spieler 2: o\n\n");  
		 
		 
		 printf("\n ------- ------- ------- ");
		 printf("\n|	   |	   |	   |");
		 printf("\n|   %c   |   %c   |   %c   |", zahl1, zahl2, zahl3);
		 printf("\n|	   |	   |	   |");
		 printf("\n ------- ------- ------- ");
		 printf("\n|	   |	   |	   |");
		 printf("\n|   %c   |   %c   |   %c   |", zahl4, zahl5, zahl6);
		 printf("\n|	   |	   |	   |");
		 printf("\n ------- ------- ------- ");
		 printf("\n|	   |	   |	   |");
		 printf("\n|   %c   |   %c   |   %c   |", zahl7, zahl8, zahl9);
		 printf("\n|	   |	   |	   |");
		 printf("\n ------- ------- ------- ");
		 
		 
		 printf("\n\nSpieler 2 ist an der Reihe.Geben sie bitte einen Buchstaben ein: ");
		 scanf("%s", buffer); // Einlesen der Daten, AdressOf-Operator überflüssig da buffer char * ist
		 fflush(stdin);
	
		 // Zuordnung der Werte
		 if(strcmp("A", buffer) == 0  && zahl1!=11 && zahl1!=120)
		   zahl1 = 11; // ASCII-Code für X speichern
		 if(strcmp("B", buffer) == 0  && zahl2!=11 && zahl2!=120)
		   zahl2 = 11; // ASCII-Code für X speichern
		   
		 if(strcmp("C", buffer) == 0  && zahl3!=11 && zahl3!=120)
		   zahl3 = 11; 
		   
		 if(strcmp("D", buffer) == 0  && zahl4!=11 && zahl4!=120)
		   zahl4 = 11;
		   
		 if(strcmp("E", buffer) == 0  && zahl5!=11 && zahl5!=120)
		   zahl5 = 11; 
		   
		 if(strcmp("F", buffer) == 0  && zahl6!=11 && zahl6!=120)
		   zahl6 = 11; 
		   
		 if(strcmp("G", buffer) == 0  && zahl7!=11 && zahl7!=120)
		   zahl7 = 11;   
		   
		 if(strcmp("H", buffer) == 0  && zahl8!=11 && zahl8!=120)
		   zahl8 = 11; 
		   
		 if(strcmp("I", buffer) == 0  && zahl9!=11 && zahl9!=120)
		   zahl9 = 11; 
			
		 if (zahl1==11 && zahl2==11 && zahl3==11)
		   ablaufzahl=4;
		   
		 if (zahl4==11 && zahl5==11 && zahl6==11)
		   ablaufzahl=4;
		   
		 if (zahl7==11 && zahl8==11 && zahl9==11)
		   ablaufzahl=4;
		   
		 if (zahl1==121 && zahl4==11 && zahl7==11)
		  ablaufzahl=4;
		   
		 if (zahl2==11 && zahl5==11 && zahl8==11)
		   ablaufzahl=4;  
		   
		 if (zahl3==11 && zahl6==11 && zahl9==11)
		   ablaufzahl=4;  
		   
		 if (zahl1==11 && zahl5==11 && zahl9==11)
		   ablaufzahl=4;
		   
		 if (zahl3==11 && zahl5==11 && zahl7==11)
		   ablaufzahl=4; 
		   
		 ablaufzahl=1;
		 
			  
	 
	 
	 if (ablaufzahl==4) 
	 {
	   printf("\n\n\nSpieler 2 hat das Spiel gewonnen");
	   
		 printf("\n\n\n ------- ------- ------- ");
		 printf("\n|	   |	   |	   |");
		 printf("\n|   %c   |   %c   |   %c   |", zahl1, zahl2, zahl3);
		 printf("\n|	   |	   |	   |");
		 printf("\n ------- ------- ------- ");
		 printf("\n|	   |	   |	   |");
		 printf("\n|   %c   |   %c   |   %c   |", zahl4, zahl5, zahl6);
		 printf("\n|	   |	   |	   |");
		 printf("\n ------- ------- ------- ");
		 printf("\n|	   |	   |	   |");
		 printf("\n|   %c   |   %c   |   %c   |", zahl7, zahl8, zahl9);
		 printf("\n|	   |	   |	   |");
		 printf("\n ------- ------- ------- ");
	   
	   printf("\n\n\nWollen Sie noch ein Spiel machen");
	   
	 
	 }
	 getchar();
	 
}
 
Zurück