program pexeso1; #include "stdafx.h" #include #define n 6 #define maxhracu 4 typedef struct { int obrazek; int viditelna; int odebrana; } karticka; typedef struct { char jmeno[255]; int skore; } hrac; karticka p[n][n]; hrac ph[maxhracu]; int rx, sx; void html() { FILE *f; int radek, sloupec; f = fopen("pexeso.html","w"); fprintf(f, ""); fprintf(f, ""); fprintf(f, ""); fprintf(f, ""); fprintf(f, ""); fprintf(f, "Pexeso"); fprintf(f, ""); fprintf(f, ""); fprintf(f, "

Pexeso

"); fprintf(f, ""); for (radek = 1; radek < n; radek++) { fprintf(f,"\n"); for (sloupec = 1; sloupec < n; sloupec++) { if (p[radek][sloupec].odebrana == 1) { fprintf(f,""); } else { if (p[radek][sloupec].viditelna == 1) { fprintf(f,"",p[radek, sloupec].obrazek); } else { fprintf(f,""); } } } fprintf(f,"\n"); } for (int i = 0; i < pocethracu; i++) { fprintf(f,"
  • %s: %d
  • ", ph[i].jmeno, ph[i].skore); } fprintf(f,""); fprintf(f, "
    "); fprintf(f, ""); fprintf(f, ""); fclose(f); } void inicializacehracu() { int i; for (i = 0; i < maxhracu; i++) { strcpy("",ph[i].jmeno); ph[i].skore=0; } } void zadejpocethracu() { printf("Zadejte pocet hracu: "); scanf("%d",&pocethracu); while ((pocethracu < 2) or (pocethracu > maxhracu)) { printf("Zadejte znovu: "); scanf("%d",&pocethracu); } } void zadejjmenahracu() { int i; printf("Zadejte jmena hracu:\n"); for (i = 0; i < pocethracu; i++) { printf("Zadejte jmeno %d. hrace: ", i+1); scanf("%s", &ph[i].jmeno); } } void inicializacepexesa() { int radek, sloupec, pocet; pocet = 1; for (radek = 0; radek < n; radek++) { for (sloupec = 0; sloupec < n; sloupec++) { pocet = pocet + 1; p[radek][sloupec].obrazek = pocet % 2; p[radek][sloupec].viditelna = 0; p[radek][sloupec].odebrana = 0; } } } void zamichanipexesa() { int radek, sloupec; int r, s; int pom; for (radek = 0; radek < n; radek++) { for (sloupec = 0; sloupec < n; sloupec++) { r = rand()%n; s = rand()%n; pom = p[radek][sloupec].obrazek; p[radek][sloupec].obrazek = p[r][s].obrazek; p[r][s].obrazek = pom; } } } void zobrazenipexesa() { int radek, sloupec; for (radek = 0; radek < n; radek++) { for (sloupec = 0; sloupec < n; sloupec++) { if (p[radek][sloupec].odebrana == 1) { printf("X "); } else { if (p[radek][sloupec].viditelna == 1) { printf("%d ", p[radek][sloupec].obrazek); } else { printf("0 "); } } } printf("\n"); } html(); } void otockarticku() { int radek, sloupec; int kartickaok = 0; p[radek][sloupec].viditelna = 1; while (kartickaok == 0) { printf("Zadejte souradnice karticky (radek): "); scanf("%d", &radek); while ((radek < 0) || (radek > n-1)) { printf("Zadejte znovu souradnice karticky (radek): "); scanf("%d", &radek); } printf("Zadejte souradnice karticky (sloupec): "); scanf("%d", &sloupec); while ((sloupec < 0) || (sloupec > n-1)) { printf("Zadejte znovu souradnice karticky (sloupec): "); scanf("%d", &sloupec); } if ((p[radek][sloupec].odebrana == 0) && (p[radek][sloupec].viditelna == 0)) { kartickaok = 1; p[radek][sloupec].viditelna = 1; } } rx = radek; sx = sloupec; } void hra() { int konechry, shodnekarticky; int hrac, radek1, radek2, sloupec1, sloupec2; int pocet; hrac = 0; konechry = 0; while (konechry == 0) { zobrazenipexesa(); otockarticku(); radek1 = rx; sloupec1 = sx; zobrazenipexesa(); otockarticku(); radek2 = rx; sloupec2 = sx; zobrazenipexesa(); shodnekarticky = porovnejkarticky(radek1,sloupec1,radek2,sloupec2); if (shodnekarticky == 1) { ph[hrac].skore = ph[hrac].skore + 1; pocet = 0; for (int i = 0; i < pocethracu; i++) { pocet = pocet + ph[i].skore; } if (pocet == (n*n / 2)) konechry = true; } else { if (hrac != pocethracu-1) { hrac = hrac + 1; } else { hrac = 0; } } fflush(stdin); getchar(); } } int _tmain(int argc, _TCHAR* argv[]) { int radek, sloupec, pocet; inicializacepexesa(); zamichanipexesa(); inicializacehracu(); zadejpocethracu(); zadejjmenahracu(); hra(); zobrazenipexesa(); fflush(stdin); getchar(); return 0; }