X-Git-Url: https://git.ucc.asn.au/?p=progcomp2012.git;a=blobdiff_plain;f=home%2Fprogcomp%2Fjudge%2Fmanager%2Fhuman_controller.cpp;fp=home%2Fprogcomp%2Fjudge%2Fmanager%2Fhuman_controller.cpp;h=0000000000000000000000000000000000000000;hp=bf43e8d71eda1323b89a486a39afd81430f926ea;hb=88fc5a96c424e9a451b98f3b680bc1980345320d;hpb=e3b15cd5dea739f7523920d83bda592db95a7b93;ds=sidebyside diff --git a/home/progcomp/judge/manager/human_controller.cpp b/home/progcomp/judge/manager/human_controller.cpp deleted file mode 100644 index bf43e8d..0000000 --- a/home/progcomp/judge/manager/human_controller.cpp +++ /dev/null @@ -1,181 +0,0 @@ -#include "human_controller.h" - -#include "game.h" - -#include //Really I can't be bothered with fscanf any more - -using namespace std; - -MovementResult Human_Controller::QuerySetup(const char * opponentName, string setup[]) -{ - - static bool shownMessage = false; - if (!shownMessage) - { - if (graphicsEnabled) - fprintf(stdout, "WARNING: GUI not fully supported. You will be forced to use the default setup.\n"); - else - { - fprintf(stdout,"Enter %d x %d Setup grid\n", Game::theGame->theBoard.Width(), 4); - fprintf(stdout,"Please enter one line at a time.\n"); - fprintf(stdout, "You must place at least the Flag (%c). Use '%c' for empty squares.\n", Piece::tokens[(int)Piece::FLAG], Piece::tokens[(int)Piece::NOTHING]); - - switch (colour) - { - case Piece::RED: - fprintf(stdout, "You are RED and occupy the top 4 rows of the board.\n"); - fprintf(stdout, "NOTE: Enter \"DEFAULT\" to use the setup:\n"); - fprintf(stdout, "FB8sB479B8\nBB31555583\n6724898974\n967B669999\n"); - break; - case Piece::BLUE: - fprintf(stdout, "You are BLUE and occupy the bottom 4 rows of the board.\n"); - fprintf(stdout, "NOTE: Enter \"DEFAULT\" to use the setup:\n"); - fprintf(stdout, "967B669999\n6724898974\nBB31555583\nFB8sB479B8\n"); - break; - default: - fprintf(stdout, "WARNING: Unknown colour error! Please exit the game.\n"); - break; - } - } - - shownMessage = true; - } - - if (graphicsEnabled) - { - switch(colour) - { - case Piece::RED: - setup[0] = "FB8sB479B8"; - setup[1] = "BB31555583"; - setup[2] = "6724898974"; - setup[3] = "967B669999"; - break; - case Piece::BLUE: - setup[0] = "967B669999"; - setup[1] = "6724898974"; - setup[2] = "BB31555583"; - setup[3] = "FB8sB479B8"; - break; - default: - assert(false); - break; - } - return MovementResult::OK; - } - - for (int y = 0; y < 4; ++y) - { - cin >> setup[y]; - if (y == 0 && setup[0] == "DEFAULT") - { - switch(colour) - { - case Piece::RED: - setup[0] = "FB8sB479B8"; - setup[1] = "BB31555583"; - setup[2] = "6724898974"; - setup[3] = "967B669999"; - break; - case Piece::BLUE: - setup[0] = "967B669999"; - setup[1] = "6724898974"; - setup[2] = "BB31555583"; - setup[3] = "FB8sB479B8"; - break; - default: - assert(false); - break; - } - break; - } - } - assert(cin.get() == '\n'); - - return MovementResult::OK; -} - -MovementResult Human_Controller::QueryMove(string & buffer) -{ - static bool shownMessage = false; - if (!shownMessage) - { - if (!graphicsEnabled) - { - fprintf(stdout, "Please enter your move in the format:\n X Y DIRECTION [MULTIPLIER=1]\n"); - fprintf(stdout, "Where X and Y indicate the coordinates of the piece to move;\n DIRECTION is one of UP, DOWN, LEFT or RIGHT\n and MULTIPLIER is optional (and only valid for scouts (%c))\n", Piece::tokens[(int)(Piece::SCOUT)]); - - } - shownMessage = true; - } - - - - if (graphicsEnabled) - { - fprintf(stdout, "Click to move!\n"); - SDL_Event event; int mouseClick = 0; - - int x[] = {-1, -1}; int y[] = {-1, -1}; - while (mouseClick < 2) - { - - while (SDL_PollEvent(&event)) - { - switch (event.type) - { - case SDL_QUIT: - Game::theGame->logMessage("Exit called by human player!\n"); - exit(EXIT_SUCCESS); - break; - case SDL_MOUSEBUTTONDOWN: - switch (event.button.button) - { - case SDL_BUTTON_LEFT: - SDL_GetMouseState(&x[mouseClick], &y[mouseClick]); - x[mouseClick] /= 32; y[mouseClick] /= 32; //Adjust based on graphics grid size - if (mouseClick == 0) - { - stringstream s(""); - s << x[0] << " " << y[0] << " "; - buffer += s.str(); - } - else if (mouseClick == 1) - { - int xDist = x[1] - x[0]; - int yDist = y[1] - y[0]; - if (abs(xDist) > abs(yDist)) - { - if (xDist < 0) - buffer += "LEFT"; - else - buffer += "RIGHT"; - } - else if (yDist < 0) - buffer += "UP"; - else - buffer += "DOWN"; - } - mouseClick++; - break; - } - break; - } - } - } - fprintf(stdout, "Move complete!\n"); - } - else - { - buffer.clear(); - for (char in = fgetc(stdin); in != '\n'; in = fgetc(stdin)) - { - buffer += in; - } - } - - - - return MovementResult::OK; - -}