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 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180
|
#include <iostream>
#include <conio.h>
#include <stdlib.h>
#include<windows.h>//<<<<<<<<<<<<<<<<<<<<<<<<<<<
using namespace std;
void cls()//<<<<<<<<<<<<<<<<<<<<<<<<
{
HANDLE hOut;
COORD Position;
DWORD Written;
hOut = GetStdHandle(STD_OUTPUT_HANDLE);
Position.X = 0;
Position.Y = 0;
FillConsoleOutputCharacter(hOut,' ', 0, Position, &Written);
SetConsoleCursorPosition(hOut, Position);
}
void inc_a_b(int &a,int &b, int a_buffer,int b_buffer)
{
if(a_buffer !=0)
{
if(a_buffer >0)
{
a++;
}
else
{
a--;
}
}
if(b_buffer !=0)
{
if(b_buffer >0)
{
b++;
}
else
{
b--;
}
}
}
bool key_input(char array [10][25],int &a,int &b,int &score, char pacman, int a_buffer, int b_buffer)
{
if (array [a+a_buffer][b+b_buffer] == 'X')
{
return true;
}
else
{
if (array [a+a_buffer][b+b_buffer] == '.')
{
array [a][b] = ' ';
inc_a_b(a,b,a_buffer,b_buffer);
array [a][b] = pacman;
score = score + 10;
}
else
{
if (array [a+a_buffer][b+b_buffer] == '\3' || array [a+a_buffer][b+b_buffer] == '\4' ||
array [a+a_buffer][b+b_buffer] == '\5' || array [a+a_buffer][b+b_buffer] == '\6')
{
array [a][b] = ' ';
inc_a_b(a,b,a_buffer,b_buffer);
array [a][b] = pacman;
score = score + 20;
}
else
{
array [a][b] = ' ';
inc_a_b(a,b,a_buffer,b_buffer);
array [a][b] = pacman;
}
}
}
return false;
}
void display (char array [10][25] , int row , int column)
{
cout << "\t\t\t\tPacman Game\nGame help\nPress (w) for upward direction\nPress (s) for" <<
"downward\nPress (a) for right\nPress (d) for left\nEnter to continue\n";
for (int i=0 ; i<10 ; i++)
{
cout << "\t" << array[i] << endl;
}
}
int main()
{
char array [10][25] = {"XXXXXXXXXXXXXXXXXXXXXXXX",
"X............\3.........X",
"X.X.\5.XXXXX.XXXXXX...X.X",
"X.X...X..........X..\4..X",
"X.X...X.......\5..X...X.X",
"X.X...XXXXX.XXXXXX.\3.X.X",
"X...........\4..........X",
"X.XX.XX.XX..XX.XXXX\3XX.X",
"X.............\6........X",
"XXXXXXXXXXXXXXXXXXXXXXXX"};
int count = 0;
int score = 0;
char ch;
char pacman = '\2';
//Pacman's initial position
int x = 1;
int y = 1;
array [x][y] = pacman;
display (array , 10 , 25);
for (int a=0 ; a<10 ; a++)
{
for (int b=0 ; b<25 ; b++)
{
if (array [a][b] == '.') //counting total score of any map (plus 10 for eating dot)
{
count = count + 10;
}
else if (array [a][b] == '\3' || array [a][b] == '\4' ||
array [a][b] == '\5' || array [a][b] == '\6')//plus 20 for eating power pill
{
count = count + 20;
}
}
}
int x_move,y_move;
do
{
x_move=y_move=0;
//system ("cls");<<<<<<<<<<<<<<<<<<<<<<<<<
cls();//<<<<<<<<<<<<<<<<<<<<<<<<
display (array , 10 , 20);
cout << "\nTOTAL : " << count;
cout << "\nSCORE : " << score << endl;
ch = getch();
if (score == count)
{
ch = 'q';
}
switch (ch)
{
case 's':
x_move=1;
key_input(array,x,y,score,pacman,x_move,y_move);
break;
case 'w':
x_move=-1;
key_input(array,x,y,score,pacman,x_move,y_move);
break;
case 'a':
y_move=-1;
key_input(array,x,y,score,pacman,x_move,y_move);
break;
case 'd':
y_move=1;
key_input(array,x,y,score,pacman,x_move,y_move);
break;
}
//key_input could've gone here, but to remain similar to your code, I've left the codes above.
//key_input(array,x,y,score,pacman,x_move,y_move);
}
while (ch != 'q');
cout << "\nGAME END\n";
cout << "\nTOTAL SCORE : " << score << endl;
return 0;
}
|