Updated the ttt-gui.cpp
This commit is contained in:
parent
b5695210b0
commit
2532458f7b
53
ttt-gui.cpp
53
ttt-gui.cpp
@ -6,7 +6,37 @@
|
|||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
string rows[9] = {"-", "-", "-","-", "-", "-","-", "-", "-"};
|
int state = 0; // 0 = ingame, 1 = end
|
||||||
|
|
||||||
|
string rows[9] = {"-", "-", "-",
|
||||||
|
"-", "-", "-",
|
||||||
|
"-", "-", "-"};
|
||||||
|
|
||||||
|
bool playerWon(string character) {
|
||||||
|
for (int i = 0; i < 9; i += 3) {
|
||||||
|
if (rows[i] == character && rows[i + 1] == character && rows[i + 2] == character) return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < 3; i++) {
|
||||||
|
if (rows[i] == character && rows[i + 3] == character && rows[i + 6] == character) return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rows[0] == character && rows[4] == character && rows[8] == character) return true;
|
||||||
|
if (rows[2] == character && rows[4] == character && rows[6] == character) return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void generateOpponent() {
|
||||||
|
int random = rand() % 10;
|
||||||
|
|
||||||
|
if (rows[random] != "-") {
|
||||||
|
generateOpponent();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
rows[random] = "O";
|
||||||
|
}
|
||||||
|
|
||||||
int getBoardPosition(int position) {
|
int getBoardPosition(int position) {
|
||||||
int windowThird = WINDOW_SIZE / 3;
|
int windowThird = WINDOW_SIZE / 3;
|
||||||
@ -16,6 +46,12 @@ int getBoardPosition(int position) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void renderEnd(SDL_Renderer *renderer) {
|
||||||
|
SDL_RenderClear(renderer);
|
||||||
|
|
||||||
|
SDL_RenderPresent(renderer);
|
||||||
|
}
|
||||||
|
|
||||||
void render(SDL_Renderer *renderer, SDL_Texture *bg) {
|
void render(SDL_Renderer *renderer, SDL_Texture *bg) {
|
||||||
SDL_RenderClear(renderer);
|
SDL_RenderClear(renderer);
|
||||||
|
|
||||||
@ -40,8 +76,8 @@ void render(SDL_Renderer *renderer, SDL_Texture *bg) {
|
|||||||
string row = rows[i-1];
|
string row = rows[i-1];
|
||||||
|
|
||||||
if (row != "-") {
|
if (row != "-") {
|
||||||
int posX = 200;
|
int posX = ((i - 1) % 3) * (WINDOW_SIZE / 3) + 32;
|
||||||
int posY = WINDOW_SIZE / ceil(i/3);
|
int posY = ((i - 1) / 3) * (WINDOW_SIZE / 3) + 32;
|
||||||
|
|
||||||
cout << posX << " " << posY << "\n";
|
cout << posX << " " << posY << "\n";
|
||||||
|
|
||||||
@ -75,6 +111,9 @@ int main() {
|
|||||||
while (gameOpen) {
|
while (gameOpen) {
|
||||||
SDL_Event event;
|
SDL_Event event;
|
||||||
while (SDL_PollEvent(&event)) {
|
while (SDL_PollEvent(&event)) {
|
||||||
|
if (playerWon("X") || playerWon("O")) state = 1;
|
||||||
|
|
||||||
|
|
||||||
if (event.type == SDL_QUIT) gameOpen = false;
|
if (event.type == SDL_QUIT) gameOpen = false;
|
||||||
if (event.type == SDL_MOUSEBUTTONUP) {
|
if (event.type == SDL_MOUSEBUTTONUP) {
|
||||||
int mouseX;
|
int mouseX;
|
||||||
@ -86,11 +125,19 @@ int main() {
|
|||||||
|
|
||||||
int pos = (row - 1) * 3 + column;
|
int pos = (row - 1) * 3 + column;
|
||||||
|
|
||||||
|
if (rows[pos-1] == "-") {
|
||||||
rows[pos-1] = "X";
|
rows[pos-1] = "X";
|
||||||
render(renderer, background);
|
render(renderer, background);
|
||||||
|
SDL_Delay(500);
|
||||||
|
generateOpponent();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (state == 1) {
|
||||||
|
renderEnd(renderer);
|
||||||
|
} else {
|
||||||
render(renderer, background);
|
render(renderer, background);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user