algorytm.org

Implementacja w C/C++



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Kółko-Krzyżyk - Implementacja w C/C++
Ocena użytkownikóww: *****  / 14
SłabyŚwietny
Nadesłany przez Tomasz Gietka, 01 kwietnia 2007 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.

Kolko i Krzyzyk/Unit1.cpp:
//***********************************************************************//
//     GRA W KÓŁKO I KRZYŻYK                                             //
//     PROGRAM NAPISANY I POMYŚLNIE SKOMPILOWANY W Dev-C++ 4.9.6.0       //
//     ORAZ BCB 6                                                        //
//     PROGRAM POBRANY Z WITRYNY WWW.ALGORYTM.ORG                        //
//***********************************************************************//

#include <iostream>
#include <string>    //do napisów
#include <conio.h>   //do clrscr
#include <vector>    //do vector<string>
#include <fstream>   //do ifstream
#include <sstream>   //do stringstream
#include <time.h>    //daty i czasu
#include <windows.h> //do Sleep

//przestrzenie nazw
using namespace std;

//funkcje
void menu();  //deklaracja funkcji menu potrzebna np. do rekurencji
void ustawienia();

//zmienne
char wybor;
int kk,ww,krok,krzyzyki,kolka,kx,wx,numer_znaku_wypunktowania,jezyk;
char tablica[3][3];
bool blad,koniec,wstawione;
string gracz1,gracz2,przegr,zwyc,styl_gry_komputera,sposob_blokowania;
string miesiace[12] = {"I","II","III","IV","V","VI","VII","VIII","IX","X","XI","XII"};
string miesiaces[12] = {"stycznia","lutego","marca","kwietnia","maja","czerwca","lipca","sierpnia","września","października","listopada","grudnia"};
string teksty[2][55];

int strtoint(string tekst)
 {
 stringstream konwersja(tekst);
 int liczba;
 konwersja>>liczba;
 return liczba;
 }

void pauza()
 {
 printf("%s",teksty[jezyk][51].c_str());
 getch();
 }
void zerowanie()
 {
 tablica[0][0]=' ';
 tablica[0][1]=' ';
 tablica[0][2]=' ';
 tablica[1][0]=' ';
 tablica[1][1]=' ';
 tablica[1][2]=' ';
 tablica[2][0]=' ';
 tablica[2][1]=' ';
 tablica[2][2]=' ';
 }

void druk()
 {
 printf("\n%s\n\n",teksty[jezyk][44].c_str());
 printf("%c%c%c%c%c\n",tablica[0][0],(char)(179),tablica[1][0],(char)(179),tablica[2][0]);
 printf("%c%c%c%c%c\n",(char)(196),(char)(197),(char)(196),(char)(197),(char)(196));
 printf("%c%c%c%c%c\n",tablica[0][1],(char)(179),tablica[1][1],(char)(179),tablica[2][1]);
 printf("%c%c%c%c%c\n",(char)(196),(char)(197),(char)(196),(char)(197),(char)(196));
 printf("%c%c%c%c%c\n\n",tablica[0][2],(char)(179),tablica[1][2],(char)(179),tablica[2][2]);
 }

bool wygrana(char znaczek, int k, int w)
 {
 //badanie wiersza
 if ((tablica[0][w]==znaczek)&&(tablica[1][w]==znaczek)&&(tablica[2][w]==znaczek))
  return true;

 //badanie kolumny
 if ((tablica[k][0]==znaczek)&&(tablica[k][1]==znaczek)&&(tablica[k][2]==znaczek))
  return true;

 //badanie przekątnych
 if ((k==w)||(k+w==2))
  {
  if (((tablica[0][0]==znaczek)&&(tablica[1][1]==znaczek)&&(tablica[2][2]==znaczek))||((tablica[2][0]==znaczek)&&(tablica[1][1]==znaczek)&&(tablica[0][2]==znaczek)))
   return true;
  }
 //jesli doszło dotąd to zwróć 0 (false)
 return 0;
 }

