Anonymní profil nebula – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil nebula – Programujte.comAnonymní profil nebula – Programujte.com

 

Příspěvky odeslané z IP adresy 91.229.254.–

nebula
C / C++ › Piškvorky 10x10 problem s te…
1. 6. 2013   #177089

#6 KIIV
No ale jak to dám do bloku, tak se mi po zadání O druhého hráče hra ukončí s odpovědí že vyhrál hráč 1

nebula
C / C++ › Piškvorky 10x10 problem s te…
1. 6. 2013   #177087

#3 Kowalsky95
Ahoj, klidně bych měl. Už to mam hotové skoro akorát ta kontrola dělá problém. Předělával jsem to z piškvorek 3x3 co jsem si stáhnul. Mam to do úterý odevzdat a mam z toho hlavu jak pátrací balon :D A jelikož v C++ moc dobrej nejsem, tak mi jde hlavně o to, abych nedostal za 5 :)

přidal jsem zadání jmen obou hráčů a aby to hrál hráč proti hráči.

#include <stdio.h>
#include <stdlib.h>
    struct{
           char jmeno[10];
          }hrac;
    struct{ char jmeno2[10];
            }hrac2;
         
char pole[10][10]; 
int t;
char kontrola(void);
void init_pole(void);
void tah_hrace(void);
void tah_hrace2(void);
void zobr_pole(void);
char a;
int Q;
char cesta[61];
FILE *f;
int main(void)
{
  char done;

  printf("*****************************************\n");
  printf("*                                       *\n");
  printf("*          Martin Maly 2. AP            *\n");
  printf("*           Piskvorky 10x10             *\n");
  printf("*                                       *\n");
  printf("*****************************************\n");
  printf("\n");
 
  printf("Zadej jmeno prvniho hrace:\n");
  scanf("%s",hrac.jmeno);
  printf("Zadej jmeno druheho hrace:\n");
  scanf("%s",hrac2.jmeno2);
  done =  ' ';
  init_pole();

  do {
    zobr_pole();
    tah_hrace();
    done = kontrola(); /* see if winner */
    if(done!= ' ') break; /* winner!*/
    tah_hrace2();
    done = kontrola(); /* see if winner */
  } while(done== ' ');

  zobr_pole();
  if(done=='X') printf("\nVyhral %s\n",hrac.jmeno);
  else printf("\nVyhral PC!\n");
   printf("\nChces ulozit?(A, N)");
   scanf("%s",&a);
   switch (a){
          case 'a':
               case 'A':
                    printf("Zadej cestu: ");
                    scanf("%60s", cesta);
                    f=fopen(cesta,"a+");
                      for(t=0; t<10; t++) {
    fprintf(f," %c | %c | %c | %c | %c | %c | %c | %c | %c | %c ",pole[t][0],
            pole[t][1], pole [t][2], pole [t][3], pole [t][4], pole [t][5], pole [t][6], pole [t][7]
            , pole [t][8], pole [t][9]);
    if(t!=10) fprintf(f,"\n---|---|---|---|---|---|---|---|---|---\n");
  break;
        case 'n':
             case 'N':
                  return 1;
                  break;
  }
  printf("\n");

}
  fclose(f);
                   
  

  getchar();
  getchar();
}

/* inicializuje pole */
void init_pole(void)
{
  int i, j;

  for(i=0; i<10; i++)
    for(j=0; j<10; j++) pole[i][j] =  ' ';
}

/* Tah hrace */
void tah_hrace(void)
{
  int x, y;

  printf("Hraci %s zadej souradnice X,Y pro tvuj krok - napr. 1,1: \n",hrac.jmeno);
  scanf("%d%*c%d", &x, &y);
 

  x--; y--;

  if(pole[x][y]!= ' '){
    printf("Spatny krok, zkus to znova.\n");
    tah_hrace();
  }
  else pole[x][y] = 'X';
}

/* tah pocitace. */
void tah_hrace2(void)
{
  int i, j;

  printf("Hraci %s zadej souradnice X,Y pro tvuj krok - napr. 1,1: \n",hrac2.jmeno2);
  scanf("%d%*c%d", &i, &j);
 

  i--; j--;

  if(pole[i][j]!= ' '){
    printf("Spatny krok, zkus to znova.\n");
    tah_hrace2();
  }
  else pole[i][j] = 'O';
}

/* Zobrazí pole na obrazovku */
void zobr_pole(void)
{
  printf("Y 1  2   3   4   5   6   7   8   9   10\n");
 

   
  for(t=0; t<10; t++) {
    printf(" %c | %c | %c | %c | %c | %c | %c | %c | %c | %c ",pole[t][0],
            pole[t][1], pole [t][2], pole [t][3], pole [t][4], pole [t][5], pole [t][6], pole [t][7]
            , pole [t][8], pole [t][9]);
    if(t!=10) printf("\n---|---|---|---|---|---|---|---|---|---\n");
  }
  printf("\n");
}


char kontrola(void)
{
  int i;

  for(i=0; i<3; i++)  /* kontroluje radky */
    if((pole[i][0]==pole[i][1] && pole[i][0]==pole[i][2] && pole[i][0]==pole[i][3]))
      return pole[i][0];
    if(pole[i][1]==pole[i][2] && pole[i][1]==pole[i][3] && pole[i][1]==pole[i][4])
      return pole[i][0];
    if(pole[i][2]==pole[i][3] && pole[i][2]==pole[i][4] && pole[i][2]==pole[i][5])
      return pole[i][0];  
    if(pole[i][3]==pole[i][4] && pole[i][3]==pole[i][5] && pole[i][3]==pole[i][6])
      return pole[i][0];
    if(pole[i][4]==pole[i][5] && pole[i][4]==pole[i][6] && pole[i][4]==pole[i][7])
      return pole[i][0];
    if(pole[i][5]==pole[i][6] && pole[i][5]==pole[i][7] && pole[i][5]==pole[i][8])
      return pole[i][0];
    if(pole[i][6]==pole[i][8] && pole[i][6]==pole[i][9] && pole[i][6]==pole[i][10])
      return pole[i][0];
 
 
      

  for(i=0; i<3; i++)  /* kontroluje sloupce */
    if(pole[0][i]==pole[1][i] && pole[0][i]==pole[2][i] && pole[0][i]==pole[3][i])
      return pole[0][i];
    if(pole[1][i]==pole[2][i] && pole[1][i]==pole[3][i] && pole[1][i]==pole[4][i])
      return pole[0][i];
    if(pole[2][i]==pole[3][i] && pole[2][i]==pole[4][i] && pole[2][i]==pole[5][i])
      return pole[0][i];
    if(pole[3][i]==pole[4][i] && pole[3][i]==pole[5][i] && pole[3][i]==pole[6][i])
      return pole[0][i];
    if(pole[4][i]==pole[5][i] && pole[4][i]==pole[6][i] && pole[4][i]==pole[7][i])
      return pole[0][i];
    if(pole[5][i]==pole[6][i] && pole[5][i]==pole[7][i] && pole[5][i]==pole[8][i])
      return pole[0][i];
    if(pole[6][i]==pole[7][i] && pole[6][i]==pole[8][i] && pole[6][i]==pole[9][i])
      return pole[0][i];
    if(pole[7][i]==pole[8][i] && pole[7][i]==pole[9][i] && pole[7][i]==pole[10][i])
      return pole[0][i];
   
   

  /* testuje diagonaly */
  if(pole[0][0]==pole[1][1] && pole[1][1]==pole[2][2])
    return pole[0][0];
  if(pole[0][2]==pole[1][1] && pole[1][1]==pole[2][0])
       return pole[0][2];


  return ' ';
getchar();
getchar();
}

nebula
C / C++ › Piškvorky 10x10 problem s te…
31. 5. 2013   #177025

Zdravim, dělám do školy piškvorky o pole 10x10, celkově už to skoro mám, ale nevím si rady s testováním diagonal a sloupců. Test sloupců mi funguje akorát na levé straně pole odshora dolu. 

#include <stdio.h>
#include <stdlib.h>

char pole[10][10];  
int t;
char kontrola(void);
void init_pole(void);
void tah_hrace(void);
void tah_pocitace(void);
void zobr_pole(void);
char a;
int Q;
char cesta[61];
FILE *f;
int main(void)
{
  char done;


  

  done =  ' ';
  init_pole();

  do {
    zobr_pole();
    tah_hrace();
    done = kontrola(); /* see if winner */
    if(done!= ' ') break; /* winner!*/
    tah_pocitace();
    done = kontrola(); /* see if winner */
  } while(done== ' ');

  zobr_pole();
  if(done=='X') printf("\nVyhral jsi!\n");
  else printf("\nVyhral PC!\n");
   printf("\nChces ulozit?(A, N)");
   scanf("%s",&a);
   switch (a){
          case 'a':
               case 'A':
                    printf("Zadej cestu: ");
                    scanf("%60s", cesta);
                    f=fopen(cesta,"a+");
                      for(t=0; t<10; t++) {
    fprintf(f," %c | %c | %c | %c | %c | %c | %c | %c | %c | %c ",pole[t][0],
            pole[t][1], pole [t][2], pole [t][3], pole [t][4], pole [t][5], pole [t][6], pole [t][7]
            , pole [t][8], pole [t][9]);
    if(t!=10) fprintf(f,"\n---|---|---|---|---|---|---|---|---|---\n");
  break;
        case 'n':
             case 'N':
                  return 1;
                  break;
  }
  printf("\n");

}
  fclose(f);
                    
   

  getchar();
  getchar();
}

