From 0d23f8693eb98bc7163041c5f3fd026753dce40d Mon Sep 17 00:00:00 2001
From: stlekelle <leopold.keller@stud.h-da.de>
Date: Mon, 24 Jan 2022 13:38:40 +0100
Subject: [PATCH] commit

---
 .vscode/launch.json       |  34 ++++++
 .vscode/tasks.json        |  28 +++++
 5_praktikum/gameboard.cpp | 218 ++++++--------------------------------
 5_praktikum/main          | Bin 0 -> 66232 bytes
 5_praktikum/part.cpp      |  20 ++++
 5_praktikum/player.cpp    |  33 ++++++
 5_praktikum/player.h      |   1 +
 5_praktikum/ship.cpp      |  47 +++++++-
 8 files changed, 195 insertions(+), 186 deletions(-)
 create mode 100644 .vscode/launch.json
 create mode 100644 .vscode/tasks.json
 create mode 100755 5_praktikum/main

diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
index 0000000..1bb985a
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +1,34 @@
+{
+    // Use IntelliSense to learn about possible attributes.
+    // Hover to view descriptions of existing attributes.
+    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
+    "version": "0.2.0",
+    "configurations": [
+        {
+            "name": "g++ - Build and debug active file",
+            "type": "cppdbg",
+            "request": "launch",
+            "program": "${fileDirname}/${fileBasenameNoExtension}",
+            "args": [],
+            "stopAtEntry": false,
+            "cwd": "${fileDirname}",
+            "environment": [],
+            "externalConsole": false,
+            "MIMode": "gdb",
+            "setupCommands": [
+                {
+                    "description": "Enable pretty-printing for gdb",
+                    "text": "-enable-pretty-printing",
+                    "ignoreFailures": true
+                },
+                {
+                    "description": "Set Disassembly Flavor to Intel",
+                    "text": "-gdb-set disassembly-flavor intel",
+                    "ignoreFailures": true
+                }
+            ],
+            "preLaunchTask": "C/C++: g++ build active file",
+            "miDebuggerPath": "/usr/bin/gdb"
+        }
+    ]
+}
\ No newline at end of file
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
new file mode 100644
index 0000000..05054c5
--- /dev/null
+++ b/.vscode/tasks.json
@@ -0,0 +1,28 @@
+{
+    "tasks": [
+        {
+            "type": "cppbuild",
+            "label": "C/C++: g++ build active file",
+            "command": "/usr/bin/g++",
+            "args": [
+                "-fdiagnostics-color=always",
+                "-g",
+                "${file}",
+                "-o",
+                "${fileDirname}/${fileBasenameNoExtension}"
+            ],
+            "options": {
+                "cwd": "${fileDirname}"
+            },
+            "problemMatcher": [
+                "$gcc"
+            ],
+            "group": {
+                "kind": "build",
+                "isDefault": true
+            },
+            "detail": "Task generated by Debugger."
+        }
+    ],
+    "version": "2.0.0"
+}
\ No newline at end of file
diff --git a/5_praktikum/gameboard.cpp b/5_praktikum/gameboard.cpp
index be65b15..bf5d431 100644
--- a/5_praktikum/gameboard.cpp
+++ b/5_praktikum/gameboard.cpp
@@ -2,22 +2,29 @@
 #include <iostream>
 #include <iomanip>
 #include <random>
+#include "ship.h"
 using namespace std;
 using std::array;
-GameBoard::GameBoard(){
-    for(int i=0; i<10;i++){
-        for(int j=0; j<10;j++)
-        m_enemyBoard[i][j]='.';
+GameBoard::GameBoard()
+{
+    for (int i = 0; i < 10; i++)
+    {
+        for (int j = 0; j < 10; j++)
+            m_enemyBoard[i][j] = '.';
     }
 }
 void GameBoard::printBoard()
 {
-  
-for (int jt= 0; jt<= m_enemyBoard.size(); jt++){
-
-
+    for (int it = 0; it < 10; it++)
+    {
+        for (int kt = 0; kt < 10; kt++)
+        {
+            
+        }
+    }
 }
-    
+void GameBoard::printEnemyBoard()
+{
     for (int it = 0; it < 10; it++)
     {
         for (int kt = 0; kt < 10; kt++)
@@ -33,184 +40,25 @@ for (int jt= 0; jt<= m_enemyBoard.size(); jt++){
         }
     }
     cout << "\n\n";
-    
 }
-void GameBoard::randomPlaceShips(){
-random_device rnd_device;
-mt19937 mersenne_engine{ rnd_device() };  
-uniform_int_distribution<int> dist{ 0, 9 };
-uniform_int_distribution<int> dist2{ 0, 3 };
- auto gen = [&dist, &mersenne_engine]() {
+void GameBoard::randomPlaceShips()
+{
+    random_device rnd_device;
+    mt19937 mersenne_engine{rnd_device()};
+    uniform_int_distribution<int> dist{0, 9};
+    uniform_int_distribution<int> dist2{0, 3};
+    auto gen = [&dist, &mersenne_engine]()
+    {
         return dist(mersenne_engine);
     };
-    auto gen2 = [&dist2, &mersenne_engine]() {
+    auto gen2 = [&dist2, &mersenne_engine]()
+    {
         return dist2(mersenne_engine);
     };
-int finalx;
-int finaly;
-Direction finaldir;
-
-//Dreadnought
-while(true){
-int x=gen();
-int y=gen();
-int direction=gen2();
-Direction dir;
-if(direction==0) dir=Direction::north; else if(direction==1)dir=Direction::east; else if(direction==2) dir=Direction::south; else if(direction==3) dir=Direction::west;
-if(dir==Direction::north && y-4 >=0 && m_enemyBoard[x][y] == '.' && m_enemyBoard[x][y-1]=='.' && m_enemyBoard[x][y-2]=='.' && m_enemyBoard[x][y-3]=='.' && m_enemyBoard[x][y-4]=='.'){ m_ships[0] = Ship(x,y,5,Direction::north); break; finalx=x;finaly=y; finaldir=dir;}
-if(dir==Direction::west && x-4 >=0 && m_enemyBoard[x][y] == '.' && m_enemyBoard[x-1][y] == '.' && m_enemyBoard[x-2][y] == '.' && m_enemyBoard[x-3][y] == '.' && m_enemyBoard[x-4][y] == '.'){ m_ships[0] = Ship(x,y,5,Direction::west); break; finalx=x;finaly=y; finaldir=dir;}
-if(dir==Direction::east && x+4 <=9 && m_enemyBoard[x][y] == '.' && m_enemyBoard[x+1][y] == '.' && m_enemyBoard[x+2][y] == '.' && m_enemyBoard[x+3][y] == '.' && m_enemyBoard[x+4][y] == '.'){ m_ships[0] = Ship(x,y,5,Direction::east); break; finalx=x;finaly=y; finaldir=dir;}
-if(dir==Direction::south && y+4 <=9 && m_enemyBoard[x][y] == '.' && m_enemyBoard[x][y+1] == '.' && m_enemyBoard[x][y+2] == '.' && m_enemyBoard[x][y+3] == '.' && m_enemyBoard[x][y+4] == '.'){ m_ships[0] = Ship(x,y,5,Direction::south); break; finalx=x;finaly=y; finaldir=dir;}
-} 
-for(int i=0; i<5; i++){
-    m_enemyBoard[finalx][finaly]= '1';
-    if(finaldir==Direction::north) finaly--;
-    if(finaldir==Direction::south) finaly++;
-    if(finaldir==Direction::east) finalx++;
-    if(finaldir==Direction::west) finalx--;
-}
-
-//Cruisers
-for(int i=2; i<=3;i++){
-    while(true){
-        int x=gen();
-        int y=gen();
-        int direction=gen2();
-        Direction dir;
-if(direction==0) dir=Direction::north; else if(direction==1)dir=Direction::east; else if(direction==2) dir=Direction::south; else if(direction==3) dir=Direction::west;
-if(dir==Direction::north && y-3 >=0 && m_enemyBoard[x][y] == '.' && m_enemyBoard[x][y-1]=='.' && m_enemyBoard[x][y-2]=='.' && m_enemyBoard[x][y-3]=='.'){ m_ships[i] = Ship(x,y,4,Direction::north);
-for(int j=0; j<4; j++){
-    m_enemyBoard[x][y]= (char)i;
-    if(dir==Direction::north) y--;
-    if(dir==Direction::south) y++;
-    if(dir==Direction::east) x++;
-    if(dir==Direction::west) x--;
-    }
-    break;
-if(dir==Direction::west && x-3 >=0 && m_enemyBoard[x][y] == '.' && m_enemyBoard[x-1][y] == '.' && m_enemyBoard[x-2][y] == '.' && m_enemyBoard[x-3][y] == '.'){ m_ships[i] = Ship(x,y,4,Direction::west);
-for(int j=0; j<4; j++){
-    m_enemyBoard[x][y]= (char)i;
-    if(dir==Direction::north) y--;
-    if(dir==Direction::south) y++;
-    if(dir==Direction::east) x++;
-    if(dir==Direction::west) x--;
-    }
-    break;}
-if(dir==Direction::east && x+3 <=9 && m_enemyBoard[x][y] == '.' && m_enemyBoard[x+1][y] == '.' && m_enemyBoard[x+2][y] == '.' && m_enemyBoard[x+3][y] == '.'){ m_ships[i] = Ship(x,y,4,Direction::east);
-for(int j=0; j<4; j++){
-    m_enemyBoard[x][y]= (char)i;
-    if(dir==Direction::north) y--;
-    if(dir==Direction::south) y++;
-    if(dir==Direction::east) x++;
-    if(dir==Direction::west) x--;
-    }
-    break;}
-if(dir==Direction::south && y+3 <=9 && m_enemyBoard[x][y] == '.' && m_enemyBoard[x][y+1] == '.' && m_enemyBoard[x][y+2] == '.' && m_enemyBoard[x][y+3] == '.' ){ m_ships[i] = Ship(x,y,4,Direction::south);
-for(int j=0; j<4; j++){
-    m_enemyBoard[x][y]= (char)i;
-    if(dir==Direction::north) y--;
-    if(dir==Direction::south) y++;
-    if(dir==Direction::east) x++;
-    if(dir==Direction::west) x--;
-    }
-    break;}
-    } 
-  }
- }
-
- //Destroyers
-for(int i=4; i<=6;i++){
-    while(true){
-        int x=gen();
-        int y=gen();
-        int direction=gen2();
-        Direction dir;
-if(direction==0) dir=Direction::north; else if(direction==1)dir=Direction::east; else if(direction==2) dir=Direction::south; else if(direction==3) dir=Direction::west;
-if(dir==Direction::north && y-2 >=0 && m_enemyBoard[x][y] == '.' && m_enemyBoard[x][y-1]=='.' && m_enemyBoard[x][y-2]=='.'){ m_ships[i] = Ship(x,y,3,Direction::north);
-for(int j=0; j<3; j++){
-    m_enemyBoard[x][y]= (char)i;
-    if(dir==Direction::north) y--;
-    if(dir==Direction::south) y++;
-    if(dir==Direction::east) x++;
-    if(dir==Direction::west) x--;
-    }
-    break;
-if(dir==Direction::west && x-2 >=0 && m_enemyBoard[x][y] == '.' && m_enemyBoard[x-1][y] == '.' && m_enemyBoard[x-2][y] == '.'){ m_ships[i] = Ship(x,y,3,Direction::west);
-for(int j=0; j<3; j++){
-    m_enemyBoard[x][y]= (char)i;
-    if(dir==Direction::north) y--;
-    if(dir==Direction::south) y++;
-    if(dir==Direction::east) x++;
-    if(dir==Direction::west) x--;
-    }
-    break;}
-if(dir==Direction::east && x+2 <=9 && m_enemyBoard[x][y] == '.' && m_enemyBoard[x+1][y] == '.' && m_enemyBoard[x+2][y] == '.'){ m_ships[i] = Ship(x,y,3,Direction::east);
-for(int j=0; j<3; j++){
-    m_enemyBoard[x][y]= (char)i;
-    if(dir==Direction::north) y--;
-    if(dir==Direction::south) y++;
-    if(dir==Direction::east) x++;
-    if(dir==Direction::west) x--;
-    }
-    break;}
-if(dir==Direction::south && y+2 <=9 && m_enemyBoard[x][y] == '.' && m_enemyBoard[x][y+1] == '.' && m_enemyBoard[x][y+2] == '.'){ m_ships[i] = Ship(x,y,3,Direction::south);
-for(int j=0; j<3; j++){
-    m_enemyBoard[x][y]= (char)i;
-    if(dir==Direction::north) y--;
-    if(dir==Direction::south) y++;
-    if(dir==Direction::east) x++;
-    if(dir==Direction::west) x--;
-    }
-    break;}
-    } 
-  }
- }
- //Submarines
-for(int i=7; i<=10;i++){
-    while(true){
-        int x=gen();
-        int y=gen();
-        int direction=gen2();
-        Direction dir;
-if(direction==0) dir=Direction::north; else if(direction==1)dir=Direction::east; else if(direction==2) dir=Direction::south; else if(direction==3) dir=Direction::west;
-if(dir==Direction::north && y-1 >=0 && m_enemyBoard[x][y] == '.' && m_enemyBoard[x][y-1]=='.'){ m_ships[i] = Ship(x,y,2,Direction::north);
-for(int j=0; j<3; j++){
-    m_enemyBoard[x][y]= (char)i;
-    if(dir==Direction::north) y--;
-    if(dir==Direction::south) y++;
-    if(dir==Direction::east) x++;
-    if(dir==Direction::west) x--;
-    }
-    break;
-if(dir==Direction::west && x-1 >=0 && m_enemyBoard[x][y] == '.' && m_enemyBoard[x-1][y] == '.'){ m_ships[i] = Ship(x,y,2,Direction::west);
-for(int j=0; j<3; j++){
-    m_enemyBoard[x][y]= (char)i;
-    if(dir==Direction::north) y--;
-    if(dir==Direction::south) y++;
-    if(dir==Direction::east) x++;
-    if(dir==Direction::west) x--;
-    }
-    break;}
-if(dir==Direction::east && x+1 <=9 && m_enemyBoard[x][y] == '.' && m_enemyBoard[x+1][y] == '.'){ m_ships[i] = Ship(x,y,2,Direction::east);
-for(int j=0; j<3; j++){
-    m_enemyBoard[x][y]= (char)i;
-    if(dir==Direction::north) y--;
-    if(dir==Direction::south) y++;
-    if(dir==Direction::east) x++;
-    if(dir==Direction::west) x--;
-    }
-    break;}
-if(dir==Direction::south && y+1 <=9 && m_enemyBoard[x][y] == '.' && m_enemyBoard[x][y+1] == '.'){ m_ships[i] = Ship(x,y,2,Direction::south);
-for(int j=0; j<3; j++){
-    m_enemyBoard[x][y]= (char)i;
-    if(dir==Direction::north) y--;
-    if(dir==Direction::south) y++;
-    if(dir==Direction::east) x++;
-    if(dir==Direction::west) x--;
-    }
-    break;}
-    } 
-  }
- }
-
-}
\ No newline at end of file
+    
+    
+    
+            
+            
+        }
+    
diff --git a/5_praktikum/main b/5_praktikum/main
new file mode 100755
index 0000000000000000000000000000000000000000..48be1dadf531697d46a260a3ea050729e203e187
GIT binary patch
literal 66232
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
CF#I<F

literal 0
HcmV?d00001

diff --git a/5_praktikum/part.cpp b/5_praktikum/part.cpp
index dfb2b24..69ad585 100644
--- a/5_praktikum/part.cpp
+++ b/5_praktikum/part.cpp
@@ -1 +1,21 @@
 #include "part.h"
+bool Part::isDamaged() const{
+    return m_status;
+}
+
+  void Part::setDamaged(){
+      m_status=1;
+  }
+
+  
+  int Part::getRow() const{
+      return m_row;
+  }
+
+ 
+  int Part::getCol() const{
+      return m_col;
+  }
+  Part::Part(int row, int col):m_row(row),m_col(col),m_status(0){
+
+  }
\ No newline at end of file
diff --git a/5_praktikum/player.cpp b/5_praktikum/player.cpp
index 157e944..c64f8e4 100644
--- a/5_praktikum/player.cpp
+++ b/5_praktikum/player.cpp
@@ -1 +1,34 @@
 #include "player.h"
+Player::Player(const string &playerName) : m_playerName(playerName)
+{
+}
+
+int Player::getGamesWon() const
+{
+    return m_gamesWon;
+}
+
+int Player::getGamesLost() const
+{
+    return m_gamesLost;
+}
+
+int Player::getGamesPlayed() const
+{
+    return m_gamesPlayed;
+}
+
+void Player::addGameWon()
+{
+    m_gamesWon++;
+}
+
+void Player::addGameLost()
+{
+    m_gamesLost++;
+}
+
+string Player::getName()
+{
+    return m_playerName;
+}
\ No newline at end of file
diff --git a/5_praktikum/player.h b/5_praktikum/player.h
index b822d27..19f2c7b 100644
--- a/5_praktikum/player.h
+++ b/5_praktikum/player.h
@@ -80,6 +80,7 @@ class Player
   string getName();
 
   private:
+  int m_gamesPlayed;
   /**
    * @brief Number of games won.
    */
diff --git a/5_praktikum/ship.cpp b/5_praktikum/ship.cpp
index 58e3860..ee759c4 100644
--- a/5_praktikum/ship.cpp
+++ b/5_praktikum/ship.cpp
@@ -1,4 +1,5 @@
 #include "ship.h"
+#include "part.h"
 #include <stdexcept>
 
 bool Ship::hasPartIn(int row, int col)
@@ -41,4 +42,48 @@ bool Ship::isSunk()
             return false;
     }
     return true;
-}
\ No newline at end of file
+}
+Ship::Ship()
+{
+}
+Ship::Ship(int row, int col, int lengthOfShip, Direction direction)
+{
+    if (col > 9 || col < 0 || row > 9 || row < 0)
+        throw std::invalid_argument("Part exceeds Gameboard Range!");
+    if (direction == Direction::north && row - lengthOfShip >= 0)
+    {
+        for (int i = 0; i < lengthOfShip - 1; i++)
+        {
+
+            m_parts.push_back(Part(row, col));
+            row--;
+        }
+    }
+    if (direction == Direction::south && row + lengthOfShip <= 9)
+    {
+        for (int i = 0; i < lengthOfShip - 1; i++)
+        {
+
+            m_parts.push_back(Part(row, col));
+            row++;
+        }
+    }
+    if (direction == Direction::east && col + lengthOfShip <= 9)
+    {
+        for (int i = 0; i < lengthOfShip - 1; i++)
+        {
+
+            m_parts.push_back(Part(row, col));
+            col++;
+        }
+    }
+    if (direction == Direction::west && col - lengthOfShip >= 0)
+    {
+        for (int i = 0; i < lengthOfShip - 1; i++)
+        {
+
+            m_parts.push_back(Part(row, col));
+            col--;
+        }
+    }
+}
-- 
GitLab