Tic Tac Toe

bap

Mitglied
hi @ all,
ich hab da ein Problem mit meinem Game und zwar werden die Array Felder nicht gefüllt, wie sie sollten.

bei der aufforderung sollte man zb. a[2] eingeben können. dann sollte es auch gleich den inhalt von a[2] auf x oder o setzen.

hier mein code.
Code:
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

  char a[3]; 
  char b[3]; 
  char c[3]; 


void gui(void) { 
  printf("    a   b   c\n"); 
  printf("  -------------\n"); 
  printf("0 | %c | %c | %c |\n",a[0],b[0],c[0]); 
  printf("  -------------\n"); 
  printf("1 | %c | %c | %c |\n",a[1],b[1],c[1]); 
  printf("  -------------\n"); 
  printf("2 | %c | %c | %c |\n",a[2],b[2],c[2]); 
  printf("  -------------\n"); 
} 

void check (void) { 
//X HIGHT 
  if(a[0]=='x' && a[1]=='x' && a[2]=='x') { 
    printf("x Won"); 
  } 
  if(b[0]=='x' && b[1]=='x' && b[2]=='x') { 
    printf("x Won"); 
  } 
  if(c[0]=='x' && c[1]=='x' && c[2]=='x') { 
    printf("x Won"); 
  } 

//X LENGHT 
  if(a[0]=='x' && b[0]=='x' && b[0]=='x') { 
    printf("x Won"); 
  } 
  if(a[1]=='x' && b[1]=='x' && c[1]=='x') { 
    printf("x Won"); 
  } 
  if(a[2]=='x' && b[2]=='x' && c[2]=='x') { 
    printf("x Won"); 
  } 

//X Quer 
  if(a[0]=='x' && b[1]=='x' && c[2]=='x') { 
    printf("x Won"); 
  } 
  if(a[2]=='x' && b[1]=='x' && c[0]=='x') { 
    printf("x Won"); 
  } 

//o HIGHT 
  if(a[0]=='o' && a[1]=='o' && a[2]=='o') { 
    printf("o Won -->A"); 
  } 
  if(b[0]=='o' && b[1]=='o' && b[2]=='o') { 
    printf("o Won -->B"); 
  } 
  if(c[0]=='o' && c[1]=='o' && c[2]=='o') { 
    printf("o Won -->C"); 
  } 

//o LENGHT 
  if(a[0]=='o' && b[0]=='o' && c[0]=='o') { 
    printf("o Won"); 
  } 
  if(a[1]=='o' && b[1]=='o' && c[1]=='o') { 
    printf("o Won"); 
  } 
  if(a[2]=='o' && b[2]=='o' && c[2]=='o') { 
    printf("o Won"); 
  } 

//o Quer 
  if(a[0]=='o' && b[1]=='o' && c[2]=='o') { 
    printf("o Won"); 
  } 
  if(a[2]=='o' && b[1]=='o' && c[0]=='o') { 
    printf("o Won"); 
  } 
} // check 


int main(int argc, char *argv[]) 
{ 
  int i=1; 
  char eingabe[20]; 
  char sign; 

  a[0]=' '; 
  a[1]=' '; 
  a[2]=' '; 

  b[0]=' '; 
  b[1]=' '; 
  b[2]=' '; 

  c[0]=' '; 
  c[1]=' '; 
  c[2]=' '; 

  gui(); 

  while(i< 10) { 
       if(i%2) { 
         i++; 
         printf("Player1 Eingabe:\n"); 
         scanf("%s",&eingabe); 
         strcpy(eingabe,"x"); 
         gui(); 
         check(); 
         printf("%s\n",&eingabe); 
       } // if 

         else { 
            i++; 
            printf("Player2 Eingabe:\n"); 
            scanf("%s",&eingabe); 
            getchar(); 
            strcpy(eingabe,"o"); 
            gui(); 
            check(); 
            printf("%s\n",&eingabe); 
         } //else 

  } 

  getchar(); 
  return 0; 
}
 
Die Zuordnung zwischen Variablen und ihren Namen wird beim Compilieren zerstört - so wird das nie etwas.

Lies lieber zuerst die Nummer der Zeile und dann die der Spalte als Integer ein, dann kannst Du mit
"Spielfeld[Zeile-1][Spalte-1]=ZeichenDesSpielers" drauf zugreifen.
Vergiss nicht, vor dem Zugriff zu überprüfen, ob der Bösewicht vor dem Bildschirm auch sicher gültige Werte eingegeben hat, sonst fällts entweder unter schummeln oder dein Programm verabschiedet sich mit einer Speicherschutzverletzung in die ewigen Jagdgründe.

Wenn du umbedingt die Form Buchstabe/Zahl willst - eine ASCII-Tabelle wird dir helfen, aus dem Buchstaben eine Zahl für den Index zu machen.
 

Neue Beiträge

Zurück