void ruch(char znak)
 {
 do
  {
  blad=false;
  printf("%s\n",teksty[jezyk][37].c_str());

  do
   {
   printf("%s ",teksty[jezyk][38].c_str());
   scanf("%d",&kk);
   if ((kk>3)||(kk<1))
	printf("%s\n",teksty[jezyk][39].c_str());
   }
  while ((kk>3)||(kk<1));
  kk--;

  do
   {
   printf("%s ",teksty[jezyk][40].c_str());
   scanf("%d",&ww);
   if ((ww>3)||(ww<1))
	printf("%s\n",teksty[jezyk][39].c_str());
   }
  while ((ww>3)||(ww<1));
  ww--;

  if ((ww==1)&&(kk==1)&&((krok==1)||(krok==2))&&((sposob_blokowania=="graczom")||(sposob_blokowania=="wszystkim")))
   {
   printf("\n%s\n\n",teksty[jezyk][41].c_str());
   blad=true;
   }
  else
   {
   //czytanie kolumnami w dol
   for (int i=0; i<3; i++)
	{
	for (int j=0; j<3; j++)
	 {
	 if ((i==kk)&&(j==ww))
	  {
	  if (tablica[kk][ww]==' ')
	   tablica[kk][ww]=znak;
	  else
	   {
	   printf("%s%d,%d%s\n",teksty[jezyk][42].c_str(),kk+1,ww+1,teksty[jezyk][43].c_str());
	   blad=true;
	   break;//petla j
	   }
	  }
	 if (blad)//w petli i
	  break;//petla i
	 }
	}
   }
  }
 while (blad);
 druk(); //pokaz plansze
 if (wygrana(znak,kk,ww))
  {
  if (znak=='O')
   zwyc=gracz1;
  else
   zwyc=gracz2;
  koniec=true;
  }
 }

//funkcje do ruchu komputera
//funkcje z "I" to próba wygrania
bool spr_pion_I(int kol)
 {
 krzyzyki=0;
 if (tablica[kol][0]=='O')
  return false;
 if (tablica[kol][0]=='X')
  krzyzyki++;
 if (tablica[kol][1]=='O')
  return false;
 if (tablica[kol][1]=='X')
  krzyzyki++;
 if (tablica[kol][2]=='O')
  return false;
 if (tablica[kol][2]=='X')
  krzyzyki++;

 if (krzyzyki==2)
  return true;
 else
  return false;
 }

bool spr_poziom_I(int wiersz)
 {
 krzyzyki=0;
 if (tablica[0][wiersz]=='O')
  return false;
 if (tablica[0][wiersz]=='X')
  krzyzyki++;
 if (tablica[1][wiersz]=='O')
  return false;
 if (tablica[1][wiersz]=='X')
  krzyzyki++;
 if (tablica[2][wiersz]=='O')
  return false;
 if (tablica[2][wiersz]=='X')
  krzyzyki++;

 if (krzyzyki==2)
  return true;
 else
  return false;
 }

bool spr_ukos1_I()
 {
 krzyzyki=0;
 if (tablica[0][0]=='O')
  return false;
 if (tablica[0][0]=='X')
  krzyzyki++;
 if (tablica[1][1]=='O')
  return false;
 if (tablica[1][1]=='X')
  krzyzyki++;
 if (tablica[2][2]=='O')
  return false;
 if (tablica[2][2]=='X')
  krzyzyki++;

 if (krzyzyki==2)
  return true;
 else
  return false;
 }

 bool spr_ukos2_I()
 {
 krzyzyki=0;
 if (tablica[2][0]=='O')
  return false;
 if (tablica[2][0]=='X')
  krzyzyki++;
 if (tablica[1][1]=='O')
  return false;
 if (tablica[1][1]=='X')
  krzyzyki++;
 if (tablica[0][2]=='O')
  return false;
 if (tablica[0][2]=='X')
  krzyzyki++;

 if (krzyzyki==2)
  return true;
 else
  return false;
 }

