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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΅hp^3<g#P29Rw~%@CEz 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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