/* inicializuje pole */
void init_pole(void)
{
  int i, j;

  for(i=0; i<10; i++)
    for(j=0; j<10; j++) pole[i][j] =  ' ';
}

/* Tah hrace */
void tah_hrace(void)
{
  int x, y;

  printf("Zadej souradnice X,Y pro tvuj krok - napr. 1,1: \n");
  scanf("%d%*c%d", &x, &y);
  

  x--; y--;

  if(pole[x][y]!= ' '){
    printf("Spatny krok, zkus to znova.\n");
    tah_hrace();
  }
  else pole[x][y] = 'X';
}

/* tah pocitace. */
void tah_pocitace(void)
{
  int i, j;
  for(i=0; i<10; i++){
    for(j=0; j<10; j++)
      if(pole[i][j]==' ') break;
    if(pole[i][j]==' ') break;
  }

  if(i*j==9)  {
    printf("Remiza!\n");
    exit(0);
  }
  else
    pole[i][j] = 'O';
}

/* Zobrazí pole na obrazovku */
void zobr_pole(void)
{
  printf("Y 1  2   3   4   5   6   7   8   9   10\n");
  

    
  for(t=0; t<10; t++) {
    printf(" %c | %c | %c | %c | %c | %c | %c | %c | %c | %c ",pole[t][0],
            pole[t][1], pole [t][2], pole [t][3], pole [t][4], pole [t][5], pole [t][6], pole [t][7]
            , pole [t][8], pole [t][9]);
    if(t!=10) printf("\n---|---|---|---|---|---|---|---|---|---\n");
  }
  printf("\n");
}


char kontrola(void)
{
  int i;

  for(i=0; i<3; i++)  /* kontroluje radky */
    if((pole[i][0]==pole[i][1] && pole[i][0]==pole[i][2] && pole[i][0]==pole[i][3]))
      return pole[i][0];
    if(pole[i][1]==pole[i][2] && pole[i][1]==pole[i][3] && pole[i][1]==pole[i][4])
      return pole[i][0];
    if(pole[i][2]==pole[i][3] && pole[i][2]==pole[i][4] && pole[i][2]==pole[i][5])
      return pole[i][0];   
    if(pole[i][3]==pole[i][4] && pole[i][3]==pole[i][5] && pole[i][3]==pole[i][6])
      return pole[i][0];
    if(pole[i][4]==pole[i][5] && pole[i][4]==pole[i][6] && pole[i][4]==pole[i][7])
      return pole[i][0];
    if(pole[i][5]==pole[i][6] && pole[i][5]==pole[i][7] && pole[i][5]==pole[i][8])
      return pole[i][0];
    if(pole[i][6]==pole[i][8] && pole[i][6]==pole[i][9] && pole[i][6]==pole[i][10])
      return pole[i][0];
  
  
       

  for(i=0; i<3; i++)  /* kontroluje sloupce */
    if(pole[0][i]==pole[1][i] && pole[0][i]==pole[2][i] && pole[0][i]==pole[3][i])
      return pole[0][i];
    if(pole[1][i]==pole[2][i] && pole[1][i]==pole[3][i] && pole[1][i]==pole[4][i]) 
      return pole[0][i];
    if(pole[2][i]==pole[3][i] && pole[2][i]==pole[4][i] && pole[2][i]==pole[5][i])
      return pole[0][i]; 
    if(pole[3][i]==pole[4][i] && pole[3][i]==pole[5][i] && pole[3][i]==pole[6][i])
      return pole[0][i];
    if(pole[4][i]==pole[5][i] && pole[4][i]==pole[6][i] && pole[4][i]==pole[7][i])
      return pole[0][i];
    if(pole[5][i]==pole[6][i] && pole[5][i]==pole[7][i] && pole[5][i]==pole[8][i])
      return pole[0][i];
    if(pole[6][i]==pole[7][i] && pole[6][i]==pole[8][i] && pole[6][i]==pole[9][i])
      return pole[0][i];
    if(pole[7][i]==pole[8][i] && pole[7][i]==pole[9][i] && pole[7][i]==pole[10][i])
      return pole[0][i];
    
    

  /* testuje diagonaly */
  if(pole[0][0]==pole[1][1] && pole[1][1]==pole[2][2] && pole[2][2]==pole[3][3])
    return pole[0][0];
  if(pole[0][2]==pole[1][1] && pole[1][1]==pole[2][0])
       return pole[0][2];


  return ' ';
getchar();
getchar();
}

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý