1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145
|
#include "stdafx.h"
#include <iostream>
#include <ctime>
using namespace std;
const short player = 1; // Player is represented by the number 1
const short monster = 2; // Enemy is represented by the number 2
short randomNum(){
return rand()%10;
}
class Player{
private:
short posX,posY;
public:
void randomPos(){
//Put the player in a random place in the level.
posX = randomNum();
posY = randomNum();
}
void message(){
cout << "Cannot move in this direction " << endl;
cout << endl;
}
void movePlayer(char choice){
switch (choice){
case 'w':
posX--;
if (posX < 0){
posX = 0;
message();
}
break;
case 's':
posX++;
if (posX > 9)
posX = 9;
message();
break;
case 'a':
posY--;
if (posY < 0)
posY = 0;
message();
break;
case 'd':
posY++;
if (posY > 9)
posY = 9;
message();
break;
}
}
short getX(){return posX;}
short getY(){return posY;}
};
class Monster: public Player{
private:
short mPosX,mPosY;
public:
void mRandomPos(){
//Put the monster in a random place in the level.
mPosX = randomNum();
mPosY = randomNum();
}
void moveMonster(){
}
short getMX(){return mPosX;}
short getMY(){return mPosY;}
};
class Level{
private:
short myLevel[10][10];
public:
void setArray(){
//set the values in the array to 0.
for (int i = 0; i < 10; i++)
for (int j = 0; j < 10; j++)
myLevel[i][j] = 0;
}
void playerPos(int X,int Y, bool newPos){
if (!newPos){
myLevel[X][Y] = 0;
}
if (newPos){
if (myLevel[X][Y] == 2)
{
cout << "You Killed Monster" << endl;
//At this point I want the XY coordinates of the monster object to 0. or stop
calling the function that is adding the monster in the gameLoop.
cout << endl;
}
myLevel[X][Y] = player;
}
}
void monsterPos(int X, int Y){
myLevel [X][Y] = monster;
}
void print(){
for (int i = 0; i < 10; i++)
for (int j = 0; j < 10; j++)
cout << myLevel [i][j] << "\t";
}
};
void gameLoop(Player p, Monster m, Level l){
bool loop = false;
char choice;
while (!loop)
{
cout << "Enter Direction ";
cin >> choice;
l.playerPos(p.getX(),p.getY(),false);
p.movePlayer(choice);
l.playerPos(p.getX(),p.getY(),true);
l.monsterPos(m.getMX(),m.getMY()); //This keeps on looping and
adding the monster to the level. I need to set this value to 0 when the player
is in the array containing the monster.
l.print();
}
}
int _tmain(int argc, _TCHAR* argv[])
{
srand(time(NULL));
Player player;
Monster monster;
player.randomPos();
monster.mRandomPos();
Level level;
level.setArray();
gameLoop(player, monster, level);
system ("PAUSE");
return 0;
}
|