From 979c3b4528da1608404d6e163211280fee5da9c5 Mon Sep 17 00:00:00 2001 From: totycro Date: Sat, 9 Apr 2011 15:08:13 +0200 Subject: added some utility --- pacman-c++/util.cpp | 177 +++++++++++++++++++++++++++++++++++----------------- 1 file changed, 119 insertions(+), 58 deletions(-) (limited to 'pacman-c++/util.cpp') diff --git a/pacman-c++/util.cpp b/pacman-c++/util.cpp index 185b0a6..99a643e 100644 --- a/pacman-c++/util.cpp +++ b/pacman-c++/util.cpp @@ -1,76 +1,137 @@ #include "util.h" -// temporary -Transmission::map_t createDummyMap() -{ - Transmission::map_t map; - map = new Transmission::field_t*[Constants::map_size.width]; - for (unsigned int i = 0; i < Constants::map_size.width; ++i) - map[i] = new Transmission::field_t[Constants::map_size.height]; +namespace Util { - for (unsigned int x = 0; x < Constants::map_size.width; ++x) - { - for (unsigned int y = 0; y < Constants::map_size.height; ++y) + Transmission::map_t createEmptyMap() { + Transmission::map_t map; + map = new Transmission::field_t*[Constants::map_size.width]; + for (unsigned int i = 0; i < Constants::map_size.width; ++i) + map[i] = new Transmission::field_t[Constants::map_size.height]; + + for (unsigned int x = 0; x < Constants::map_size.width; ++x) { - Transmission::field_t &cur = map[x][y]; - cur = Transmission::none; + for (unsigned int y = 0; y < Constants::map_size.height; ++y) + { + Transmission::field_t &cur = map[x][y]; + cur = Transmission::none; + } } + return map; } + // temporary + Transmission::map_t createDummyMap() + { + Transmission::map_t map = createEmptyMap(); + const char *tmpl[] = { + " # # ", + " #### ###### # #### # # ###### ### ", + " # # ", + " # ##### # # # # # ### # # # ", + " # # # # # # # # # # ## # # ", + " # # # # # # # # ### # # # # ", + " # # # # # # # # # # # # ## # ", + " # # ### ##### # ### # # # ", + " ### # ", + " # # ### #### #### #### ##### ", + " #### # #..# #..# #..# # # ", + " # # ### #..# #..# #### # # # # ", + " # # # #..# #..# # # ", + " # #### # #### #### # # ##### # ", + " # # ", + " #### ###### # ##### # ####### ### ", + " # # " + }; - const char *tmpl[] = { - " # # ", - " #### ###### # #### # # ###### ### ", - " # # ", - " # ##### # # # # # ### # # # ", - " # # # # # # # # # # ## # # ", - " # # # # # # # # ### # # # # ", - " # # # # # # # # # # # # ## # ", - " # # ### ##### # ### # # # ", - " ### # ", - " # # ### #### #### #### ##### ", - " #### # #..# #..# #..# # # ", - " # # ### #..# #..# #### # # # # ", - " # # # #..# #..# # # ", - " # #### # #### #### # # ##### # ", - " # # ", - " #### ###### # ##### # ####### ### ", - " # # " - }; + for (unsigned int x = 0; x < Constants::map_size.width; ++x) + { + for (unsigned int y = 0; y < Constants::map_size.height; ++y) + { + Transmission::field_t &cur = map[x][y]; + cur = Transmission::none; + if (tmpl[y][x] == '#') + cur |= Color::none | Transmission::block; + /* this is a simple hack to create areas where no + * autoplaced points will be placed (see below) + */ + else if (tmpl[y][x] == '.') + cur |= Transmission::point; + } + } - for (unsigned int x = 0; x < Constants::map_size.width; ++x) - { - for (unsigned int y = 0; y < Constants::map_size.height; ++y) + map[0][0] |= Transmission::bonuspoint; + map[1][0] |= Color::red | Transmission::pacman | Transmission::direction_right; + //map[2][0] |= Color::blue | Transmission::pacman | Transmission::direction_up; + //map[3][0] |= Color::green | Transmission::pacman | Transmission::direction_down; + + /* auto place normal points*/ + for (unsigned int x = 0; x < Constants::map_size.width; ++x) { - Transmission::field_t &cur = map[x][y]; - cur = Transmission::none; - if (tmpl[y][x] == '#') - cur |= Color::none | Transmission::block; - /* this is a simple hack to create areas where no - * autoplaced points will be placed (see below) - */ - else if (tmpl[y][x] == '.') - cur |= Transmission::point; + for (unsigned int y = 0; y < Constants::map_size.height; ++y) + { + Transmission::field_t &cur = map[x][y]; + if (cur == Transmission::none) + cur |= Transmission::point; + else if (cur == Transmission::point) + cur = Transmission::none; + } } + + return map; } - map[0][0] |= Transmission::bonuspoint; - map[1][0] |= Color::red | Transmission::pacman | Transmission::direction_right; - //map[2][0] |= Color::blue | Transmission::pacman | Transmission::direction_up; - //map[3][0] |= Color::green | Transmission::pacman | Transmission::direction_down; - /* auto place normal points*/ - for (unsigned int x = 0; x < Constants::map_size.width; ++x) - { - for (unsigned int y = 0; y < Constants::map_size.height; ++y) - { - Transmission::field_t &cur = map[x][y]; - if (cur == Transmission::none) - cur |= Transmission::point; - else if (cur == Transmission::point) - cur = Transmission::none; + Transmission::field_t actorMovementToTransmission(Actor::Movement mov, Transmission::field_t def) { + switch (mov) { + case Actor::None: + return Transmission::direction_none; + break; + case Actor::Left: + return Transmission::direction_left; + break; + case Actor::Right: + return Transmission::direction_right; + break; + case Actor::Up: + return Transmission::direction_up; + break; + case Actor::Down: + return Transmission::direction_down; + break; + default: + if (def == static_cast(-1)) { + Q_ASSERT(false); + } else { + return def; + } } + return 0; // for pleasing the compiler } - return map; + Actor::Movement transmissionMovementToActor(Transmission::field_t field, Actor::Movement def) { + switch (field) { + case Transmission::direction_none: + return Actor::None; + break; + case Transmission::direction_left: + return Actor::Left; + break; + case Transmission::direction_right: + return Actor::Right; + break; + case Transmission::direction_up: + return Actor::Up; + break; + case Transmission::direction_down: + return Actor::Down; + break; + default: + if (def == Actor::Movement(-1)) { + Q_ASSERT(false); + } else { + return def; + } + } + return Actor::None; // for pleasing the compiler + } } -- cgit v1.2.3