diff --git a/Uppgift-3-Spel/a.out b/Uppgift-3-Spel/a.out deleted file mode 100755 index a398520ed6a2db900ffaef0877675112a23b5ad4..0000000000000000000000000000000000000000 Binary files a/Uppgift-3-Spel/a.out and /dev/null differ diff --git a/Uppgift-3-Spel/backup/a.out b/Uppgift-3-Spel/backup/a.out deleted file mode 100755 index e14343b95af6139cc53d893800edd60418090f72..0000000000000000000000000000000000000000 Binary files a/Uppgift-3-Spel/backup/a.out and /dev/null differ diff --git a/Uppgift-3-Spel/backup/ghost.cc b/Uppgift-3-Spel/backup/ghost.cc deleted file mode 100644 index ffcc154676c7bfe2d44a30aa57e2c5446c35d992..0000000000000000000000000000000000000000 --- a/Uppgift-3-Spel/backup/ghost.cc +++ /dev/null @@ -1,171 +0,0 @@ -#include "ghost.h" - -//ghost - -Ghost::Ghost(std::string const &color, Point const &start_pos, Pacman& pac) - : color_index(color), pos(start_pos), pacman{pac} -{} - -void Ghost::set_pos( Point new_pos) -{ - new_pos.x = pos.x; - new_pos.y = pos.y; -} - - - - -Point Ghost::get_pos() -{ - return Point{pos.x, pos.y}; -} - - - -//clyde -Clyde::Clyde(std::string const &color, Point const &start_pos, Pacman& pac) - : Ghost("orange", start_pos, pac) -{} - - -Point Clyde::get_scatter() -{ -return Point{0,0}; -} - - -Point Clyde::get_pos() -{ - return Point{pos.x, pos.y}; -} - -void Clyde::set_pos( Point new_pos) -{ -Ghost::set_pos(new_pos); -} - - - -string Clyde::get_color() const -{ -return "orange"; -} - -Point Clyde::get_chase() -{ - Point pac_dir = pacman.get_direction(); - Point pac_pos = pacman.get_position(); - int proximity = abs(pos.x - pac_pos.x) + abs(pos.y - pac_pos.y); - - if (proximity >= 2) - { - return pac_pos; - } - else - { - return Point{0,0}; - } - - -} - -//pinky - -Pinky::Pinky(std::string const &color, Point const &start_pos, Pacman& pac): -Ghost("pink", start_pos, pac) -{} - - -Point Pinky::get_scatter() -{ -return Point{0,21}; -} - - -Point Pinky::get_pos() -{ -return Point{pos.x, pos.y}; -} - -void Pinky::set_pos( Point new_pos) -{ -Ghost::set_pos(new_pos); -} - - - -string Pinky::get_color() const -{ -return "pink"; -} -Point Pinky::get_chase() -{ - - Point pac_dir {pacman.get_direction()}; - Point pac_pos {pacman.get_position()}; - - if(pac_dir.x == 0 && pac_dir.y == -1) - { - pac_pos.y = (pac_pos.y - 2); - } - else if(pac_dir.x == 0 && pac_dir.y == 1) - { - pac_pos.y = (pac_pos.y + 2); - -} - else if(pac_dir.x == -1 && pac_dir.y == 0) - { - pac_pos.x = (pac_pos.x -2 ); - - } - else if(pac_dir.x == 1 && pac_dir.y == 0) - { - pac_pos.x = (pac_pos.x -2); - - - } - return pac_pos; -} - -//blinky -Blinky::Blinky(std::string const &color, Point const &start_pos, Pacman& pac) - : Ghost("red", start_pos, pac) - {} - -void Blinky::set_pos(Point new_pos) { - set_pos(new_pos); -} - -Point Blinky::get_scatter() { - if (angry == true) - { - return Point{pacman.get_position()}; // stämmer? - } else - { - return Point{6, 6}; - } -} - -Point Blinky::get_chase() { - return Point{pacman.get_position()}; -} - -Point Blinky::get_pos() { - return pos; -} - -std::string Blinky::get_color()const -{ - return "pink"; -} - -bool Blinky::get_angry(){ - return angry; -} - -void Blinky::set_angry(bool state) { - angry = state; -} - - - diff --git a/Uppgift-3-Spel/backup/ghost.h b/Uppgift-3-Spel/backup/ghost.h deleted file mode 100644 index 2dd23626afd7ba68398b0b85966c979deaf1d546..0000000000000000000000000000000000000000 --- a/Uppgift-3-Spel/backup/ghost.h +++ /dev/null @@ -1,61 +0,0 @@ -#ifndef GHOST_H -#define GHOST_H - -#include "given.h" -#include "string" -using namespace std; - -class Ghost -{ -public: - Ghost(std::string const &color, Point const &start_pos, Pacman& pac); - virtual void set_pos( Point new_pos); - virtual Point get_scatter() = 0; - virtual Point get_chase() = 0; - virtual Point get_pos(); - virtual std::string get_color()const = 0; - virtual ~Ghost() = default; -protected: - std::string color_index; - Point pos; - Pacman& pacman; -}; - -class Clyde: public Ghost -{ -public: - Clyde(std::string const &color, Point const &start_pos, Pacman& pac); - void set_pos(Point new_pos) override; - Point get_scatter() override ; - Point get_chase() override ; - Point get_pos() override; - std::string get_color()const; -}; - -class Pinky: public Ghost -{ -public: - Pinky(std::string const &color, Point const &start_pos, Pacman& pac); - void set_pos(Point new_pos)override; - Point get_scatter() override; - Point get_chase() override ; - Point get_pos()override; - std::string get_color()const; -}; - -class Blinky : public Ghost -{ -public: - bool get_angry(); - void set_angry(bool state); - Blinky(std::string const &color, Point const &start_pos, Pacman& pac); - void set_pos(Point new_pos)override; - Point get_scatter() override; - Point get_chase() override; // Blinky::get_chase(const Point&)’ marked ‘override’, but does not override - Point get_pos()override; - std::string get_color()const; -private: - bool angry = false ; -}; - -#endif \ No newline at end of file diff --git a/Uppgift-3-Spel/backup/given.cc b/Uppgift-3-Spel/backup/given.cc deleted file mode 100644 index 154bfe8f81b4c120c571f60e7e97b3480c0d1f87..0000000000000000000000000000000000000000 --- a/Uppgift-3-Spel/backup/given.cc +++ /dev/null @@ -1,46 +0,0 @@ -#include "given.h" - -int WIDTH = 19; -int HEIGHT = 22; - -bool operator==(Point const& lhs, Point const& rhs) -{ - return lhs.x == rhs.x && lhs.y == rhs.y; -} - -std::istream& operator>>(std::istream& is, Point& rhs) -{ - return is >> rhs.x >> rhs.y; -} - -Pacman::Pacman() - : pos {}, dir {1,0} -{} - -Point Pacman::get_position() const -{ - return pos; -} - -void Pacman::set_position(Point const& p) -{ - if (p.x > WIDTH or p.x < 0 or p.y > HEIGHT or p.y < 0) - { - throw std::runtime_error("position outside valid range"); - } - pos = p; -} - -Point Pacman::get_direction() const -{ - return dir; -} - -void Pacman::set_direction(Point const& p) -{ - if (p.x > 1 or p.x < -1 or p.y > 1 or p.y < -1 or abs(p.x + p.y) != 1) - { - throw std::runtime_error("direction outside valid range"); - } - dir = p; -} diff --git a/Uppgift-3-Spel/backup/given.h b/Uppgift-3-Spel/backup/given.h deleted file mode 100644 index 92b57b82966db209d7c3b0d63a7344dfe33a4fd1..0000000000000000000000000000000000000000 --- a/Uppgift-3-Spel/backup/given.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - I denna fil finns ett utval av kod fr�n det dina kollegor skrivit till ert pacman-projekt. Det �r - precis det som du beh�ver f�r att skriva din del av koden. - - Tips: Du f�r ut�ka denna fil med saker som du beh�ver f�r att ditt program ska kompilera. Det �r - �ven okej att ut�ka Point med fler operatorer om det skulle beh�vas. - */ - - -#include <stdexcept> -#include <iostream> - - -/* - Globala variabler f�r storlek p� spelplanen. - - Din kollega som skrev detta �r medveten om att globala variabler �r d�ligt och borde undvikas, men - har inte haft tid att �tg�rda det. I den slutgiltiga versionen av koden borde dessa s�klart l�sas - fr�n en fil med konfigurationsdata. - */ -extern int WIDTH; -extern int HEIGHT; - - -/* - Ett aggregat som anv�nd f�r att representera punkter och riktninar p� spelplanen. - Aggregatet har ocks� hj�lpsamma operatorer som kan underl�tta din implementation. - - */ -struct Point -{ - int x; - int y; -}; -bool operator==(Point const& lhs, Point const& rhs); -std::istream& operator>>(std::istream& is, Point& rhs); - - -/* - En klass f�r att representera spelarfiguren. Detta �r en nedskalad version j�mf�rt med det som - kollegan skrev till spelet. Notera att din kod inte beh�ver �ndras om man skulle g� fr�n denna - implementaion till den faktiska implementationen. - */ -class Pacman -{ -public: - - Pacman(); - - Point get_position() const; - void set_position(Point const& p); - - Point get_direction() const; - void set_direction(Point const& p); - -private: - - Point pos {}; - Point dir {}; -}; diff --git a/Uppgift-3-Spel/backup/main.cc b/Uppgift-3-Spel/backup/main.cc deleted file mode 100644 index bbfa9277c5ef66a1ae0e1c4ac44046d63bc52015..0000000000000000000000000000000000000000 --- a/Uppgift-3-Spel/backup/main.cc +++ /dev/null @@ -1,158 +0,0 @@ -#include "ghost.h" -//#include "given.h" -#include <string> -#include <iostream> -#include <iomanip> -#include <sstream> -#include <vector> -#include <cctype> - -using namespace std; - -/* - Ledning och Tips: - - - Modifiera stukturen till en header-fil och en implementationsfil - - Ut�ka 'run()' och 'draw_map()' med �vrig funktionalitet. - - L�gg alla sp�ken i en l�mplig beh�llare som en datamedlem. - - Bryt ut stora kodblock till egna funktioner. - - Anv�nd hj�lpfunktioner f�r att undvika duplicering av kod. - - T�nk p� att varje funktion inte borde vara l�ngre �n 25 rader. - */ - -class Ghost_Tester -{ - -public: - - Pacman pacman; - vector<Ghost*> all_ghosts; - - Ghost_Tester(): - pacman {} ,all_ghosts{} - { - - all_ghosts.push_back(new Clyde("orange", Point{5,5}, pacman)); - all_ghosts.push_back(new Blinky("red", Point{6,6}, pacman)); - all_ghosts.push_back(new Pinky("pink", Point{7,7}, pacman)) ; - } - - void run() - { - while(true) - { - draw_map(); - cout << "> "; - - string line {}; - getline(cin, line); - istringstream iss {line}; - - string command {}; - iss >> command; - - for (Ghost* e : all_ghosts) - { - if (command == e -> get_color()) - { - Point new_pos {}; - iss >> new_pos.x >> new_pos.y; - e -> set_pos(new_pos); - } - else if (command == "chase") - { - e -> set_pos(e -> get_chase()); - } - else if (command == "scatter") - { - e -> set_pos(e -> get_scatter()); - } - else if (command == "anger") - { - // behöver vara blinky - if(e -> get_color() == "red") { - dynamic_cast<Blinky*>(e) -> set_angry(true); - } - } - } - - if (command == "pos") - { - Point new_pos {}; - iss >> new_pos.x >> new_pos.y; - pacman.set_position(new_pos); - } - else if (command == "dir") - { - } - else if (command == "quit") - { - for (Ghost* e : all_ghosts) - { - delete e; - } - - break; - } - } - } - - - - - - //fixa följande funltion -private: - - /* - En hj�lpfunktion som avg�r vilka tv� tecken som ska ritas ut f�r en given position p� - spelplanen. - */ - string to_draw(Point const& curr_pos) - { - string to_draw{" "}; - - if (pacman.get_position() == curr_pos) - { - to_draw[1] = '@'; - } - - return to_draw; - } - - /* - En hj�lpfunktion f�r att rita ut spelplanen f�r testprogrammet. - - Itererar �ver varje rad och column i kartan. Index f�r raderna �r flippade f�r att placera - y = 0 l�ngst ned. - - Varje punkt i kartan ritas som tv� tecken eftersom ett tecken i terminalen �r ca dubbelt s� - h�gt som det �r brett. - */ - void draw_map() - { - cout << "+" << setfill('-') << setw(WIDTH * 2) << "-" << "+\n"; - - for (int y {HEIGHT - 1}; y >= 0; --y) - { - cout << "|"; - for (int x {}; x < WIDTH; ++x) - { - cout << to_draw( Point{x,y} ); - } - cout << "|\n"; - } - - cout << "+" << setfill('-') << setw(WIDTH * 2) << "-" << "+" << endl; - } - - - -}; - -int main() -{ - Ghost_Tester gt {}; - gt.run(); - return 0; -} diff --git a/Uppgift-3-Spel/ghost.cc b/Uppgift-3-Spel/ghost.cc deleted file mode 100644 index ffcc154676c7bfe2d44a30aa57e2c5446c35d992..0000000000000000000000000000000000000000 --- a/Uppgift-3-Spel/ghost.cc +++ /dev/null @@ -1,171 +0,0 @@ -#include "ghost.h" - -//ghost - -Ghost::Ghost(std::string const &color, Point const &start_pos, Pacman& pac) - : color_index(color), pos(start_pos), pacman{pac} -{} - -void Ghost::set_pos( Point new_pos) -{ - new_pos.x = pos.x; - new_pos.y = pos.y; -} - - - - -Point Ghost::get_pos() -{ - return Point{pos.x, pos.y}; -} - - - -//clyde -Clyde::Clyde(std::string const &color, Point const &start_pos, Pacman& pac) - : Ghost("orange", start_pos, pac) -{} - - -Point Clyde::get_scatter() -{ -return Point{0,0}; -} - - -Point Clyde::get_pos() -{ - return Point{pos.x, pos.y}; -} - -void Clyde::set_pos( Point new_pos) -{ -Ghost::set_pos(new_pos); -} - - - -string Clyde::get_color() const -{ -return "orange"; -} - -Point Clyde::get_chase() -{ - Point pac_dir = pacman.get_direction(); - Point pac_pos = pacman.get_position(); - int proximity = abs(pos.x - pac_pos.x) + abs(pos.y - pac_pos.y); - - if (proximity >= 2) - { - return pac_pos; - } - else - { - return Point{0,0}; - } - - -} - -//pinky - -Pinky::Pinky(std::string const &color, Point const &start_pos, Pacman& pac): -Ghost("pink", start_pos, pac) -{} - - -Point Pinky::get_scatter() -{ -return Point{0,21}; -} - - -Point Pinky::get_pos() -{ -return Point{pos.x, pos.y}; -} - -void Pinky::set_pos( Point new_pos) -{ -Ghost::set_pos(new_pos); -} - - - -string Pinky::get_color() const -{ -return "pink"; -} -Point Pinky::get_chase() -{ - - Point pac_dir {pacman.get_direction()}; - Point pac_pos {pacman.get_position()}; - - if(pac_dir.x == 0 && pac_dir.y == -1) - { - pac_pos.y = (pac_pos.y - 2); - } - else if(pac_dir.x == 0 && pac_dir.y == 1) - { - pac_pos.y = (pac_pos.y + 2); - -} - else if(pac_dir.x == -1 && pac_dir.y == 0) - { - pac_pos.x = (pac_pos.x -2 ); - - } - else if(pac_dir.x == 1 && pac_dir.y == 0) - { - pac_pos.x = (pac_pos.x -2); - - - } - return pac_pos; -} - -//blinky -Blinky::Blinky(std::string const &color, Point const &start_pos, Pacman& pac) - : Ghost("red", start_pos, pac) - {} - -void Blinky::set_pos(Point new_pos) { - set_pos(new_pos); -} - -Point Blinky::get_scatter() { - if (angry == true) - { - return Point{pacman.get_position()}; // stämmer? - } else - { - return Point{6, 6}; - } -} - -Point Blinky::get_chase() { - return Point{pacman.get_position()}; -} - -Point Blinky::get_pos() { - return pos; -} - -std::string Blinky::get_color()const -{ - return "pink"; -} - -bool Blinky::get_angry(){ - return angry; -} - -void Blinky::set_angry(bool state) { - angry = state; -} - - - diff --git a/Uppgift-3-Spel/ghost.h b/Uppgift-3-Spel/ghost.h deleted file mode 100644 index 2dd23626afd7ba68398b0b85966c979deaf1d546..0000000000000000000000000000000000000000 --- a/Uppgift-3-Spel/ghost.h +++ /dev/null @@ -1,61 +0,0 @@ -#ifndef GHOST_H -#define GHOST_H - -#include "given.h" -#include "string" -using namespace std; - -class Ghost -{ -public: - Ghost(std::string const &color, Point const &start_pos, Pacman& pac); - virtual void set_pos( Point new_pos); - virtual Point get_scatter() = 0; - virtual Point get_chase() = 0; - virtual Point get_pos(); - virtual std::string get_color()const = 0; - virtual ~Ghost() = default; -protected: - std::string color_index; - Point pos; - Pacman& pacman; -}; - -class Clyde: public Ghost -{ -public: - Clyde(std::string const &color, Point const &start_pos, Pacman& pac); - void set_pos(Point new_pos) override; - Point get_scatter() override ; - Point get_chase() override ; - Point get_pos() override; - std::string get_color()const; -}; - -class Pinky: public Ghost -{ -public: - Pinky(std::string const &color, Point const &start_pos, Pacman& pac); - void set_pos(Point new_pos)override; - Point get_scatter() override; - Point get_chase() override ; - Point get_pos()override; - std::string get_color()const; -}; - -class Blinky : public Ghost -{ -public: - bool get_angry(); - void set_angry(bool state); - Blinky(std::string const &color, Point const &start_pos, Pacman& pac); - void set_pos(Point new_pos)override; - Point get_scatter() override; - Point get_chase() override; // Blinky::get_chase(const Point&)’ marked ‘override’, but does not override - Point get_pos()override; - std::string get_color()const; -private: - bool angry = false ; -}; - -#endif \ No newline at end of file diff --git a/Uppgift-3-Spel/given.cc b/Uppgift-3-Spel/given.cc deleted file mode 100644 index 154bfe8f81b4c120c571f60e7e97b3480c0d1f87..0000000000000000000000000000000000000000 --- a/Uppgift-3-Spel/given.cc +++ /dev/null @@ -1,46 +0,0 @@ -#include "given.h" - -int WIDTH = 19; -int HEIGHT = 22; - -bool operator==(Point const& lhs, Point const& rhs) -{ - return lhs.x == rhs.x && lhs.y == rhs.y; -} - -std::istream& operator>>(std::istream& is, Point& rhs) -{ - return is >> rhs.x >> rhs.y; -} - -Pacman::Pacman() - : pos {}, dir {1,0} -{} - -Point Pacman::get_position() const -{ - return pos; -} - -void Pacman::set_position(Point const& p) -{ - if (p.x > WIDTH or p.x < 0 or p.y > HEIGHT or p.y < 0) - { - throw std::runtime_error("position outside valid range"); - } - pos = p; -} - -Point Pacman::get_direction() const -{ - return dir; -} - -void Pacman::set_direction(Point const& p) -{ - if (p.x > 1 or p.x < -1 or p.y > 1 or p.y < -1 or abs(p.x + p.y) != 1) - { - throw std::runtime_error("direction outside valid range"); - } - dir = p; -} diff --git a/Uppgift-3-Spel/given.h b/Uppgift-3-Spel/given.h deleted file mode 100644 index 92b57b82966db209d7c3b0d63a7344dfe33a4fd1..0000000000000000000000000000000000000000 --- a/Uppgift-3-Spel/given.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - I denna fil finns ett utval av kod fr�n det dina kollegor skrivit till ert pacman-projekt. Det �r - precis det som du beh�ver f�r att skriva din del av koden. - - Tips: Du f�r ut�ka denna fil med saker som du beh�ver f�r att ditt program ska kompilera. Det �r - �ven okej att ut�ka Point med fler operatorer om det skulle beh�vas. - */ - - -#include <stdexcept> -#include <iostream> - - -/* - Globala variabler f�r storlek p� spelplanen. - - Din kollega som skrev detta �r medveten om att globala variabler �r d�ligt och borde undvikas, men - har inte haft tid att �tg�rda det. I den slutgiltiga versionen av koden borde dessa s�klart l�sas - fr�n en fil med konfigurationsdata. - */ -extern int WIDTH; -extern int HEIGHT; - - -/* - Ett aggregat som anv�nd f�r att representera punkter och riktninar p� spelplanen. - Aggregatet har ocks� hj�lpsamma operatorer som kan underl�tta din implementation. - - */ -struct Point -{ - int x; - int y; -}; -bool operator==(Point const& lhs, Point const& rhs); -std::istream& operator>>(std::istream& is, Point& rhs); - - -/* - En klass f�r att representera spelarfiguren. Detta �r en nedskalad version j�mf�rt med det som - kollegan skrev till spelet. Notera att din kod inte beh�ver �ndras om man skulle g� fr�n denna - implementaion till den faktiska implementationen. - */ -class Pacman -{ -public: - - Pacman(); - - Point get_position() const; - void set_position(Point const& p); - - Point get_direction() const; - void set_direction(Point const& p); - -private: - - Point pos {}; - Point dir {}; -}; diff --git a/Uppgift-3-Spel/main.cc b/Uppgift-3-Spel/main.cc deleted file mode 100644 index b113c93550246b253659d4fbf5a0bf871533a0e7..0000000000000000000000000000000000000000 --- a/Uppgift-3-Spel/main.cc +++ /dev/null @@ -1,175 +0,0 @@ -#include "ghost.h" -//#include "given.h" -#include <string> -#include <iostream> -#include <iomanip> -#include <sstream> -#include <vector> -#include <cctype> - -using namespace std; - -/* - Ledning och Tips: - - - Modifiera stukturen till en header-fil och en implementationsfil - - Ut�ka 'run()' och 'draw_map()' med �vrig funktionalitet. - - L�gg alla sp�ken i en l�mplig beh�llare som en datamedlem. - - Bryt ut stora kodblock till egna funktioner. - - Anv�nd hj�lpfunktioner f�r att undvika duplicering av kod. - - T�nk p� att varje funktion inte borde vara l�ngre �n 25 rader. - */ - -class Ghost_Tester -{ - -public: - - Pacman pacman; - vector<Ghost*> all_ghosts; - - Ghost_Tester(): - pacman {} ,all_ghosts{} - { - - all_ghosts.push_back(new Clyde("orange", Point{5,5}, pacman)); - all_ghosts.push_back(new Blinky("red", Point{6,6}, pacman)); - all_ghosts.push_back(new Pinky("pink", Point{7,7}, pacman)) ; - } - - void run() - { - while(true) - { - draw_map(); - cout << "> "; - - string line {}; - getline(cin, line); - istringstream iss {line}; - - string command {}; - iss >> command; - - for (Ghost* e : all_ghosts) - { - if (command == e -> get_color()) - { - Point new_pos {}; - iss >> new_pos.x >> new_pos.y; - e -> set_pos(new_pos); - } - else if (command == "chase") - { - e -> set_pos(e -> get_chase()); - } - else if (command == "scatter") - { - e -> set_pos(e -> get_scatter()); - } - else if (command == "anger") - { - // behöver vara blinky - if(e -> get_color() == "red") { - dynamic_cast<Blinky*>(e) -> set_angry(true); - } - } - } - - if (command == "pos") - { - Point new_pos {}; - iss >> new_pos.x >> new_pos.y; - pacman.set_position(new_pos); - } - else if (command == "dir") - { - } - else if (command == "quit") - { - for (Ghost* e : all_ghosts) - { - delete e; - } - - break; - } - } - } - - - - - - //fixa följande funltion -private: - - /* - En hj�lpfunktion som avg�r vilka tv� tecken som ska ritas ut f�r en given position p� - spelplanen. - */ - - Point pacmanPosition = pacman.get_position(); - Point pacmanDirection = pacman.get_direction(); - - string to_draw(Point const& curr_pos) - { - string to_draw{" "}; - - if (pacman.get_position() == curr_pos) - { - to_draw[1] = '@'; - } - for (Ghost* temp : all_ghosts) - { - char r {temp -> get_color().at(0)}; - - if(temp -> get_chase() == curr_pos) - { - to_draw[1] = r; - } - if(temp -> get_pos() == curr_pos) - { - to_draw[1] = toupper(r); - } - } - - return to_draw; - } - - /* - En hj�lpfunktion f�r att rita ut spelplanen f�r testprogrammet. - - Itererar �ver varje rad och column i kartan. Index f�r raderna �r flippade f�r att placera - y = 0 l�ngst ned. - - Varje punkt i kartan ritas som tv� tecken eftersom ett tecken i terminalen �r ca dubbelt s� - h�gt som det �r brett. - */ - void draw_map() - { - cout << "+" << setfill('-') << setw(WIDTH * 2) << "-" << "+\n"; - - for (int y {HEIGHT - 1}; y >= 0; --y) - { - cout << "|"; - for (int x {}; x < WIDTH; ++x) - { - cout << to_draw( Point{x,y} ); - } - cout << "|\n"; - } - - cout << "+" << setfill('-') << setw(WIDTH * 2) << "-" << "+" << endl; - } - - - -}; - -int main() -{ - Ghost_Tester gt {}; - gt.run(); - return 0; -} diff --git a/main.cc b/main.cc new file mode 100644 index 0000000000000000000000000000000000000000..6f829e54e3d32bb6fc49c9732a18e72c9d0023c7 --- /dev/null +++ b/main.cc @@ -0,0 +1,112 @@ +#include "ghost.h" +#include <string> +#include <iostream> +#include <iomanip> +#include <sstream> + +using namespace std; + +/* + Ledning och Tips: + + - Modifiera stukturen till en header-fil och en implementationsfil + - Ut�ka 'run()' och 'draw_map()' med �vrig funktionalitet. + - L�gg alla sp�ken i en l�mplig beh�llare som en datamedlem. + - Bryt ut stora kodblock till egna funktioner. + - Anv�nd hj�lpfunktioner f�r att undvika duplicering av kod. + - T�nk p� att varje funktion inte borde vara l�ngre �n 25 rader. + */ + +class Ghost_Tester +{ + +public: + + Ghost_Tester() + : pacman {} + { + } + + void run() + { + while(true) + { + draw_map(); + cout << "> "; + + string line {}; + getline(cin, line); + istringstream iss {line}; + + string command {}; + iss >> command; + + if (command == "pos") + { + Point new_pos {}; + iss >> new_pos.x >> new_pos.y; + pacman.set_position(new_pos); + } + else if (command == "dir") + { + } + else if (command == "quit") + { + break; + } + } + } + +private: + + /* + En hj�lpfunktion som avg�r vilka tv� tecken som ska ritas ut f�r en given position p� + spelplanen. + */ + string to_draw(Point const& curr_pos) + { + string to_draw{" "}; + + if (pacman.get_position() == curr_pos) + { + to_draw[1] = '@'; + } + + return to_draw; + } + + /* + En hj�lpfunktion f�r att rita ut spelplanen f�r testprogrammet. + + Itererar �ver varje rad och column i kartan. Index f�r raderna �r flippade f�r att placera + y = 0 l�ngst ned. + + Varje punkt i kartan ritas som tv� tecken eftersom ett tecken i terminalen �r ca dubbelt s� + h�gt som det �r brett. + */ + void draw_map() + { + cout << "+" << setfill('-') << setw(WIDTH * 2) << "-" << "+\n"; + + for (int y {HEIGHT - 1}; y >= 0; --y) + { + cout << "|"; + for (int x {}; x < WIDTH; ++x) + { + cout << to_draw( Point{x,y} ); + } + cout << "|\n"; + } + + cout << "+" << setfill('-') << setw(WIDTH * 2) << "-" << "+" << endl; + } + + Pacman pacman; +}; + +int main() +{ + Ghost_Tester gt {}; + gt.run(); + return 0; +}