//sprawdź czy możesz wygrać, jeśli tak to wypełnij całą daną linię
bool sprawdz_dwojki_I()
 {
 //sprawdzanie linii pionowych
 if (spr_pion_I(0))
  {
  tablica[0][0]='X';
  tablica[0][1]='X';
  tablica[0][2]='X';
  kx=0;
  wx=1;//np, moze byc tez 0 lub 2
  return true;
  }
 if (spr_pion_I(1))
  {
  tablica[1][0]='X';
  tablica[1][1]='X';
  tablica[1][2]='X';
  kx=1;
  wx=1;//np
  return true;
  }
 if (spr_pion_I(2))
  {
  tablica[2][0]='X';
  tablica[2][1]='X';
  tablica[2][2]='X';
  kx=2;
  wx=1;
  return true;
  }

 //sprawdzanie linii poziomych
 if (spr_poziom_I(0))
  {
  tablica[0][0]='X';
  tablica[1][0]='X';
  tablica[2][0]='X';
  wx=0;
  kx=1;//np       
  return true;
  }
 if (spr_poziom_I(1))
  {
  tablica[0][1]='X';
  tablica[1][1]='X';
  tablica[2][1]='X';
  wx=1;
  kx=1;//np
  return true;
  }
 if (spr_poziom_I(2))
  {
  tablica[0][2]='X';
  tablica[1][2]='X';
  tablica[2][2]='X';
  wx=2;
  kx=1;//np
  return true;
  }

 //sprawdzanie glownej przekatnej
 if (spr_ukos1_I())
  {
  tablica[0][0]='X';
  tablica[1][1]='X';
  tablica[2][2]='X';
  kx=1;//np
  wx=1;//np
  return true;
  }

 //sprawdzanie drugiej przekatnej
 if (spr_ukos2_I())
  {
  tablica[2][0]='X';
  tablica[1][1]='X';
  tablica[0][2]='X';
  kx=1;//np
  wx=1;//np
  return true;
  }
 return false;
 }

//funkcje z "II" to próba nieprzegrania
bool spr_pion_II(int kol)
 {
 kolka=0;
 if (tablica[kol][0]=='X')
  return false;
 if (tablica[kol][0]=='O')
  kolka++;
 if (tablica[kol][1]=='X')
  return false;
 if (tablica[kol][1]=='O')
  kolka++;
 if (tablica[kol][2]=='X')
  return false;
 if (tablica[kol][2]=='O')
  kolka++;

 if (kolka==2)
  return true;
 else
  return false;
 }

bool spr_poziom_II(int wiersz)
 {
 kolka=0;
 if (tablica[0][wiersz]=='X')
  return false;
 if (tablica[0][wiersz]=='O')
  kolka++;
 if (tablica[1][wiersz]=='X')
  return false;
 if (tablica[1][wiersz]=='O')
  kolka++;
 if (tablica[2][wiersz]=='X')
  return false;
 if (tablica[2][wiersz]=='O')
  kolka++;

 if (kolka==2)
  return true;
 else
  return false;
 }

bool spr_ukos1_II()
 {
 kolka=0;
 if (tablica[0][0]=='X')
  return false;
 if (tablica[0][0]=='O')
  kolka++;
 if (tablica[1][1]=='X')
  return false;
 if (tablica[1][1]=='O')
  kolka++;
 if (tablica[2][2]=='X')
  return false;
 if (tablica[2][2]=='O')
  kolka++;

 if (kolka==2)
  return true;
 else
  return false;
 }

bool spr_ukos2_II()
 {
 kolka=0;
 if (tablica[2][0]=='X')
  return false;
 if (tablica[2][0]=='O')
  kolka++;
 if (tablica[1][1]=='X')
  return false;
 if (tablica[1][1]=='O')
  kolka++;
 if (tablica[0][2]=='X')
  return false;
 if (tablica[0][2]=='O')
  kolka++;

 if (kolka==2)
  return true;
 else
  return false;
 }

//sprawdź czy możesz przegrać, jeśli tak to wypełnij puste pole w danej linii
bool sprawdz_dwojki_II()
 {
 if (spr_pion_II(0))
  {
  if (tablica[0][0]==' ')
   tablica[0][0]='X';
  if (tablica[0][1]==' ')
   tablica[0][1]='X';
  if (tablica[0][2]==' ')
   tablica[0][2]='X';
  return true;
  }
 if (spr_pion_II(1))
  {
  if (tablica[1][0]==' ')
   tablica[1][0]='X';
  if (tablica[1][1]==' ')
   tablica[1][1]='X';
  if (tablica[1][2]==' ')
   tablica[1][2]='X';
  return true;
  }
 if (spr_pion_II(2))
  {
  if (tablica[2][0]==' ')
   tablica[2][0]='X';
  if (tablica[2][1]==' ')
   tablica[2][1]='X';
  if (tablica[2][2]==' ')
   tablica[2][2]='X';
  return true;
  }

 if (spr_poziom_II(0))
  {
  if (tablica[0][0]==' ')
   tablica[0][0]='X';
  if (tablica[1][0]==' ')
   tablica[1][0]='X';
  if (tablica[2][0]==' ')
   tablica[2][0]='X';
  return true;
  }
 if (spr_poziom_II(1))
  {
  if (tablica[0][1]==' ')
   tablica[0][1]='X';
  if (tablica[1][1]==' ')
   tablica[1][1]='X';
  if (tablica[2][1]==' ')
   tablica[2][1]='X';
  return true;
  }
 if (spr_poziom_II(2))
  {
  if (tablica[0][2]==' ')
   tablica[0][2]='X';
  if (tablica[1][2]==' ')
   tablica[1][2]='X';
  if (tablica[2][2]==' ')
   tablica[2][2]='X';
  return true;
  }

 if (spr_ukos1_II())
  {
  if (tablica[0][0]==' ')
   tablica[0][0]='X';
  if (tablica[1][1]==' ')
   tablica[1][1]='X';
  if (tablica[2][2]==' ')
   tablica[2][2]='X';
  return true;
  }

 if (spr_ukos2_II())
  {
  if (tablica[2][0]==' ')
   tablica[2][0]='X';
  if (tablica[1][1]==' ')
   tablica[1][1]='X';
  if (tablica[0][2]==' ')
   tablica[0][2]='X';
  return true;
  }
 return false;
 }

//ruch komputera, trzeba go nauczyc grac !!!
void komputer()
 {
 int klos,wlos;
 if (sprawdz_dwojki_I()) //jesli jest mozliwosc wygrania
  {
  if (wygrana('X',kx,wx))
   {
   zwyc=gracz2;
   koniec=true;
   }
  }
 else   //a jesli brak mozliwosci wygrania to sprawdz czy mozesz przegrac
  {
  if (!sprawdz_dwojki_II())  //jesli nie bylo ryzyka przegrania to kombinuj :)
   {
   //"sztuczna inteligencja" :)
   printf("%s ",teksty[jezyk][45].c_str());
   if (styl_gry_komputera=="kolejno")
	{
	printf("%s\n",teksty[jezyk][46].c_str());
	for (int i=0; i<3; i++)   //po wierszach
	 {
	 for (int j=0; j<3; j++)  //po kolumnach
	  {
	  if (tablica[j][i]==' ') //jesli pole wolne
	   {
	   tablica[j][i]='X';     //wstaw X
	   wstawione=true;
	   break; //do j
	   }
	  }
	 if (wstawione)
	  {
	  wstawione=false;
	  break; //do i
	  }
	 }
	}
   else
	{
	printf("%s\n",teksty[jezyk][47].c_str());
	do
	 {
	 srand(time(NULL)); // "wymieszaj"
	 klos = rand()%3; // lusuj liczbe z przedzialu od 0 do 2
	 wlos = rand()%3; // lusuj liczbe z przedzialu od 0 do 2

	 if ((tablica[klos][wlos]==' ')&&(!((wlos==1)&&(klos==1)&&((krok==1)||(krok==2))&&((sposob_blokowania=="komputerowi")||(sposob_blokowania=="wszystkim")))))
	  {
	  tablica[klos][wlos]='X';
	  wstawione=true;
	  }
	 }
	while (!wstawione);
	wstawione=false;
	}
   } //koniec kombinowania czyli "sztucznej inteligencji"
  }
 druk();
 }

 void zapis(string zwyciezca,string przegrany)    //zapis  do pliku
  {
  FILE *plik;
  int lp=1;
  //liczenie linii
  plik=fopen("wyniki.txt","r");
  if (plik!=NULL)
   {
   vector<string> v;
   ifstream zrodlo("wyniki.txt");
   string linia;
   while(getline(zrodlo,linia))
	v.push_back(linia);
   for(int i=0;i<v.size();i++)
	lp++;
   }
  fclose(plik);
  //koniec liczenia linii

  //dopisywanie
  plik=fopen("wyniki.txt","a+");
  if (plik!=NULL)
   {
   time_t teraz;
   struct tm *czas;
   teraz = time(NULL);
   czas = localtime(&teraz);
   fprintf(plik,"%d) Dnia %d.%s.%d o godz. %d:%d:%d ",lp,czas->tm_mday,miesiace[czas->tm_mon].c_str(),czas->tm_year+1900,czas->tm_hour,czas->tm_min,czas->tm_sec);

   if (zwyc!="Komputer")
	fprintf(plik,"gracz ");
   fprintf(plik,"%s wygral z ",zwyciezca.c_str());
   if (przegr=="Komputer")
	fprintf(plik,"komputerem.\n");
   else
	{
	fprintf(plik,"graczem %s",przegrany.c_str());
	fprintf(plik,".\n");
	}
   }
  else
   printf("\n%s\n\n",teksty[jezyk][21].c_str());
  fclose(plik);
  //koniec dopisywania
  }

