Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<iomanip>
- #define _WIN32_WINNT 0x0500
- #include<windows.h>
- using namespace std;
- bool OX = 1;
- char grid[105][105];
- void Show_ascii_map(char grid[105][105])
- {
- COORD coord;
- coord.X = 0;
- coord.Y = 0;
- SetConsoleCursorPosition(GetStdHandle( STD_OUTPUT_HANDLE ), coord);
- Sleep(20);
- for(int i = 40; i <= 60; i++){
- for(int j = 40; j <= 60; j++)
- cout << grid[i][j] << " ";
- cout << "\n";
- }
- }
- void Create_ascii_map(char grid[][105])
- {
- for(int i = 0; i <= 100; i++)
- for(int j = 0; j <= 100; j++)
- grid[i][j] = '_';
- }
- POINT PointGridTransform(POINT Cursor)
- {
- POINT v = Cursor;
- v.x = Cursor.x / 16;
- v.y = Cursor.y / 14;
- return v;
- }
- bool isValid(POINT Cursor)
- {
- if((Cursor.y < 0 || Cursor.x < 0) || (Cursor.y > 20 || Cursor.x > 20))
- return 0;
- return 1;
- }
- void CheckWinCondition(int posX, int posY, char grid[105][105])
- {
- int valX[] = {0, -1, 0, 1, 1, -1, 1, -1};
- int valY[] = {1, 0, -1, 0, 1, -1, -1, 1};
- for(int i = 0; i < 8; i++)
- {
- int lineVerifier = 0;
- int cx = posX, cy = posY;
- if(OX == 1){
- for(int j = 0; j < 4; j++)
- {
- cx += valX[i];
- cy += valY[i];
- if(grid[cy][cx] != 'X'){
- lineVerifier = 1;
- break;
- }
- }
- if(lineVerifier == 0)
- {
- system("CLS");
- cout << "X Wins";
- Sleep(2000);
- exit(1);
- }
- int cx = posX, cy = posY;
- lineVerifier = 0;
- if(grid[posY][posX] == '?'){
- for(int j = 0; j < 4; j++)
- {
- cx += valX[i];
- cy += valY[i];
- if(grid[cy][cx] != '?'){
- lineVerifier = 1;
- break;
- }
- }
- if(lineVerifier == 0)
- {
- system("CLS");
- cout << "X Wins";
- Sleep(2000);
- exit(1);
- }
- }
- }
- else
- {
- lineVerifier = 0;
- for(int j = 0; j < 4; j++)
- {
- cx += valX[i];
- cy += valY[i];
- if(grid[cy][cx] != 'O'){
- lineVerifier = 1;
- break;
- }
- }
- if(lineVerifier == 0)
- {
- system("CLS");
- cout << "O Wins";
- Sleep(2000);
- exit(1);
- }
- int cx = posX, cy = posY;
- lineVerifier = 0;
- if(grid[posY][posX] == '?'){
- for(int j = 0; j < 4; j++)
- {
- cx += valX[i];
- cy += valY[i];
- if(grid[cy][cx] != '?'){
- lineVerifier = 1;
- break;
- }
- }
- if(lineVerifier == 0)
- {
- system("CLS");
- cout << "O Wins";
- Sleep(2000);
- exit(1);
- }
- }
- }
- }
- }
- void PlayerMove(POINT gridCoord, bool is1Pressed, bool is2Pressed)
- {
- POINT Coords = PointGridTransform(gridCoord);
- if(is1Pressed == true && grid[Coords.y + 40][Coords.x + 40] == '_')
- {
- if(OX == 0){
- grid[Coords.y + 40][Coords.x + 40] = 'O';
- }
- else{
- grid[Coords.y + 40][Coords.x + 40] = 'X';
- }
- CheckWinCondition(Coords.x + 40, Coords.y + 40, grid);
- OX = 1 - OX;
- }
- if(is2Pressed == true && grid[Coords.y + 40][Coords.x + 40] == '_')
- {
- grid[Coords.y + 40][Coords.x + 40] = '?';
- CheckWinCondition(Coords.x + 40, Coords.y + 40, grid);
- OX = 1 - OX;
- }
- }
- bool isMouse1Pressed()
- {
- if((GetKeyState(VK_LBUTTON) & 0x100) != 0)
- {
- return 1;
- }
- return 0;
- }
- bool isMouse2Pressed()
- {
- if((GetKeyState(VK_RBUTTON) & 0x100) != 0)
- {
- return 1;
- }
- return 0;
- }
- void EnableGame(char grid[][105])
- {
- POINT p;
- HWND windowConsole = GetConsoleWindow();
- RECT windowApiDimensions;
- GetWindowRect(windowConsole, &windowApiDimensions);
- GetCursorPos(&p);
- ScreenToClient(windowConsole, &p);
- PlayerMove(p, isMouse1Pressed(), isMouse2Pressed());
- }
- int main()
- {
- Create_ascii_map(grid);
- while(1)
- {
- EnableGame(grid);
- Show_ascii_map(grid);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement