No older revisions available
No older revisions available
~cpp
#include <iostream>
#include <assert.h>
using namespace std;
typedef struct __IntPair {
int n1;
int n2;
} IntPair;
class Board
{
public:
int m_nMaxCol;
int m_nMaxRow;
IntPair m_nRoachPos;
Board () {
for (int i=0;i<100;i++) {
for (int j=0;j<100;j++) {
boardArray[i][j] = 0;
}
}
}
int boardArray[100][100];
void setSize (int nCol, int nRow) {
m_nMaxCol = nCol;
m_nMaxRow = nRow;
}
void printBoardStatus () {
for (int i=0;i<m_nMaxRow;i++) {
for (int j=0;j<m_nMaxCol;j++) {
cout << boardArray[i][j] << " ";
}
cout <<endl;
}
}
void updateCell () { }
int isCheckedAllCells () {return 0; }
void setRoachPosition(int nRow, int nCol) {
m_nRoachPos.n1 = nRow;
m_nRoachPos.n2 = nCol;
}
IntPair getRoachPosition () {
return m_nRoachPos;
}
};
class Journey
{
public:
int journeyArray[100];
int nCurrentPosition;
int journeySize;
Journey (char* buffer) {
journeySize = strlen(buffer);
for (int i=0;i<journeySize;i++) {
journeyArray[i] = buffer[i] - '0';
}
nCurrentPosition = -1;
}
~Journey () { }
int getNextJourney () {
nCurrentPosition ++;
if (journeySize <= nCurrentPosition) return -1;
return journeyArray[nCurrentPosition];
}
};
class Roach
{
public:
Journey* m_pJourney;
Board* m_pBoard;
int m_nMoveCount;
Roach () {
}
Roach (Journey* pJourney) { m_pJourney = pJourney;
m_nMoveCount=0;
}
~Roach () { }
void goAboard (Board* pBoard, int nStartRow, int nStartCol) {
m_pBoard = pBoard;
m_pBoard->setRoachPosition(nStartRow, nStartCol);
}
void run () {
while (!isFinished ()) {
move (m_pJourney->getNextJourney ());
}
}
void move (int nLocation) {
}
int isFinished () {
return 1;
}
void printMoveCount () {
cout << "move count : " << m_nMoveCount << endl;
}
};
class Inputer
{
public:
int m_nBoardCol;
int m_nBoardRow;
int m_nStartCol;
int m_nStartRow;
Journey* journey;
void getData () {
cin >> m_nBoardRow >> m_nBoardCol;
cin >> m_nStartRow >> m_nStartCol;
char buffer[100];
scanf ("%s", buffer);
}
int getBoardCol () { return m_nBoardRow; }
int getBoardRow () { return m_nBoardCol; }
int getStartCol () { return 0; }
int getStartRow () { return 0; }
Journey* getJourney () { return journey; }
};
class Game
{
public:
Inputer* inputer;
Board board;
Roach* roach;
Game () { }
~Game () { }
void setInputer (Inputer* pInputer) {
inputer = pInputer;
}
void start () {
roach = new Roach (inputer->getJourney ());
board.setSize (inputer->getBoardRow (), inputer->getBoardCol ());
roach->goAboard (&board, inputer->getStartRow(), inputer->getStartCol());
roach->run ();
roach->printMoveCount ();
board.printBoardStatus ();
}
};
void testJourney () {
char buffer[100] = "112";
Journey* journey = new Journey(buffer);
int actual;
int expectedSet[5] = {1,1,2,-1,-1};
for (int i=0;i<5;i++) {
actual = journey->getNextJourney();
assert (actual == expectedSet[i]);
}
cout << "Journey.getNextJourney() Ok \n";
}
void testRoach () {
Board board;
board.setSize(5,5);
Roach roach;
roach.goAboard(&board, 1, 2);
assert (board.getRoachPosition ().n1 == 1);
assert (board.getRoachPosition ().n2 == 2);
cout << "Roach.goAboard () Ok \n";
}
int main ()
{
/*
Game game;
Inputer inputer;
inputer.getData();
game.setInputer (&inputer);
game.start ();
*/
testJourney();
testRoach();
return 0;
}