-
-
Save PHWade/79dfd5834ae82d9155e0e5505667c6a1 to your computer and use it in GitHub Desktop.
Codecademy export
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <vector> | |
#include "ttt.h" | |
int main(){ | |
//Definitions will go here | |
bool turn_counter=true; //Player 1 goes first, aka 'noughts' | |
int input; | |
std::vector<char> updated_board; | |
//The tic tac toe game board will be a vector of size 3x3=9 | |
std::vector<char> board={' ',' ',' ',' ',' ',' ',' ',' ',' '}; | |
//Start game by displaying the empty board | |
display_board(board); | |
//Odd numbered turns will be Player 1, who plays noughts, and even numbered turns will be Player 2, who plays crosses. Track this with turn_counter. | |
while (is_filled(board)==false&&(victory_1(board)==false&&victory_2(board)==false)){ | |
if (turn_counter==true){ | |
//Player 1 | |
std::cout<<"Enter a number between 0 and 8, Player 1, and that will be your move.\n"; | |
std::cin>>input; | |
updated_board=noughts(input,board); | |
board=updated_board; | |
display_board(board); | |
} | |
else if (turn_counter==false){ | |
//Player 2 | |
std::cout<<"Enter a number between 0 and 8, Player 2, and that will be your move.\n"; | |
std::cin>>input; | |
updated_board=crosses(input,board); | |
board=updated_board; | |
display_board(board); | |
} | |
turn_counter=!turn_counter; | |
} | |
if(victory_1(board)==true){ | |
std::cout<<"Player 1 has won!\n"; | |
return 0; | |
} | |
else if(victory_2(board)==true){ | |
std::cout<<"Player 2 has won!\n"; | |
return 0; | |
} | |
else { | |
std::cout<<"The game ended in a tie!\n"; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <vector> | |
//Declare functions here | |
void display_board(std::vector <char> vec); | |
bool is_filled(std::vector<char> vec); | |
std::vector<char> noughts(int num1, std::vector<char> vec1); | |
std::vector<char> crosses(int num1, std::vector<char> vec1); | |
bool victory_1(std::vector<char> vec); | |
bool victory_2(std::vector<char> vec); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <vector> | |
#include "ttt.h" | |
//Define functions here | |
void display_board(std::vector<char> vec){ | |
if(vec.size()==9){ | |
std::cout<<"_______\n"<<"|"<<vec[0]<<"|"<<vec[1]<<"|"<<vec[2]<<"|\n"<<"_______\n"<<"|"<<vec[3]<<"|"<<vec[4]<<"|"<<vec[5]<<"|\n"<<"_______\n"<<"|"<<vec[6]<<"|"<<vec[7]<<"|"<<vec[8]<<"|\n"<<"_______\n"; | |
} | |
else{ | |
std::cout<<"Someone has stolen the tic tac toe board!\n"; | |
} | |
} | |
bool is_filled(std::vector<char> vec){ | |
int filled_in=0; | |
for(int i=0;i<vec.size();i++){ | |
if(vec[i]!=' '){ | |
++filled_in; | |
} | |
} | |
if(filled_in==vec.size()){ | |
return true; | |
} | |
else{ | |
return false; | |
} | |
} | |
std::vector<char> noughts(int num1, std::vector<char> vec1){ | |
std::vector<char> vec2; | |
for(int i=0;i<vec1.size();i++){ | |
vec2.push_back(vec1[i]); | |
} | |
if(vec2[num1]==' '){ | |
vec2.at(num1)='O'; | |
} | |
return vec2; | |
} | |
std::vector<char> crosses(int num1, std::vector<char> vec1){ | |
std::vector<char> vec2; | |
for(int i=0;i<vec1.size();i++){ | |
vec2.push_back(vec1[i]); | |
} | |
if(vec2[num1]==' '){ | |
vec2.at(num1)='X'; | |
} | |
return vec2; | |
} | |
bool victory_1(std::vector<char> vec){ | |
if(vec[0]=='O'&&vec[1]=='O'&&vec[2]=='O'){ | |
return true; | |
} | |
else if(vec[0]=='O'&&vec[4]=='O'&&vec[8]=='O'){ | |
return true; | |
} | |
else if(vec[0]=='O'&&vec[3]=='O'&&vec[6]=='O'){ | |
return true; | |
} | |
else if(vec[1]=='O'&&vec[4]=='O'&&vec[5]=='O'){ | |
return true; | |
} | |
else if(vec[2]=='O'&&vec[4]=='O'&&vec[6]=='O'){ | |
return true; | |
} | |
else if(vec[2]=='O'&&vec[5]=='O'&&vec[8]=='O'){ | |
return true; | |
} | |
else if(vec[3]=='O'&&vec[4]=='O'&&vec[5]=='O'){ | |
return true; | |
} | |
else if(vec[6]=='O'&&vec[7]=='O'&&vec[8]=='O'){ | |
return true; | |
} | |
else{ | |
return false; | |
} | |
} | |
bool victory_2(std::vector<char> vec){ | |
if(vec[0]=='X'&&vec[1]=='X'&&vec[2]=='X'){ | |
return true; | |
} | |
else if(vec[0]=='X'&&vec[4]=='X'&&vec[8]=='X'){ | |
return true; | |
} | |
else if(vec[0]=='X'&&vec[3]=='X'&&vec[6]=='X'){ | |
return true; | |
} | |
else if(vec[1]=='X'&&vec[4]=='X'&&vec[5]=='X'){ | |
return true; | |
} | |
else if(vec[2]=='X'&&vec[4]=='X'&&vec[6]=='X'){ | |
return true; | |
} | |
else if(vec[2]=='X'&&vec[5]=='X'&&vec[8]=='X'){ | |
return true; | |
} | |
else if(vec[3]=='X'&&vec[4]=='X'&&vec[5]=='X'){ | |
return true; | |
} | |
else if(vec[6]=='X'&&vec[7]=='X'&&vec[8]=='X'){ | |
return true; | |
} | |
else{ | |
return false; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment