Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
char gewonnen=-1,istdran;
char feld[9],zeichen[3],eingabe[16];
int i,j,k,l;
zeichen[0]='.';
zeichen[1]='x';
zeichen[2]='o';
while(1)
{
system("cls");
if(gewonnen)
{
if(gewonnen>0)printf("Spieler %d hat gewonnen. ",gewonnen);
printf("Neue Runde beginnt.\n");
gewonnen=0;istdran=0;
for(i=0;i<9;i++)feld[i]=0;
}
else printf("\n");
printf("\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%c",zeichen[feld[i*3+j]]);
}
printf("\n");
}
printf("\n");
do
{
printf("Spieler %d, bitte Zeile/Spalte eingeben: ",istdran+1);
fgets(eingabe,16,stdin);
i=strlen(eingabe)-1;
if(i>=0&&eingabe[i]=='\n')eingabe[i]='\0';
else
{
while(fgetc(stdin)!='\n');
}
if(2!=sscanf(eingabe,"%d %d",&i,&j))
{
printf("Falsche Eingabe!\n");
i=-1;
}
else if(i<1||i>3||j<1||j>3)
{
printf("Nur Zahlen von 1 bis 3 erlaubt!\n");
i=-1;
}
else if(feld[(i-1)*3+j-1]!=0)
{
printf("Schon besetzt!\n");
i=-1;
}
}while(i<1);
i--;j--;
feld[i*3+j]=istdran+1;
istdran=1-istdran;
for(l=1;l<3;l++)
{
for(k=0;k<3;k++)
{
j=0;
for(i=0;i<3;i++)
{
if(feld[k*3+i]==l)j++;
}
if(j==3)gewonnen=l;
j=0;
for(i=0;i<3;i++)
{
if(feld[i*3+k]==l)j++;
}
if(j==3)gewonnen=l;
}
j=0;
for(i=0;i<3;i++)
{
if(feld[i*3+i]==l)j++;
}
if(j==3)gewonnen=l;
j=0;
for(i=0;i<3;i++)
{
if(feld[i*2+2]==l)j++;
}
if(j==3)gewonnen=l;
}
}
return 0;
}
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
char gewonnen=-1;
//Gewonnen: 1 oder 2, wenn Spieler 1/2 gewonnen hat, sonst 0.
//-1 nur am Anfang, damit die Variablen für die erste "neue Runde" hergerichtet werden,
//aber keine "... hat gewonnen" Meldung kommt.
char istdran;//0 oder 1, ob Spieler 1 oder 2 dran ist
char feld[9];
//Das Spielfeld (3x3 Felder). Es dürfen ja nur eindim.Arrays vervendet werden,
//sonst wäre es feld[3][3]
//0 ist leer, 1/2 bedeutet dass Spieler 1/2 dorthin was gesetzt hat
char zeichen[3];
//zeichen[0] ist . für ein leeres Spielfeld
//zeichen[1] und zeichen[2] sind x und o für die Spieler
char eingabe[16];//Für die Tastatureingabe
int i,j,k,l;//Hauptsächlich für die Schleifen zum zählen
zeichen[0]='.';//Hier das oben Beschriebene zuweisen
zeichen[1]='x';
zeichen[2]='o';
while(1)//Immer wiederholen
{
system("cls");//Konsole leeren
if(gewonnen)//Wenn wer gewonnen hat (oder einmal am Anfang wegen dem -1 in gewonnen)
{
if(gewonnen>0)printf("Spieler %d hat gewonnen. ",gewonnen);//Wenn nicht Anfangs- -1
printf("Neue Runde beginnt.\n");
gewonnen=0;istdran=0;//Erster Spieler beginnt
for(i=0;i<9;i++)feld[i]=0;//Spielfeld wieder leeren
}
else printf("\n");
printf("\n");
for(i=0;i<3;i++)//Spielfeld ausgeben
{
for(j=0;j<3;j++)
{
printf("%c",zeichen[feld[i*3+j]]);
}
printf("\n");
}
printf("\n");
do
{
printf("Spieler %d, bitte Zeile/Spalte eingeben: ",istdran+1);//Spieler auffordern, was einzugeben
fgets(eingabe,16,stdin);//Einlesen; scanf macht Probleme deshalb so
i=strlen(eingabe)-1;
if(i>=0&&eingabe[i]=='\n')eingabe[i]='\0';
else{while(fgetc(stdin)!='\n');}
if(2!=sscanf(eingabe,"%d %d",&i,&j))//Wenn Buchstaben etc eingegeben wurden
{
printf("Falsche Eingabe!\n");
i=-1;
}
else if(i<1||i>3||j<1||j>3)//Wenn die Zahlen nicht passen
{
printf("Nur Zahlen von 1 bis 3 erlaubt!\n");
i=-1;
}
else if(feld[(i-1)*3+j-1]!=0)//Wenn das Feld schon belegt ist
{
printf("Schon besetzt!\n");
i=-1;
}
}while(i<1);//Solange bis die Eingabe passt
i--;j--;//Eingegeben wurde 1, 2 oder 3; C zählt aber von 0 bis 2 im Array
feld[i*3+j]=istdran+1;//Spielstein setzen
istdran=1-istdran;//Anderer Spieler kommt dann dran
//Prüfen, ob wer gewonnen hat
for(l=1;l<3;l++)//Alles für Spieler 1 und Spieler 2
{
for(k=0;k<3;k++)
{
j=0;//Alle 3 Zeilen auf 3 Gleiche Überprüfen
for(i=0;i<3;i++)
{
if(feld[k*3+i]==l)j++;
}
if(j==3)gewonnen=l;
j=0;//Alle 3 Spalten auf 3 Gleiche Überprüfen
for(i=0;i<3;i++)
{
if(feld[i*3+k]==l)j++;
}
if(j==3)gewonnen=l;
}
j=0;//Auch beide Diagonalen noch auf 3 Gleiche prüfen
for(i=0;i<3;i++)
{
if(feld[i*3+i]==l)j++;
}
if(j==3)gewonnen=l;
j=0;
for(i=0;i<3;i++)
{
if(feld[i*2+2]==l)j++;
}
if(j==3)gewonnen=l;
}
}
return 0;
}
Haette man den Quelltext mit Kommentaren gelesen, wuesste man:was genau mach system("cls"); wenn ich fragen darf....
system("cls");//Konsole leeren
ich habs ja gelesen... aber was genau bedeutet das, weil diesen befehl kenne ich auch nicht....
Oo Einfach den Code zu posten, wird ihm/ ihr nie was bringen. Wie soll man denn dann was lernen?
Wie schon gesagt, bissel Eigeninitative waere super gewesen, dann codeschnipsel zu posten ist auch in Ordnung.
Du willst mir net wirklich erzaehlen das du nicht weisst, was 'konsole leeren' bedeutet.