Skip to content

Instantly share code, notes, and snippets.

@PHWade

PHWade/ttt.cpp Secret

Forked from codecademydev/ttt.cpp
Created April 27, 2023 19:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save PHWade/79dfd5834ae82d9155e0e5505667c6a1 to your computer and use it in GitHub Desktop.
Save PHWade/79dfd5834ae82d9155e0e5505667c6a1 to your computer and use it in GitHub Desktop.
Codecademy export
#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";
}
}
#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);
#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