From 7246aeac9075190c3c64d152c3b2e58bd7f14034 Mon Sep 17 00:00:00 2001 From: ozkriff Date: Wed, 13 Jun 2012 00:35:03 +0400 Subject: [PATCH] =?UTF-8?q?=D0=A4=D0=BE=D1=80=D0=BC=D0=B0=D1=82=D0=B8?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5:=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D0=B8=D0=BB=20=D0=BE=D1=82=D1=81=D1=82=D1=83?= =?UTF-8?q?=D0=BF=D1=8B=20=D0=BD=D0=B0=20=D1=82=D1=80=D0=B8=20=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D0=B1=D0=B5=D0=BB=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aichooser.cpp | 4 +- aichooser.h | 4 +- brick.cpp | 46 ++++++------ brick.h | 14 ++-- dominoes.cpp | 2 +- game.cpp | 132 ++++++++++++++++----------------- game.h | 20 ++--- humanchooser.cpp | 172 +++++++++++++++++++++---------------------- humanchooser.h | 8 +- misc.cpp | 10 +-- move.cpp | 4 +- move.h | 20 ++--- movegetmore.h | 12 +-- movepass.h | 8 +- moveput.h | 8 +- nextbrickchooser.cpp | 6 +- nextbrickchooser.h | 10 +-- player.cpp | 10 +-- player.h | 14 ++-- snake.cpp | 12 +-- snake.h | 12 +-- 21 files changed, 264 insertions(+), 264 deletions(-) diff --git a/aichooser.cpp b/aichooser.cpp index a2c1001..2b5d8be 100644 --- a/aichooser.cpp +++ b/aichooser.cpp @@ -5,10 +5,10 @@ #include "movepass.h" AiChooser::AiChooser() - : NextBrickChooser() + : NextBrickChooser() { } Move* AiChooser::do_move() { - return new MovePass(); + return new MovePass(); } diff --git a/aichooser.h b/aichooser.h index 7ec86df..f57ef4d 100644 --- a/aichooser.h +++ b/aichooser.h @@ -7,8 +7,8 @@ class AiChooser : public NextBrickChooser { public: - AiChooser(); - virtual Move* do_move(); + AiChooser(); + virtual Move* do_move(); }; #endif /* AICHOOSER_H_ */ diff --git a/brick.cpp b/brick.cpp index 76e7296..0c0f4a1 100644 --- a/brick.cpp +++ b/brick.cpp @@ -4,40 +4,40 @@ #include void Brick::print_no_rot(int a, int b) { - // const char *s = "(%i|%i)"; - // const char *s = "[%i:%i]"; - const char *s = "%i-%i"; - printf(s, a, b); + // const char *s = "(%i|%i)"; + // const char *s = "[%i:%i]"; + const char *s = "%i-%i"; + printf(s, a, b); } Brick::Brick(int left, int right, bool is_rotated) - : is_rotated(is_rotated), - left(left), - right(right) + : is_rotated(is_rotated), + left(left), + right(right) { } void Brick::print() { - if (is_rotated) { - print_no_rot(left, right); - } else { - print_no_rot(right, left); - } + if (is_rotated) { + print_no_rot(left, right); + } else { + print_no_rot(right, left); + } } bool Brick::can_connect(const Brick *brick) { - return left == brick->left - || left == brick->right - || right == brick->left - || right == brick->right; + return left == brick->left + || left == brick->right + || right == brick->left + || right == brick->right; } void print_bricks_list(const BricksList *list) { - for (BricksList::const_iterator it = list->begin(); - it != list->end(); ++it) - { - (*it)->print(); - putchar(' '); - } - putchar('\n'); + for (BricksList::const_iterator it = list->begin(); + it != list->end(); ++it) + { + (*it)->print(); + putchar(' '); + } + putchar('\n'); } diff --git a/brick.h b/brick.h index 0b189c1..73831a5 100644 --- a/brick.h +++ b/brick.h @@ -7,15 +7,15 @@ class Brick { private: - void print_no_rot(int a, int b); + void print_no_rot(int a, int b); public: - bool is_rotated; - int left; - int right; + bool is_rotated; + int left; + int right; public: - Brick(int left, int right, bool is_rotated = false); - void print(); - bool can_connect(const Brick *brick); + Brick(int left, int right, bool is_rotated = false); + void print(); + bool can_connect(const Brick *brick); }; typedef std::list BricksList; diff --git a/dominoes.cpp b/dominoes.cpp index d04042a..09459a5 100644 --- a/dominoes.cpp +++ b/dominoes.cpp @@ -4,5 +4,5 @@ #include "misc.h" int main(int /*ac*/, char ** /*av*/) { - return Game().run(); + return Game().run(); } diff --git a/game.cpp b/game.cpp index a37d937..9b9f154 100644 --- a/game.cpp +++ b/game.cpp @@ -11,90 +11,90 @@ #include "misc.h" void Game::generate_bricks() { - for (int left = 0; left <= 6; ++left) { - for (int right = 0; right <= left; ++right) { - all_bricks->push_front(new Brick(left, right)); - } - } - { - std::vector tmp(all_bricks->begin(), all_bricks->end()); - std::random_shuffle(tmp.begin(), tmp.end()); - std::copy(tmp.begin(), tmp.end(), all_bricks->begin()); - } + for (int left = 0; left <= 6; ++left) { + for (int right = 0; right <= left; ++right) { + all_bricks->push_front(new Brick(left, right)); + } + } + { + std::vector tmp(all_bricks->begin(), all_bricks->end()); + std::random_shuffle(tmp.begin(), tmp.end()); + std::copy(tmp.begin(), tmp.end(), all_bricks->begin()); + } #if 1 - print_bricks_list(all_bricks); + print_bricks_list(all_bricks); #endif } int Game::get_players_count() { - int players_count; - do { - printf("Еnter players count (2 or 4): "); - scanf("%i", &players_count); - } while (players_count != 4 && players_count != 2); - return players_count; + int players_count; + do { + printf("Еnter players count (2 or 4): "); + scanf("%i", &players_count); + } while (players_count != 4 && players_count != 2); + return players_count; } void Game::get_players() { - int players_count = get_players_count(); - for (int i = 0; i < players_count; ++i) { - printf("Is player %i - ai? (y/n) ", i); - char answer[10]; - scanf("%9s", answer); - NextBrickChooser *chooser; - if (strcmp(answer, "y") == 0) { - chooser = new AiChooser(); - } else if(strcmp(answer, "n") == 0) { - chooser = new HumanChooser(); - } else { - // TODO - die("'%s'?!?!? [y] OR [n]!\n", answer); - } - players->push_back(new Player(this, chooser)); - } + int players_count = get_players_count(); + for (int i = 0; i < players_count; ++i) { + printf("Is player %i - ai? (y/n) ", i); + char answer[10]; + scanf("%9s", answer); + NextBrickChooser *chooser; + if (strcmp(answer, "y") == 0) { + chooser = new AiChooser(); + } else if(strcmp(answer, "n") == 0) { + chooser = new HumanChooser(); + } else { + // TODO + die("'%s'?!?!? [y] OR [n]!\n", answer); + } + players->push_back(new Player(this, chooser)); + } } Game::Game() - : snake(new Snake), - players(new PlayersList), - moves(new MovesList), - all_bricks(new BricksList) + : snake(new Snake), + players(new PlayersList), + moves(new MovesList), + all_bricks(new BricksList) { - get_players(); + get_players(); } Game::~Game() { } int Game::run() { - generate_bricks(); - for (PlayersList::iterator it = players->begin(); - it != players->end(); ++it) - { - int bricks_num = 5; - for (int i = 0; i < bricks_num; ++i) { - Brick *b = all_bricks->front(); - (*it)->bricks.push_back(b); - all_bricks->pop_front(); - } - } + generate_bricks(); + for (PlayersList::iterator it = players->begin(); + it != players->end(); ++it) + { + int bricks_num = 5; + for (int i = 0; i < bricks_num; ++i) { + Brick *b = all_bricks->front(); + (*it)->bricks.push_back(b); + all_bricks->pop_front(); + } + } #if 1 - for (PlayersList::iterator pi = players->begin(); - pi != players->end(); ++pi) - { - print_bricks_list(&(*pi)->bricks); - } + for (PlayersList::iterator pi = players->begin(); + pi != players->end(); ++pi) + { + print_bricks_list(&(*pi)->bricks); + } #endif - while (1) { - for (PlayersList::iterator it = players->begin(); - it != players->end(); ++it) - { - Move *move = (*it)->do_move(); - if (!move) - die("BAD MOVE!!!\n"); - printf("move type %i\n", move->get_type()); - moves->push_back(move); - } - } - return EXIT_SUCCESS; + while (1) { + for (PlayersList::iterator it = players->begin(); + it != players->end(); ++it) + { + Move *move = (*it)->do_move(); + if (!move) + die("BAD MOVE!!!\n"); + printf("move type %i\n", move->get_type()); + moves->push_back(move); + } + } + return EXIT_SUCCESS; } diff --git a/game.h b/game.h index 687bc4b..3c3e749 100644 --- a/game.h +++ b/game.h @@ -10,19 +10,19 @@ class Game { public: - Snake *snake; + Snake *snake; private: - PlayersList *players; - MovesList *moves; - BricksList *all_bricks; + PlayersList *players; + MovesList *moves; + BricksList *all_bricks; private: - void generate_bricks(); - int get_players_count(); - void get_players(); + void generate_bricks(); + int get_players_count(); + void get_players(); public: - Game(); - ~Game(); - int run(); + Game(); + ~Game(); + int run(); }; #endif /* GAME_H_ */ diff --git a/humanchooser.cpp b/humanchooser.cpp index a0ce906..0ccc5b1 100644 --- a/humanchooser.cpp +++ b/humanchooser.cpp @@ -12,101 +12,101 @@ #include "brick.h" HumanChooser::HumanChooser() - : NextBrickChooser() + : NextBrickChooser() { } void HumanChooser::print_indexed_list(const BricksList *list) { - int i = 0; - BricksList::const_iterator it = list->begin(); - while (it != list->end()) { - printf("%d: ", i); - (*it)->print(); - printf(" "); - ++it; - ++i; - } - putchar('\n'); + int i = 0; + BricksList::const_iterator it = list->begin(); + while (it != list->end()) { + printf("%d: ", i); + (*it)->print(); + printf(" "); + ++it; + ++i; + } + putchar('\n'); } void HumanChooser::put_snake() { - printf("Snake: "); - print_bricks_list(&player->game->snake->bricks); - printf("Hand: "); - print_indexed_list(&player->bricks); - printf("Enter index: "); - int brick_index; - scanf("%d", &brick_index); - // TODO check input - printf("Left(1) or right(2) snake end (1/2): "); - int left_or_right; - if (scanf("%d", &left_or_right) != 1) - die("HumanChooser::put_snake(): scanf"); - // TODO check input - std::list::iterator brick = player->bricks.begin(); - std::advance(brick, brick_index); - if (left_or_right == 2 ) { - player->game->snake->add_brick_right(*brick); - } else if (left_or_right == 2 ) { - player->game->snake->add_brick_left(*brick); - } else { - // TODO error - } - player->bricks.erase(brick); - // goto promt_again; - // TODO generate Move object + printf("Snake: "); + print_bricks_list(&player->game->snake->bricks); + printf("Hand: "); + print_indexed_list(&player->bricks); + printf("Enter index: "); + int brick_index; + scanf("%d", &brick_index); + // TODO check input + printf("Left(1) or right(2) snake end (1/2): "); + int left_or_right; + if (scanf("%d", &left_or_right) != 1) + die("HumanChooser::put_snake(): scanf"); + // TODO check input + std::list::iterator brick = player->bricks.begin(); + std::advance(brick, brick_index); + if (left_or_right == 2 ) { + player->game->snake->add_brick_right(*brick); + } else if (left_or_right == 2 ) { + player->game->snake->add_brick_left(*brick); + } else { + // TODO error + } + player->bricks.erase(brick); + // goto promt_again; + // TODO generate Move object } Move* HumanChooser::do_move() { - printf("HumanChooser::do_move(): ...\n"); + printf("HumanChooser::do_move(): ...\n"); promt_again: // TODO replace with while() - printf( - "1 print snake\n" - "2 print hand\n" - "3 print others\n" - "4 snake\n" - "5 pass\n" - "6 take\n" - "...: "); - int n; - int status = scanf("%d", &n); - if (status != 1) { - die("status != 1.\n"); - } - switch (n) { - case 1: - printf("Snake: "); - print_bricks_list(&player->game->snake->bricks); - goto promt_again; - break; - case 2: - printf("Hand: "); - print_bricks_list(&player->bricks); - goto promt_again; - break; - case 3: - // PRINT OTHERS TODO - // print_bricks_list(player->bricks); - break; - case 4: - put_snake(); - return new MovePut(); - break; - case 5: - // pass - // TODO generate Move object - return new MovePass(); - break; - case 6: - // take - // TODO add snake.check_brick - return new MoveGetMore(); - break; - default: - // TODO - die(""); - break; - } - die(""); - return NULL; + printf( + "1 print snake\n" + "2 print hand\n" + "3 print others\n" + "4 snake\n" + "5 pass\n" + "6 take\n" + "...: "); + int n; + int status = scanf("%d", &n); + if (status != 1) { + die("status != 1.\n"); + } + switch (n) { + case 1: + printf("Snake: "); + print_bricks_list(&player->game->snake->bricks); + goto promt_again; + break; + case 2: + printf("Hand: "); + print_bricks_list(&player->bricks); + goto promt_again; + break; + case 3: + // PRINT OTHERS TODO + // print_bricks_list(player->bricks); + break; + case 4: + put_snake(); + return new MovePut(); + break; + case 5: + // pass + // TODO generate Move object + return new MovePass(); + break; + case 6: + // take + // TODO add snake.check_brick + return new MoveGetMore(); + break; + default: + // TODO + die(""); + break; + } + die(""); + return NULL; } diff --git a/humanchooser.h b/humanchooser.h index 10e46c9..5285e4d 100644 --- a/humanchooser.h +++ b/humanchooser.h @@ -8,11 +8,11 @@ class HumanChooser : public NextBrickChooser { private: - void put_snake(); - void print_indexed_list(const BricksList *list); + void put_snake(); + void print_indexed_list(const BricksList *list); public: - HumanChooser(); - virtual Move* do_move(); + HumanChooser(); + virtual Move* do_move(); }; #endif /* HUMANCHOOSER_H_ */ diff --git a/misc.cpp b/misc.cpp index 504834f..30647e2 100644 --- a/misc.cpp +++ b/misc.cpp @@ -6,11 +6,11 @@ #include void die(const char *errstr, ...) { - va_list ap; - va_start(ap, errstr); - vfprintf(stderr, errstr, ap); - va_end(ap); - exit(EXIT_FAILURE); + va_list ap; + va_start(ap, errstr); + vfprintf(stderr, errstr, ap); + va_end(ap); + exit(EXIT_FAILURE); } diff --git a/move.cpp b/move.cpp index c754e65..940cf96 100644 --- a/move.cpp +++ b/move.cpp @@ -3,7 +3,7 @@ #include "move.h" Move::Move(MoveType type) - : type(type) + : type(type) { } @@ -11,5 +11,5 @@ Move::~Move() { } Move::MoveType Move::get_type() { - return type; + return type; } diff --git a/move.h b/move.h index aacdc33..32287f3 100644 --- a/move.h +++ b/move.h @@ -7,18 +7,18 @@ class Move { public: - enum MoveType { - MOVE_PASS, - MOVE_GET_MORE, - MOVE_PUT_TO_SNAKE - }; + enum MoveType { + MOVE_PASS, + MOVE_GET_MORE, + MOVE_PUT_TO_SNAKE + }; private: - MoveType type; + MoveType type; public: - int player_id; - Move(MoveType type); - virtual ~Move(); - MoveType get_type(); + int player_id; + Move(MoveType type); + virtual ~Move(); + MoveType get_type(); }; typedef std::list MovesList; diff --git a/movegetmore.h b/movegetmore.h index cbde3f4..21fea1a 100644 --- a/movegetmore.h +++ b/movegetmore.h @@ -5,13 +5,13 @@ class MoveGetMore : public Move { private: - BricksList bricks; - Brick *putbrick; + BricksList bricks; + Brick *putbrick; public: - MoveGetMore() - : Move(MOVE_GET_MORE) - {} - virtual ~MoveGetMore() {} + MoveGetMore() + : Move(MOVE_GET_MORE) + {} + virtual ~MoveGetMore() {} }; #endif /* MOVEGETMORE_H_ */ diff --git a/movepass.h b/movepass.h index d6dc0e3..046c8ca 100644 --- a/movepass.h +++ b/movepass.h @@ -8,10 +8,10 @@ class MovePass : public Move { private: public: - MovePass() - : Move(MOVE_PASS) - {} - virtual ~MovePass() {} + MovePass() + : Move(MOVE_PASS) + {} + virtual ~MovePass() {} }; #endif /* MOVEPASS_H_ */ diff --git a/moveput.h b/moveput.h index d1aa77c..90c797f 100644 --- a/moveput.h +++ b/moveput.h @@ -6,10 +6,10 @@ class MovePut : public Move { private: public: - MovePut() - : Move(MOVE_PUT_TO_SNAKE) - {} - virtual ~MovePut() {} + MovePut() + : Move(MOVE_PUT_TO_SNAKE) + {} + virtual ~MovePut() {} }; #endif /* MOVEPUT_H_ */ diff --git a/nextbrickchooser.cpp b/nextbrickchooser.cpp index 4d5d906..3df59a5 100644 --- a/nextbrickchooser.cpp +++ b/nextbrickchooser.cpp @@ -5,7 +5,7 @@ #include NextBrickChooser::NextBrickChooser() - : player(NULL) + : player(NULL) { } @@ -13,6 +13,6 @@ NextBrickChooser::~NextBrickChooser() { } void NextBrickChooser::set_player(Player *new_player) { - assert(new_player); - player = new_player; + assert(new_player); + player = new_player; } diff --git a/nextbrickchooser.h b/nextbrickchooser.h index a02f149..4079df1 100644 --- a/nextbrickchooser.h +++ b/nextbrickchooser.h @@ -9,12 +9,12 @@ class Move; class NextBrickChooser { protected: - Player *player; + Player *player; public: - NextBrickChooser(); - virtual ~NextBrickChooser(); - virtual Move* do_move() = 0; - void set_player(Player *player); + NextBrickChooser(); + virtual ~NextBrickChooser(); + virtual Move* do_move() = 0; + void set_player(Player *player); }; #endif /* NEXTBRICKCHOOSER_H_ */ diff --git a/player.cpp b/player.cpp index cfcb60f..91ec854 100644 --- a/player.cpp +++ b/player.cpp @@ -5,16 +5,16 @@ #include "nextbrickchooser.h" Player::Player(Game *game, NextBrickChooser *chooser) - : game(game), - chooser(chooser) + : game(game), + chooser(chooser) { - printf("Player::Player\n"); - chooser->set_player(this); + printf("Player::Player\n"); + chooser->set_player(this); } Player::~Player() { } Move* Player::do_move() { - return chooser->do_move(); + return chooser->do_move(); } diff --git a/player.h b/player.h index 5016c9c..a98bc1f 100644 --- a/player.h +++ b/player.h @@ -11,16 +11,16 @@ class NextBrickChooser; class Player { public: - Game *game; + Game *game; private: - NextBrickChooser *chooser; - int score; + NextBrickChooser *chooser; + int score; public: - BricksList bricks; + BricksList bricks; public: - Player(Game *game, NextBrickChooser *chooser); - ~Player(); - Move* do_move(); + Player(Game *game, NextBrickChooser *chooser); + ~Player(); + Move* do_move(); }; typedef std::list PlayersList; diff --git a/snake.cpp b/snake.cpp index 1d6c5a0..e3fe5e0 100644 --- a/snake.cpp +++ b/snake.cpp @@ -3,22 +3,22 @@ #include "snake.h" void Snake::add_brick_right(Brick *brick) { - bricks.push_front(brick); + bricks.push_front(brick); } void Snake::add_brick_left(Brick *brick) { - bricks.push_back(brick); + bricks.push_back(brick); } void Snake::add_first_brick(Brick *brick) { - bricks.push_front(brick); + bricks.push_front(brick); } void Snake::print() { - print_bricks_list(&bricks); + print_bricks_list(&bricks); } bool Snake::check_can_put(const Brick *b) { - return bricks.front()->can_connect(b) - || bricks.back()->can_connect(b); + return bricks.front()->can_connect(b) + || bricks.back()->can_connect(b); } diff --git a/snake.h b/snake.h index 2287fb7..d04bcb8 100644 --- a/snake.h +++ b/snake.h @@ -7,13 +7,13 @@ class Snake { public: - BricksList bricks; + BricksList bricks; public: - void add_brick_right(Brick *brick); - void add_brick_left(Brick *brick); - void add_first_brick(Brick *brick); - void print(); - bool check_can_put(const Brick *b); + void add_brick_right(Brick *brick); + void add_brick_left(Brick *brick); + void add_first_brick(Brick *brick); + void print(); + bool check_can_put(const Brick *b); }; #endif /* SNAKE_H_ */