void z_komputerem()  //gra z komputerem
 {    
 printf("%s ",teksty[jezyk][9].c_str());
 /*if (getch()==(char)(27))
  {
  clrscr();
  menu();
  }*/
 cin>>gracz1;
 gracz2="Komputer";
 printf("\n");
 druk();
 for (krok=1; krok<10; krok++)//maksymalnie 9 ruchów
  {
  if ((krok%2)==1)
   {
   printf("%s %s\n",gracz1.c_str(),teksty[jezyk][10].c_str());
   ruch('O');
   }
  else
   {
   printf("%s\n",teksty[jezyk][11].c_str());
   komputer();
   }
  if (koniec)
   break;
  }//koniec petli for 9
 if (koniec)
  {
  printf("\n%s\n",teksty[jezyk][12].c_str());
  printf("%s %s.\n",teksty[jezyk][13].c_str(),zwyc.c_str());
  if (zwyc!="Komputer")
   {
   printf("%s\n",teksty[jezyk][14].c_str());
   if (zwyc==gracz1)
	przegr=gracz2;
   else
	przegr=gracz1;
   }
  else  //wygrał komputer
   {
   przegr=gracz1;
   printf("%s\n",teksty[jezyk][15].c_str());
   }
  zapis(zwyc,przegr);
  }
 else
  printf("\n%s\n",teksty[jezyk][16].c_str());
 printf("\n");
 pauza();
 clrscr();
 menu();
 }//koniec gry z komputerem

void dwuch_graczy()
 {
 printf("\n%s ",teksty[jezyk][17].c_str());
 cin>>gracz1;
 printf("%s ",teksty[jezyk][18].c_str());
 cin>>gracz2;
 druk();
 for (krok=1; krok<10; krok++) //maksymalnie 9 ruchów
  {
  if ((krok%2)==1)
   {
   printf("%s %s\n",gracz1.c_str(),teksty[jezyk][10].c_str());
   ruch('O');
   }
  else
   {
   printf("%s %s\n",gracz2.c_str(),teksty[jezyk][19].c_str());
   ruch('X');
   }
  if (koniec)
   break; //przerwanie petli 9-u ruchow
  } //koniec petli 9
 if (koniec)
  {
  printf("\n%s\n",teksty[jezyk][12].c_str());
  printf("%s %s.\n",teksty[jezyk][13].c_str(),zwyc.c_str());
  printf("%s\n",teksty[jezyk][14].c_str());
  if (zwyc==gracz1)
   przegr=gracz2;
  else
   przegr=gracz1;

  zapis(zwyc,przegr);
  }
 else
  printf("\n%s\n",teksty[jezyk][16].c_str());
 printf("\n");
 pauza();
 clrscr();
 menu();
 } //koniec trybu 2 graczy

void gra()
 {
 //clrscr();
 zerowanie();
 kx=0;
 wx=0;
 koniec=false;

 //menu_wewnetrzne();
 do
  {
  clrscr();
  for (int i=1; i<=45; i++)
   printf("%c",(char)(196));
  printf("\n");

  printf(" %s\n",teksty[jezyk][5].c_str());

  for (int i=1; i<=45; i++)
   printf("%c",(char)(196));
  printf("\n");

  printf("1 - %s\n",teksty[jezyk][6].c_str());
  printf("2 - %s\n",teksty[jezyk][7].c_str());
  printf("3 - %s\n\n\n\n",teksty[jezyk][8].c_str());

  for (int i=1; i<=45; i++)
   printf("%c",(char)(196));
  printf("\n");

  wybor=getch();
  printf("\n");
  }
 while ((wybor!='1')&&(wybor!='2')&&(wybor!='3'));

 switch (wybor)
  {
  case '1': z_komputerem();
			break;
  case '2': dwuch_graczy();
			break;
  case '3': clrscr();
			menu();
  }
 }

void wyniki()
 {
 FILE *plik;
 plik=fopen("wyniki.txt","r");
 if (plik!=NULL)
  {
  clrscr();
  ifstream zrodlo("wyniki.txt");
  string linia;
  for (int i=1; i<=75; i++)
   printf("%c",(char)(196));
  printf("\n");

  printf("                               %s\n",teksty[jezyk][20].c_str());

  for (int i=1; i<=75; i++)
   printf("%c",(char)(196));
  printf("\n");

  while (getline(zrodlo,linia))
   printf("%s\n",linia.c_str());

  for (int i=1; i<=75; i++)
   printf("%c",(char)(196));
  printf("\n\n");
  }
 else
  printf("%s\n\n",teksty[jezyk][53].c_str());

 fclose(plik);
 pauza();
 clrscr();
 menu();
 }

void wczytaj_ustawienia()
 {
 FILE *plik;
 
 plik=fopen("pl.lng","r");
 if (plik!=NULL)
  {
  ifstream zrodlo("pl.lng");
  for (int i=0; i <= 54; i++)
   {
   getline(zrodlo,teksty[0][i]);
   }
  }
 fclose(plik);

 plik=fopen("en.lng","r");
 if (plik!=NULL)
  {
  ifstream zrodlo("en.lng");
  for (int j=0; j <= 54; j++)
   {
   getline(zrodlo,teksty[1][j]);
   }
  }
 fclose(plik);

 printf("Wczytywanie ustawien / Loading settings\n\n");
 Sleep(1000);
 plik=fopen("ustawienia.ini","r");
 if (plik!=NULL)
  {
  ifstream zrodlo("ustawienia.ini");
  string linia;
  //dane są w liniach parzystych
  getline(zrodlo,linia);
  getline(zrodlo,styl_gry_komputera);
  getline(zrodlo,linia);
  getline(zrodlo,sposob_blokowania);
  getline(zrodlo,linia);
  getline(zrodlo,linia);
  numer_znaku_wypunktowania=strtoint(linia);
  getline(zrodlo,linia);
  getline(zrodlo,linia);
  if (linia=="polski")
   jezyk=0;
  else
   jezyk=1;
  if (((styl_gry_komputera=="kolejno")||(styl_gry_komputera=="losowo"))&&((sposob_blokowania=="komputerowi")||(sposob_blokowania=="graczom")||(sposob_blokowania=="wszystkim")||(sposob_blokowania=="nikomu"))&&((linia=="polski")||(linia=="angielski")))
   {
   printf("%s\n\n",teksty[jezyk][48].c_str());
   }
  else
   {
   styl_gry_komputera="kolejno";
   sposob_blokowania="nikomu";
   numer_znaku_wypunktowania=3;
   jezyk=0;
   printf("Blad odczytu pliku \"ustawienia.ini\".\nZaladowano ustawienia domyslne.\n\n");
   }
  }
 else
  {
  styl_gry_komputera="kolejno";
  sposob_blokowania="nikomu";
  printf("Blad odczytu pliku \"ustawienia.ini\".\nZaladowano ustawienia domyslne.\n\n");
  }
 fclose(plik);

 printf("%s\n\n",teksty[jezyk][54].c_str());

 pauza();

 clrscr();
 return;
 }

void zapisz_ustawienia()
 {
 FILE *plik;
 //zapisywanie
 plik=fopen("ustawienia.ini","w");
 if (plik!=NULL)
  {
  fprintf(plik,"[styl gry komputera]\n");
  fprintf(plik,"%s\n",styl_gry_komputera.c_str());
  fprintf(plik,"[blokuj srodkowe pole]\n");
  fprintf(plik,"%s\n",sposob_blokowania.c_str());
  fprintf(plik,"[numer znaczka wypunktowania]\n");
  fprintf(plik,"%d\n",numer_znaku_wypunktowania);
  fprintf(plik,"[jezyk]\n");
  if (jezyk==0)
   fprintf(plik,"polski");
  else
   fprintf(plik,"angielski");
  }
 else
  {
  printf("%s\n\n",teksty[jezyk][52].c_str());
  pauza();
  }
 fclose(plik);
 //koniec dopisywania
 }

void wypunktowanie()
 {
 printf("%c",(char)(numer_znaku_wypunktowania));
 }

void styl()
 {
 clrscr();
 for (int i=1; i<=45; i++)
  printf("%c",(char)(196));
 printf("\n");
 printf(" %s\n",teksty[jezyk][28].c_str());
 for (int i=1; i<=45; i++)
  printf("%c",(char)(196));
 printf("\n");
 printf("1 - %s  ",teksty[jezyk][29].c_str());
 if (styl_gry_komputera=="losowo")
  wypunktowanie();
 printf("\n");
 printf("2 - %s  ",teksty[jezyk][30].c_str());
 if (styl_gry_komputera=="kolejno")
  wypunktowanie();
 printf("\n");
 printf("3 - %s\n",teksty[jezyk][31].c_str());
 printf("4 - %s\n\n\n",teksty[jezyk][8].c_str());
 for (int i=1; i<=45; i++)
  printf("%c",(char)(196));
 printf("\n");

 wybor=getch();
 printf("\n");
 switch (wybor)
  {
  case '1': styl_gry_komputera="losowo";
			styl();
			break;
  case '2': styl_gry_komputera="kolejno";
			styl();
			break;
  case '3': zapisz_ustawienia();
			ustawienia();
			break;
  case '4': zapisz_ustawienia();
			clrscr();
			menu();
  default : styl();
  }
 }

void blokowanie()
 {
 clrscr();
 for (int i=1; i<=45; i++)
  printf("%c",(char)(196));
 printf("\n");
 printf(" %s\n",teksty[jezyk][32].c_str());
 for (int i=1; i<=45; i++)
  printf("%c",(char)(196));
 printf("\n");
 printf("1 - %s ",teksty[jezyk][33].c_str());
 if (sposob_blokowania=="komputerowi")
  wypunktowanie();
 printf("\n");
 printf("2 - %s ",teksty[jezyk][34].c_str());
 if (sposob_blokowania=="graczom")
  wypunktowanie();
 printf("\n");
 printf("3 - %s ",teksty[jezyk][35].c_str());
 if (sposob_blokowania=="wszystkim")
  wypunktowanie();
 printf("\n");
 printf("4 - %s ",teksty[jezyk][36].c_str());
 if (sposob_blokowania=="nikomu")
  wypunktowanie();
 printf("\n");
 printf("5 - %s\n",teksty[jezyk][31].c_str());
 printf("6 - %s\n",teksty[jezyk][8].c_str());
 for (int i=1; i<=45; i++)
  printf("%c",(char)(196));
 printf("\n");

 wybor=getch();
 printf("\n");
 switch (wybor)
  {
  case '1': sposob_blokowania="komputerowi";
			blokowanie();
			break;
  case '2': sposob_blokowania="graczom";
			blokowanie();
			break;
  case '3': sposob_blokowania="wszystkim";
			blokowanie();
			break;
  case '4': sposob_blokowania="nikomu";
			blokowanie();
			break;
  case '5': zapisz_ustawienia();
			ustawienia();
			break;
  case '6': zapisz_ustawienia();
            clrscr();
            menu();
  default : blokowanie();
  }
 }

void ustawienia_znaczka()
 {
 clrscr(); 
 for (int i=1; i<=45; i++)
  printf("%c",(char)(196));
 printf("\n");
 printf(" %s\n",teksty[jezyk][50].c_str());
 for (int i=1; i<=45; i++)
  printf("%c",(char)(196));
 printf("\n");
 for (int i = 1; i <= 5; i++)
  {
  printf("%d - %c ASCII %d  ",i,(char)(i),i);
  if (numer_znaku_wypunktowania==i)
   wypunktowanie();
  printf("\n");
  }
 printf("6 - %c ASCII 14 ",(char)(14));
 if (numer_znaku_wypunktowania==14)
  wypunktowanie();
 printf("\n");
 printf("7 - %c ASCII 15 ",(char)(15));
 if (numer_znaku_wypunktowania==15)
  wypunktowanie();
 printf("\n");

 printf("8 - %s\n",teksty[jezyk][31].c_str());
 printf("9 - %s\n",teksty[jezyk][8].c_str());
 for (int i=1; i<=45; i++)
  printf("%c",(char)(196));
 printf("\n");

 wybor=getch();
 printf("\n");
 switch (wybor)
  {
  case '1': numer_znaku_wypunktowania=1;
			ustawienia_znaczka();
			break;
  case '2': numer_znaku_wypunktowania=2;
			ustawienia_znaczka();
			break; 
  case '3': numer_znaku_wypunktowania=3;
			ustawienia_znaczka();
			break;
  case '4': numer_znaku_wypunktowania=4;
			ustawienia_znaczka();
			break;
  case '5': numer_znaku_wypunktowania=5;
			ustawienia_znaczka();
			break;
  case '6': numer_znaku_wypunktowania=14;
			ustawienia_znaczka();
			break;
  case '7': numer_znaku_wypunktowania=15;
			ustawienia_znaczka();
			break;
  case '8': zapisz_ustawienia();
			ustawienia();
			break;
  case '9': zapisz_ustawienia();
            clrscr();
            menu();
  default : ustawienia_znaczka();
  }
 }
 
