Advertisement
alin991

XO

Jun 25th, 2022
1,219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.20 KB | None | 0 0
  1. // XO.cpp : This file contains the 'main' function. Program execution begins and ends there.
  2. //
  3.  
  4. #include <iostream>
  5. #include <cmath>
  6. #include "raylib.h"
  7.  
  8. using namespace std;
  9.  
  10. int board[100][100]{};
  11.  
  12. class checkforWin {
  13. private:
  14.     float N;
  15.     int Diag1 = 0;
  16.     int Diag2 = 0;
  17.  
  18. public:
  19.     int arr[100][3]{};
  20.  
  21. public:
  22.     bool check() {
  23.         for (int i = 0; i < N; i++) {
  24.             if ((arr[i][0] == N) || (arr[i][0] == -N))
  25.                 return true;
  26.             else if ((arr[i][1] == N) || (arr[i][1] == -N))
  27.                 return true;
  28.         }
  29.         if ((Diag1 == N) || (Diag1 == -N))
  30.             return true;
  31.         else if ((Diag2 == N) || (Diag2 == -N))
  32.             return true;
  33.         else
  34.             return false;
  35.     }
  36.     void addX(int i, int j) {
  37.         arr[i][0] += 1;
  38.         arr[j][1] += 1;
  39.         if (i == j) {
  40.             Diag1 += 1;
  41.         }
  42.         if ((N - i) == j) {
  43.             Diag2 += 1;
  44.         }
  45.     }
  46.  
  47.     void addO(int i, int j) {
  48.         arr[i][0] -= 1;
  49.         arr[j][1] -= 1;
  50.         if (i == j) {
  51.             Diag1 -= 1;
  52.         }
  53.         if ((N - i) == j) {
  54.             Diag2 -= 1;
  55.         }
  56.     }
  57.  
  58.     checkforWin(float n) {
  59.         N = n;
  60.     }
  61. };
  62.  
  63. class DrawGame{
  64. private:
  65.     float FinalX;
  66.     float FinalY;
  67.     float sizeLetter;
  68.     int secX;
  69.     int secY;
  70.  
  71. public:
  72.     float WindowX;
  73.     float WindowY;
  74.     float TotalSections;
  75.  
  76.  
  77.     void DrawX(int x, int y) {
  78.         secX = x + 1;
  79.         secY = y + 1;
  80.         FinalX = secX * (WindowX / TotalSections);
  81.         FinalY = secY * (WindowY / TotalSections);
  82.         DrawLineEx({ FinalX, FinalY}, {FinalX-sizeLetter, FinalY - sizeLetter}, 10, BLACK);
  83.         DrawLineEx({ FinalX-sizeLetter, FinalY}, { FinalX, FinalY-sizeLetter }, 10, BLACK);
  84.     }
  85.  
  86.     void DrawO(int x, int y) {
  87.         secX = x + 1;
  88.         secY = y + 1;
  89.         FinalX = secX * (WindowX / TotalSections);
  90.         FinalY = secY * (WindowY / TotalSections);
  91.         DrawLineEx({ FinalX, FinalY}, { FinalX - sizeLetter, FinalY }, 10, BLACK);
  92.         DrawLineEx({ FinalX - sizeLetter, FinalY}, { FinalX - sizeLetter, FinalY - sizeLetter }, 10, BLACK);
  93.         DrawLineEx({ FinalX - sizeLetter, FinalY - sizeLetter }, { FinalX, FinalY - sizeLetter }, 10, BLACK);
  94.         DrawLineEx({ FinalX, FinalY- sizeLetter }, { FinalX, FinalY}, 10, BLACK);
  95.  
  96.     }
  97.  
  98.     void DrawGrid() {
  99.         for (int i = 1; i < TotalSections; i++) {
  100.             DrawLineEx({ i * WindowX / TotalSections, 0 }, { i * WindowX / TotalSections, WindowY }, 5, BLACK);
  101.             DrawLineEx({ 0, i * WindowY / TotalSections }, { i * WindowX, i*WindowY / TotalSections }, 5, BLACK);
  102.         }
  103.     }
  104.  
  105.  
  106.  
  107.     DrawGame(float windowX, float windowY, float n) {
  108.         WindowX = windowX;
  109.         WindowY = windowY;
  110.         TotalSections = n;
  111.         sizeLetter = min(WindowX / TotalSections, WindowY / TotalSections)-10;
  112.     }
  113. };
  114.  
  115.  
  116. int main()
  117. {  
  118.  
  119.     InitWindow(900, 600, "Alin");
  120.     SetWindowState(FLAG_VSYNC_HINT);
  121.     int sizegrid = 4;
  122.     DrawGame draw = DrawGame(GetScreenWidth(), GetScreenHeight(), (float)sizegrid);
  123.     checkforWin cfw = checkforWin((float)sizegrid);
  124.     while (!WindowShouldClose())
  125.     {
  126.         int xMouse = 0;
  127.         int yMouse = 0;
  128.        
  129.         for (int i = 0; i < sizegrid; i++) {
  130.             for (int j = 0; j < sizegrid; j++) {
  131.                 if (board[i][j] == 1) {
  132.                     draw.DrawX(i, j);
  133.                     cfw.addX(i, j);
  134.                 }
  135.             }
  136.         }
  137.         for (int i = 0; i < sizegrid; i++) {
  138.             cout << cfw.arr[i][0] << cfw.arr[i][1];
  139.         }
  140.         if (cfw.check()) {
  141.             CloseWindow();
  142.         }
  143.  
  144.         BeginDrawing();
  145.             ClearBackground(WHITE);
  146.             DrawFPS(5, 5);
  147.             draw.DrawGrid();
  148.             if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) {
  149.                 xMouse = GetMouseX();
  150.                 yMouse = GetMouseY();
  151.                 xMouse = xMouse / (GetScreenWidth() /(float) sizegrid);
  152.                 yMouse = yMouse / (GetScreenHeight() /(float) sizegrid);
  153.                 board[xMouse][yMouse] = 1;
  154.             }
  155.  
  156.         EndDrawing();
  157.     }
  158.     CloseWindow();
  159.  
  160. }
  161.  
  162.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement