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: *****  / 18
SłabyŚwietny
Nadesłany przez Kamil Konieczka, 26 czerwca 2010 04:46
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.

xo v1.5.cpp:
//  (c) 2010 Kamil Konieczka
//  www.algorytm.org
//  XO v1.5
//  Program napisany na początku edukacji, także proszę o wyrozumiałość
//  Grę najlepiej obsługiwać numlockiem. Plansza pokrywa się z cyframi


#include <iostream>
#include <string>
#include <conio.h>
#include <stdlib.h>
using namespace std;

/********   FUNKCJE   ***************************/
void plansza();
void pole(int x,int y);
void czysc();
void start();
void move(int g);
void rezultat(int win);
void rank();
int rozp();
int spr();
int gracze();
/************************************************/
int tab[3][3];
int wyb, win, g, gstat=0, pkt_g1=0, pkt_g2=0, tmp;
string gracz1, gracz2;
float v=1.5;
/************************************************/
main()
{
      while(1)
      {
          win=0;
          start();
          cout<<"1. Nowa gra\n2. Wprowadz graczy\n0. Koniec\n\n";
          rank();
          cout<<"\n\nTwoj wybor: ";cin>>wyb;
          switch(wyb){
                     case 1:
                          if(gstat!=0)
                          {
                                      start();
                                      g=rozp();
                                      while(1)
                                      {
                                              plansza();
                                              move(g);
                                              plansza();
                                              win=spr();
                                              if(win!=0)break;
                                              g++;
                                      }
                          rezultat(win);
                          getch();
                          break;
                          }
                          else
                          {
                              cout<<"Najpierw prowadz graczy";
                              getch();
                              break;
                          }
                     case 2:
                          gstat=gracze();
                          break;
                     case 0: return 0;
                     default : 
                             cout<<"Brak opcji...";
                             getch();
                     }
      czysc();
      }
}
/**************  SOURCES  *****************************/
int rozp()
{
    cout<<"Kto rozpoczyna?\n1. "<<gracz1<<"\n2. "<<gracz2<<"\n\nTwoj wybor:";
    cin>>g;
    return g;
}
//**************
//**************
int gracze()
{
    start();
    cout<<"Podaj nazwe gracza X\n\n";
    cin>>gracz1;
    start();
    cout<<"Podaj nazwe gracza O\n\n";
    cin>>gracz2;
    return 1;
}
//**************
void rezultat(int win)
{
     if(win==1)
     {
               if(g%2)
               {
                      cout<<"\nWygrywa gracz: "<<gracz1;
                      pkt_g1++;
               }
               else
               {
                      cout<<"\nWygrywa gracz: "<<gracz2;
                      pkt_g2++;
               }
     }
     else cout<<"Remis";
}
//**************
void move(int g)
{
     int m,x,y,bl;
     do{
     if(g%2)cout<<"\n"<<gracz1<<" wybierz pole: ";
     else cout<<"\n"<<gracz2<<" wybierz pole: ";
     cin>>m;
     if(m>9||m<1)
     {
                 cout<<"\nBrak podanego pola na plaszy użytkowniku...";
                 getch();
                 bl=0;
                 plansza();
     }
     else
     {
     /*A*/if(m<4&&m>0){y=(m-1);x=2;bl=1;}
     /*B*/if(m<7&&m>3){y=(m-4);x=1;bl=1;}
     /*C*/if(m<10&&m>6){y=(m-7);x=0;bl=1;}
     if(tab[x][y]!=0)
     {
                     cout<<"\nPole zajete użytkowniku...";
                     getch();
                     bl=0;
                     plansza();
     }
     }
     }while(bl!=1);
     if(g%2) tab[x][y]=1;
     else tab[x][y]=2;
}
//**************
void pole(int x,int y){
     if(tab[x][y]==0)cout<<" ";
     if(tab[x][y]==1)cout<<"X";
     if(tab[x][y]==2)cout<<"O";}
//**************
int spr(){
for(int c=0;c<3;c++){
if(((tab[c][0]==1)&&(tab[c][1]==1)&&(tab[c][2]==1))||((tab[c][0]==2)&&(tab[c][1]==2)&&(tab[c][2]==2)))return 1;
if(((tab[0][c]==1)&&(tab[1][c]==1)&&(tab[2][c]==1))||((tab[0][c]==2)&&(tab[1][c]==2)&&(tab[2][c]==2)))return 1;}
if(((tab[0][0]==1)&&(tab[1][1]==1)&&(tab[2][2]==1))||((tab[0][0]==2)&&(tab[1][1]==2)&&(tab[2][2]==2)))return 1;
else{
if(((tab[0][2]==1)&&(tab[1][1]==1)&&(tab[2][0]==1))||((tab[0][2]==2)&&(tab[1][1]==2)&&(tab[2][0]==2)))return 1;
tmp=9;for(int c=0;c<3;c++){for(int d=0;d<3;d++){if((tab[c][d]==1)||(tab[c][d]==2))tmp--;}}if(tmp==0)return 2;
else return 0;}}
//**************
void plansza()
{
     start();
     cout<<"\n\n";
     for(int x=0;x<3;x++)
     {
             cout<<"\t";
             for(int y=0;y<3;y++)
             {
                     //cout<<tab[x][y];
                     pole(x,y);
                     if(y<2)cout<<"|";
             }
             cout<<"\n";
     if(x<2)cout<<"\t-----\n";
     }
     cout<<"\n\n";
     rank();
}
//**************
void rank(){cout<<"\nAktualny ranking:\n\n"<<gracz1<<"\t- "<<pkt_g1<<" pkt\n"<<gracz2<<"\t- "<<pkt_g2<<" pkt\n";}
void start(){system("cls");cout<<"   KOLKO I KRZYZYK v"<<v<<"  \n-------------------------\n";}
void czysc(){for(int a=0;a<3;a++)for(int b=0;b<3;b++)tab[a][b]=0;}
//**************

Dodaj komentarz