void ustawienia_jezyka()
 {
 clrscr();
 for (int i=1; i<=45; i++)
  printf("%c",(char)(196));
 printf("\n");
 printf(" %s\n",teksty[jezyk][27].c_str());
 for (int i=1; i<=45; i++)
  printf("%c",(char)(196));
 printf("\n");
 printf("1 - Polski   ");
 if (jezyk==0)
  wypunktowanie();
 printf("\n");
 printf("2 - English  ");
 if (jezyk==1)
  wypunktowanie();
 printf("\n");
 printf("3 - %s\n",teksty[jezyk][31].c_str());
 printf("4 - %s\n\n\n",teksty[jezyk][8].c_str());
 for (int i=1; i<=45; i++)
  printf("%c",(char)(196));
 printf("\n");

 wybor=getch();
 printf("\n");
 switch (wybor)
  {
  case '1': jezyk=0;
			ustawienia_jezyka();
			break;
  case '2': jezyk=1;
			ustawienia_jezyka();
			break;
  case '3': zapisz_ustawienia();
			ustawienia();
			break;
  case '4': zapisz_ustawienia();
			clrscr();
			menu();
  default : ustawienia_jezyka();
  }
 }

void ustawienia()
 {
 clrscr();
 for (int i=1; i<=45; i++)
  printf("%c",(char)(196));
 printf("\n");
 printf(" %s\n",teksty[jezyk][22].c_str());
 for (int i=1; i<=45; i++)
  printf("%c",(char)(196));
 printf("\n");
 printf("1 - %s\n",teksty[jezyk][23].c_str());
 printf("2 - %s\n    %s\n",teksty[jezyk][24].c_str(),teksty[jezyk][25].c_str());
 printf("3 - %s\n",teksty[jezyk][49].c_str());
 printf("4 - %s\n",teksty[jezyk][26].c_str());
 printf("5 - %s\n",teksty[jezyk][8].c_str());
 for (int i=1; i<=45; i++)
  printf("%c",(char)(196));
 printf("\n");

 wybor=getch();
 printf("\n");
 switch (wybor)
  {
  case '1': styl();
			break;
  case '2': blokowanie();
			break;
  case '3': ustawienia_znaczka();
			break;
  case '4': ustawienia_jezyka();
			break;
  case '5': clrscr();
            menu();
  default : ustawienia();
  }
 }

void menu()
 {
 for (int i=1; i<=45; i++)
  printf("%c",(char)(196));
 printf("\n");

 printf(" %s\n",teksty[jezyk][0].c_str());
 for (int i=1; i<=45; i++)
  printf("%c",(char)(196));
 printf("\n");

 printf("1 - %s\n",teksty[jezyk][1].c_str());
 printf("2 - %s\n",teksty[jezyk][2].c_str());
 printf("3 - %s\n",teksty[jezyk][3].c_str());
 printf("4 - %s\n\n\n",teksty[jezyk][4].c_str());
 for (int i=1; i<=45; i++)
  printf("%c",(char)(196));
 printf("\n");

 wybor=getch();
 switch (wybor)
  {
  case '1': gra();
			break;
  case '2': wyniki();
			break;
  case '3': ustawienia();
			break;
  case '4':
  case (char)(27): abort();    //ESC
  default : clrscr();
			menu();
  }
 }

//*************    PROGRAM GLOWNY    *************
//aby wygrac z kompuerem przy stylu gry "kolejno":
//1,1 -> 2,2 -> 1,3 -> 3,1

int main()
 {
 wczytaj_ustawienia();
 menu();
 return 0;
 }
Komentarze
photo
+3 # Bartłomiej G. 2012-10-27 15:42
jakie to długie-imponujące
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
-4 # Romek 2014-09-27 17:40
A może by Autor to skompilował i wrzucił na stronę jako .exe
Można by sprawdzić czy da się z komputerem wygrać.
Odpowiedz | Odpowiedz z cytatem | Cytować
Dodaj komentarz