Browse Source

Added GameManager

GeorgeKolog 6 years ago
parent
commit
9c54f196e7
5 changed files with 73 additions and 1 deletions
  1. 1 0
      include/Cell.h
  2. 13 0
      include/hotseatgame/GameManager.h
  3. 3 0
      source/Cell.cpp
  4. 1 1
      source/UnitsQueue.cpp
  5. 55 0
      source/hotseatgame/GameManager.cpp

+ 1 - 0
include/Cell.h

@@ -1,6 +1,7 @@
 #pragma once
 #include <queue>
 #include <vector>
+#include <iostream>
 /*
  * Решили, что метод canAttackForDistance(int) имеет шаблон, который обозначает тип атаки
  * Melee - без учёта препятствий

+ 13 - 0
include/hotseatgame/GameManager.h

@@ -0,0 +1,13 @@
+#include <vector>
+
+class Cell;
+
+class GameManager{
+private:
+    std::vector< std::vector< Cell* > > game_table_;
+    int col_table_size_, row_table_size_;
+    void generate_table_();
+    void print_all();
+public:
+    GameManager(int, int);
+};

+ 3 - 0
source/Cell.cpp

@@ -1,3 +1,6 @@
+/*
+ * I love Qt
+ */
 #include "Cell.h"
 #include "unit.h"
 #include <string>

+ 1 - 1
source/UnitsQueue.cpp

@@ -1,4 +1,4 @@
-#include "../include/UnitsQueue.h"
+#include "UnitsQueue.h"
 #include <vector>
 #include <string>
 

+ 55 - 0
source/hotseatgame/GameManager.cpp

@@ -0,0 +1,55 @@
+/*
+ * Someone tells, that Qt can to build this
+ */
+#include "Cell.h"
+#include "GameManager.h"
+
+#include <iostream>
+
+GameManager::GameManager(int colSize, int rowSize):col_table_size_(colSize), row_table_size_(rowSize) {
+    generate_table_();
+}
+
+void GameManager::generate_table_() {
+    game_table_.assign(col_table_size_, std::vector< Cell* >(row_table_size_, nullptr));
+    for (int col = 0; col < col_table_size_; ++col) {
+        for (int row = 0; row < row_table_size_; ++row) {
+            game_table_[col][row] = new Cell(nullptr);
+        }
+    }
+    int isEven = 1;
+    for (int col = 0; col < col_table_size_; ++col) {
+        isEven ^= 1;
+        for (int row = 0; row < row_table_size_; ++row) {
+            if (col != 0 && row != 0 -isEven) {
+                game_table_[col][row]->setleftUp(game_table_[col - 1][row - 1 +isEven]);
+            }
+            if (row != 0) {
+                game_table_[col][row]->setleft(game_table_[col][row - 1]);
+            }
+            if (col != col_table_size_ - 1 && row != 0 -isEven) {
+                game_table_[col][row]->setleftDown(game_table_[col + 1][row - 1 +isEven]);
+            }
+
+            if (col != 0 && row != row_table_size_ -isEven) {
+                game_table_[col][row]->setrightUp(game_table_[col - 1][row +isEven]);
+            }
+            if (row != row_table_size_ - 1) {
+                game_table_[col][row]->setright(game_table_[col][row + 1]);
+            }
+            if (col != col_table_size_ - 1 && row != row_table_size_ -isEven) {
+                game_table_[col][row]->setrightDown(game_table_[col + 1][row +isEven]);
+            }
+        }
+    }
+}
+
+void GameManager::print_all() {
+    game_table_[0][0]->RecalculateTableWithCenterThisPoint();
+    for (int col = 0; col < col_table_size_; ++col) {
+        for (int row = 0; row < row_table_size_; ++row) {
+            game_table_[col][row]->print();
+        }
+        std::cout << std::endl;
+    }
+}