Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- #define PLY_ONE 1
- #define PLY_TWO 2
- #define NO_PLY 0
- int field[3*3];
- int sign(int val)
- {
- if(val>0)
- {
- return 1;
- }
- else
- {
- return 0;
- }
- }
- void clearField()
- {
- for(int i=0; i<9;i++)
- {
- field[i] = NO_PLY;
- }
- }
- void print_field()
- {
- for(int y=0;y<3;y++)
- {
- for(int x=0;x<3;x++)
- {
- switch (field[x + y*3])
- {
- case NO_PLY:
- cout <<" ";
- break;
- case PLY_ONE:
- cout <<"X";
- break;
- case PLY_TWO:
- cout <<"O";
- break;
- }
- if(x!=2)
- {
- cout <<" | ";
- }
- }
- cout <<"\n";
- }
- }
- int check_field()
- {
- int sum = 0;
- int sum2 = 0;
- sum = field[0]+field[1]+field[2];
- sum2 = sign(field[0])+sign(field[1])+sign(field[2]);
- if((sum==3 || sum==6) && sum2==3)
- {
- return field[0];
- }
- sum = field[3]+field[4]+field[5];
- sum2 = sign(field[3])+sign(field[4])+sign(field[5]);
- if((sum==3 || sum==6) && sum2==3)
- {
- return field[3];
- }
- sum = field[6]+field[7]+field[8];
- sum2 = sign(field[6])+sign(field[7])+sign(field[8]);
- if((sum==3 || sum==6) && sum2==3)
- {
- return field[6];
- }
- sum = field[0]+field[3]+field[6];
- sum2 = sign(field[0])+sign(field[3])+sign(field[6]);
- if((sum==3 || sum==6) && sum2==3)
- {
- return field[3];
- }
- sum = field[1]+field[4]+field[7];
- sum2 = sign(field[1])+sign(field[4])+sign(field[7]);
- if((sum==3 || sum==6) && sum2==3)
- {
- return field[1];
- }
- sum = field[2]+field[5]+field[8];
- sum2 = sign(field[2])+sign(field[5])+sign(field[8]);
- if((sum==3 || sum==6) && sum2==3)
- {
- return field[2];
- }
- sum = field[0]+field[4]+field[8];
- sum2 = sign(field[0])+sign(field[4])+sign(field[8]);
- if((sum==3 || sum==6) && sum2==3)
- {
- return field[0];
- }
- sum = field[2]+field[4]+field[6];
- sum2 = sign(field[2])+sign(field[4])+sign(field[6]);
- if((sum==3 || sum==6) && sum2==3)
- {
- return field[2];
- }
- return NO_PLY;
- }
- int main(int argc, char *argv[])
- {
- int turn = PLY_ONE;
- bool playing = true;
- int chosen_field = 1;
- bool valid_field=false;
- clearField();
- cout <<"Wilkommen im Kommandozeilen TicTacToe!\n";
- cout <<"Das Spielfeld:\n\t1 | 2 | 3\n\t4 | 5 | 6\n\t7 | 8 | 9\n";
- cout <<"Zeichen von Spieler 1: X\nZeichen von Spieler 2: O\n\n";
- while(playing)
- {
- if(turn==NO_PLY)
- turn=PLY_ONE;
- cout <<"Spieler "<<turn<<" ist am Zug.\n";
- valid_field = false;
- while(!valid_field)
- {
- cout <<"Feld: ";
- cin >> chosen_field;
- if(chosen_field<1 || chosen_field>9)
- {
- cout <<"Feld "<<chosen_field<<" exisitiert nicht!\n\n";
- continue;
- }
- chosen_field--;
- if(field[chosen_field]!=NO_PLY)
- {
- cout <<"Feld "<<chosen_field+1<<" ist schon belegt!\n\n";
- continue;
- }
- field[chosen_field] = turn;
- valid_field = true;
- cout <<"\n";
- }
- if(turn==PLY_ONE)
- {
- turn=PLY_TWO;
- }
- else
- {
- turn=PLY_ONE;
- }
- print_field();
- int winningPlayer = NO_PLY;
- winningPlayer = check_field();
- if(winningPlayer!=NO_PLY)
- {
- cout <<"Spieler "<<winningPlayer<<" hat gewonnen!";
- playing = false;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment