Please create a short Pac-Man game using gui. Do not use the one on the internet as I am a beginner. Please add a button to start, and a button where user can exit. Please also had and instructions manual into the code where the user can learn how to play the game

Computer Networking: A Top-Down Approach (7th Edition)
7th Edition
ISBN:9780133594140
Author:James Kurose, Keith Ross
Publisher:James Kurose, Keith Ross
Chapter1: Computer Networks And The Internet
Section: Chapter Questions
Problem R1RQ: What is the difference between a host and an end system? List several different types of end...
icon
Related questions
Question
Please create a short Pac-Man game using gui. Do not use the one on the internet as I am a beginner. Please add a button to start, and a button where user can exit. Please also had and instructions manual into the code where the user can learn how to play the game
Expert Solution
Step 1

Code for Pac-Man in C++

 

#include <iostream>  

#include <stdio.h>  

#include <windows.h>  

#include <string>  

#include <vector>  

using namespace std;  

char tmp_map[18][32];  

char map[18][32] = {  

    "+#############################+",  

    "|                             |",  

    "|                             |",  

    "|## ########### ##   #########|",  

    "|   |                         |",  

    "| | |### |  |           |     |",  

    "| |      |  | |###  |   |  |  |",  

    "| | #####|  | |      ## |     |",  

    "| |           |###  |      |  |",  

    "| |##### ###         ##       |",  

    "|          ######  ####### ###|",  

    "|                             |",  

    "|# ### ####      ###   #######|",  

    "|                             |",  

    "|                             |",  

    "|                             |",  

    "|                             |",  

    "+#############################+"};  

  

void ShowMap()  

{  

    for (int i = 0; i < 18; i++)  

    {  

        printf("%s\n", map[i]);  

    }  

}  

  

void gotoxy(short x, short y)  

{  

    HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);  

    COORD position = {x, y};  

  

    SetConsoleCursorPosition(hStdout, position);  

}  

  

class entity  

{  

public:  

    entity(int x, int y)  

    {  

        this->x = x;  

        this->y = y;  

    }  

  

    void move_x(int p)  

    {  

        if (map[y][x + p] == ' ')  

            x += p;  

    }  

  

    void move_y(int p)  

    {  

        if (map[y + p][x] == ' ')  

            y += p;  

    }  

  

    void move(int p, int q)  

    {  

        x += p;  

        y += q;  

    }  

  

    int get_x() { return x; }  

    int get_y() { return y; }  

  

    void draw(char p)  

    {  

        map[x][y] = p;  

        gotoxy(x, y);  

        printf("%c", p);  

    }  

  

private:  

    int x;  

    int y;  

};  

  

struct walk  

{  

    short walk_count;  

    short x;  

    short y;  

    short back;  

};  

  

struct target  

{  

    short x;  

    short y;  

};  

  

vector<target> walk_queue;  

  

vector<walk> BFSArray;  

  

void AddArray(int x, int y, int wc, int back)  

{  

    if (tmp_map[y][x] == ' ' || tmp_map[y][x] == '.')  

    {  

        tmp_map[y][x] = '#';  

        walk tmp;  

        tmp.x = x;  

        tmp.y = y;  

        tmp.walk_count = wc;  

        tmp.back = back;  

        BFSArray.push_back(tmp);  

    }  

}  

  

void FindPath(int sx, int sy, int x, int y)  

{  

    memcpy(tmp_map, map, sizeof(map));  

    BFSArray.clear();  

    walk tmp;  

    tmp.x = sx;  

    tmp.y = sy;  

    tmp.walk_count = 0;  

    tmp.back = -1;  

    BFSArray.push_back(tmp);  

  

    int i = 0;  

    while (i < BFSArray.size())  

    {  

        if (BFSArray[i].x == x && BFSArray[i].y == y)  

        {  

            walk_queue.clear();  

            target tmp2;  

            while (BFSArray[i].walk_count != 0)  

            {  

                tmp2.x = BFSArray[i].x;  

                tmp2.y = BFSArray[i].y;  

                walk_queue.push_back(tmp2);  

  

                i = BFSArray[i].back;  

            }  

  

            break;  

        }  

  

        AddArray(BFSArray[i].x + 1, BFSArray[i].y, BFSArray[i].walk_count + 1, i);  

        AddArray(BFSArray[i].x - 1, BFSArray[i].y, BFSArray[i].walk_count + 1, i);  

        AddArray(BFSArray[i].x, BFSArray[i].y + 1, BFSArray[i].walk_count + 1, i);  

        AddArray(BFSArray[i].x, BFSArray[i].y - 1, BFSArray[i].walk_count + 1, i);  

  

        /* 

            AddArray( BFSArray[i].x+1, BFSArray[i].y+1, BFSArray[i].walk_count+1, i ); 

            AddArray( BFSArray[i].x-1, BFSArray[i].y+1, BFSArray[i].walk_count+1, i ); 

            AddArray( BFSArray[i].x+1, BFSArray[i].y+1, BFSArray[i].walk_count+1, i ); 

            AddArray( BFSArray[i].x+1, BFSArray[i].y-1, BFSArray[i].walk_count+1, i ); 

 

            AddArray( BFSArray[i].x+1, BFSArray[i].y-1, BFSArray[i].walk_count+1, i ); 

            AddArray( BFSArray[i].x-1, BFSArray[i].y-1, BFSArray[i].walk_count+1, i ); 

            AddArray( BFSArray[i].x-1, BFSArray[i].y+1, BFSArray[i].walk_count+1, i ); 

            AddArray( BFSArray[i].x-1, BFSArray[i].y-1, BFSArray[i].walk_count+1, i ); 

        */  

        i++;  

    }  

  

    BFSArray.clear();  

}  

  

int main()  

{  

    bool running = true;  

    int x = 15; // hero x  

    int y = 16; // hero y  

    int old_x;  

    int old_y;  

  

    int ex = 1;  

    int ey = 1;  

  

    int pts = 0;  

  

    printf("Instruction:\n1. Arrow Keys to move your hero\n2. Eat the dots produced by the Eater to gain poins\n3. Don't get caught by the Eater\n\n");  

    printf("H -> Hard\nN -> Normal\nE -> Easy\n\nInput : ");  

  

    char diffi;  

    int speedmod = 3;  

  

    cin >> diffi;  

  

    if (diffi == 'N')  

    {  

        speedmod = 2;  

    }  

    else if (diffi == 'H')  

    {  

        speedmod = 1;  

    }  

  

    system("cls");  

    ShowMap();  

  

    gotoxy(x, y);  

    cout << "H";  

  

    int frame = 0;  

  

    FindPath(ex, ey, x, y);  

  

    while (running)  

    {  

        gotoxy(x, y);  

        cout << " ";  

  

        old_x = x;  

        old_y = y;  

  

        if (GetAsyncKeyState(VK_UP))  

        {  

            if (map[y - 1][x] == '.')  

            {  

                y--;  

                pts++;  

            }  

            else if (map[y - 1][x] == ' ')  

                y--;  

        }  

        if (GetAsyncKeyState(VK_DOWN))  

        {  

            if (map[y + 1][x] == '.')  

            {  

                y++;  

                pts++;  

            }  

            else if (map[y + 1][x] == ' ')  

                y++;  

        }  

        if (GetAsyncKeyState(VK_LEFT))  

        {  

            if (map[y][x - 1] == '.')  

            {  

                x--;  

                pts++;  

            }  

            else if (map[y][x - 1] == ' ')  

                x--;  

        }  

        if (GetAsyncKeyState(VK_RIGHT))  

        {  

            if (map[y][x + 1] == '.')  

            {  

                x++;  

                pts++;  

            }  

            else if (map[y][x + 1] == ' ')  

                x++;  

        }  

  

        if (old_x != x || old_y != y)  

        {  

            FindPath(ex, ey, x, y);  

        }  

  

        gotoxy(x, y);  

        cout << "H";  

  

        map[ey][ex] = '.';  

        gotoxy(ex, ey);  

        cout << ".";  

  

        if (frame % speedmod == 0 && walk_queue.size() != 0)  

        {  

            ex = walk_queue.back().x;  

            ey = walk_queue.back().y;  

            walk_queue.pop_back();  

        }  

  

        gotoxy(ex, ey);  

        cout << "E";  

  

        if (ex == x && ey == y)  

        {  

            break;  

        }  

  

        gotoxy(32, 18);  

        gotoxy(32, 1);  

        cout << pts;  

        Sleep(100);  

        frame++;  

    }  

  

    system("cls");  

    printf("You Lose and your score is : %i", pts);  

    cin.get();  

    cin.get();  

    cin.get();  

    cin.get();  

    cin.get();  

    cin.get();  

    cin.get();  

    cin.get();  

    return 0;  

}  

 

steps

Step by step

Solved in 2 steps

Blurred answer
Knowledge Booster
Running Time of Application
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-engineering and related others by exploring similar questions and additional content below.
Similar questions
Recommended textbooks for you
Computer Networking: A Top-Down Approach (7th Edi…
Computer Networking: A Top-Down Approach (7th Edi…
Computer Engineering
ISBN:
9780133594140
Author:
James Kurose, Keith Ross
Publisher:
PEARSON
Computer Organization and Design MIPS Edition, Fi…
Computer Organization and Design MIPS Edition, Fi…
Computer Engineering
ISBN:
9780124077263
Author:
David A. Patterson, John L. Hennessy
Publisher:
Elsevier Science
Network+ Guide to Networks (MindTap Course List)
Network+ Guide to Networks (MindTap Course List)
Computer Engineering
ISBN:
9781337569330
Author:
Jill West, Tamara Dean, Jean Andrews
Publisher:
Cengage Learning
Concepts of Database Management
Concepts of Database Management
Computer Engineering
ISBN:
9781337093422
Author:
Joy L. Starks, Philip J. Pratt, Mary Z. Last
Publisher:
Cengage Learning
Prelude to Programming
Prelude to Programming
Computer Engineering
ISBN:
9780133750423
Author:
VENIT, Stewart
Publisher:
Pearson Education
Sc Business Data Communications and Networking, T…
Sc Business Data Communications and Networking, T…
Computer Engineering
ISBN:
9781119368830
Author:
FITZGERALD
Publisher:
WILEY