jf8441's picture
Upload 25 files
0ef7a64 verified
raw
history blame
5.01 kB
/*
Name:Wong Pui Shan
Sdutent ID:52611804
program: AScISD
Name: HAR Chiu Kwong Samson
Sdutent ID:52629360
program: AScISD
Name: LAM Cheuk Man
Sdutent ID:52621140
program: AScISD
Name:KO Jeffrey KO
Sdutent ID:525 695 30
program: AScISD
*/
#include <iostream>
#include <fstream>
#include <string>
#include "Utilities.h"
#include "Game.h"
#include "Ghost.h"
#include "Pacman.h"
#include "Maze.h"
#include "FileIO.h"
#include "FileIO.h"
#include "Fruit.h"
#include <climits>
#include <ctime>
using namespace std;
Pacman::Pacman(){
c = 'c';
x = 10;
y = 9;
Ox = 10;
Oy = 9;
}
int Pacman::getPacmanX()
{
return x;
}
int Pacman::getPacmanY()
{
return y;
}
void Pacman::Move(Game &g, Maze &m,Utilities u, int &dot, Ghost &ga, Ghost &gb, Ghost &gc, Ghost &gd, Utilities &ud,Utilities &uc,Utilities &ub,Utilities &ua,Utilities &z, Fruit &fruit1, Utilities &f)
{
FileIO fileIO;
u.gotoXY(x,y);
u.changeColour(FOREGROUND_YELLOW );
cout << "p";
c = u.checkKey();
u.gotoXY(x,y);
cout << " ";
switch (c)
{
case 72: // Up arrow
if (m.getMazeArray(x, y-1)!='-' && m.getMazeArray(x, y-1)!='|')
y--;
break;
case 80: // Down arrow
if (m.getMazeArray(x, y+1)!='-' && m.getMazeArray(x, y+1)!='|')
y++;
break;
case 75: // Left arrow
if (m.getMazeArray(x-1, y)!='-' && m.getMazeArray(x-1, y)!='|')
x--;
break;
case 77: // Right arrow
if (m.getMazeArray(x+1, y)!='-' && m.getMazeArray(x+1, y)!='|')
x++;
break;
}
// Move cursor to updated position
unsigned int start = time(NULL);
u.gotoXY(x,y);
cout << "p";
if (m.getMazeArray(x, y)=='X')
{
m.setTotalDot(-1);
m.setMazeArray(x, y,' ');
g.setPoint(50);
//loop the situstion that pacman eat the power dot
while(time(NULL) - start < 10 && g.getLoopGameBool() == true)
{
//_sleep(80);
fileIO.SaveGame (m, u, g);
Pacman::OppositePosition(g, m, u, dot);
ga.ChangePosition();
gb.ChangePosition();
gc.ChangePosition();
gd.ChangePosition();
ga.showGhost(ua);
ga.slowMove(m, ua);
gb.showGhost(ub);
gb.slowMove(m, ub);
gc.showGhost(uc);
gc.slowMove(m, uc);
gd.showGhost(ud);
gd.slowMove(m, ud);
g.Move(m, z);
g.checkForUpLevel(m);
Pacman::EatingGhost(ga, g, ua, u);
Pacman::EatingGhost(gb, g, ub, u);
Pacman::EatingGhost(gc, g, uc, u);
Pacman::EatingGhost(gd, g, ud, u);
fruit1.showFruit(g, dot, m, f);
}
ga.RechangePosition();
gb.RechangePosition();
gc.RechangePosition();
gd.RechangePosition();
}
//Pacman eat the dots, power dot, and fruit and add the point
else if (m.getMazeArray(x, y)=='.')
{
m.setTotalDot(-1);
m.setMazeArray(x, y,' ');
g.setPoint(10);
dot ++;
}
else if (m.getMazeArray(x, y)=='!')
{
m.setMazeArray(x, y,' ');
g.setPoint(100);
}
else if (m.getMazeArray(x, y)=='*')
{
m.setMazeArray(x, y,' ');
g.setPoint(300);
}
else if (m.getMazeArray(x, y)=='#')
{
m.setMazeArray(x, y,' ');
g.setPoint(500);
}
}
void Pacman::Die(Utilities &u)
{
//reset the pacman when it is eaten
x = Ox;
y = Oy;
u.gotoXY(Ox,Oy);
u.changeColour(FOREGROUND_YELLOW);
cout << "p";
}
//For the status of eat power dot pacman
void Pacman::OppositePosition(Game &g, Maze &m,Utilities u, int &dot)
{
u.gotoXY(x,y);
u.changeColour(FOREGROUND_YELLOW);
cout << "P";
c = u.checkKey();
u.gotoXY(x,y);
cout << " ";
switch (c)
{
case 72: // Up arrow
if (m.getMazeArray(x, y-1)!='-' && m.getMazeArray(x, y-1)!='|')
y--;
break;
case 80: // Down arrow
if (m.getMazeArray(x, y+1)!='-' && m.getMazeArray(x, y+1)!='|')
y++;
break;
case 75: // Left arrow
if (m.getMazeArray(x-1, y)!='-' && m.getMazeArray(x-1, y)!='|')
x--;
break;
case 77: // Right arrow
if (m.getMazeArray(x+1, y)!='-' && m.getMazeArray(x+1, y)!='|')
x++;
break;
}
// Move cursor to updated position
u.gotoXY(x,y);
cout << "P";
if (m.getMazeArray(x, y)=='X')
{
m.setTotalDot(-1);
m.setMazeArray(x, y,' ');
g.setPoint(50);
}
else if (m.getMazeArray(x, y)=='.')
{
m.setTotalDot(-1);
m.setMazeArray(x, y,' ');
g.setPoint(10);
dot ++;
}
else if (m.getMazeArray(x, y)=='!')
{
m.setMazeArray(x, y,' ');
g.setPoint(100);
}
else if (m.getMazeArray(x, y)=='*')
{
m.setMazeArray(x, y,' ');
g.setPoint(300);
}
else if (m.getMazeArray(x, y)=='#')
{
m.setMazeArray(x, y,' ');
g.setPoint(500);
}
}
void Pacman::EatingGhost(Ghost &ghost, Game &g, Utilities &a, Utilities &u)
{
//pacman eat the ghost and add point
string charGhost = ghost.GetGhostMember();
if (ghost.GetGhostX() == x && ghost.GetGhostY() == y)
{
if(charGhost == "a")
g.setPoint(800);
else if(charGhost == "b")
g.setPoint(400);
else if(charGhost == "c")
g.setPoint(200);
else if(charGhost == "d")
g.setPoint(100);
ghost.ResetGhost(a);
}
}