国产人妻人伦精品_欧美一区二区三区图_亚洲欧洲久久_日韩美女av在线免费观看

合肥生活安徽新聞合肥交通合肥房產生活服務合肥教育合肥招聘合肥旅游文化藝術合肥美食合肥地圖合肥社保合肥醫院企業服務合肥法律

代寫ENGR1010J、代做C/C++設計編程
代寫ENGR1010J、代做C/C++設計編程

時間:2024-12-11  來源:合肥網hfw.cc  作者:hfw.cc 我要糾錯



ENGR1010J FA2024 Lab6: Pac-Man
Due date: 23:59, December 9, 2024
Background
Pac-Man is a classic video game released in 1980. In this lab, we just need to create a basic gaming
interfac e so that we humans can play with it.
This is a screenshot from a Pac-Man game. A typical Pac-Man world contains a cute Pacman, walls,
small foods, big energy capsules, and lovely ghosts.
To make our lives easier, our version of "Pac-Man" does not feature such fancy graphics. Instead, it is
composed of all ASCII characters. Pacman is represented by a similar-looking  C , walls by  # , foods
by  . , capsules by  o , and ghosts by  @ . (The provided templates print boundaries, so you do not
need to consider them.) The picture below shows the game interface in the console.We have provided compiled executables for Windows, MacOS, and Linux. We recommend you run
the executable and play the game to get a basic idea of what you should do. Also, when you have
any doubt about whatever part you write, if your behavior matches our example program, it is
(almost) sure to say you are safe.
On MacOS or Linux, in order to run the provided executable, you may need to first run the command
 chmod +x Pacman_MacOS_arm64/x86  or  chmod +x Pacman_Linux  under the path of the text file in your
terminal. Contact TAs if you have any problems.
Unlike in the real-time video game Pac-Man, we control our Pacman frame by frame. The game will
pause every frame and wait for your input. You can type " w/a/s/d " into the game to move Pacman,
or " i " for it to stand still. Confirm your input by “Enter”, and the game will show you the next frame.
PartA: Make a Game From Scratch
Files
We have provided you with code templates, which contains  lab6.h ,  io.cpp ,  game.cpp ,  main.cpp .
The contents of each file are listed below:
File Content
lab6.h All the structs and variables as well as the function prototypes.
io.cpp Functions dealing with user inputs and output the game interface in the console.
game.cpp To realize all the functions given in lab6.h.
main.cpp The main function.
In this lab, what you need to do is to fill up the functions in game.cpp according to the comments and
instructions. Then you can run the main.cpp to test your codes with code runner. Use the command
line to compile  io.cpp ,  main.cpp ,  game.cpp  together:
 g++ -std=c++1z game.cpp main.cpp -o lab6 -I -lm . If you have any questions regarding compile
issues, feel free to ask!
However, if you think the functions in  game.cpp  are not enough, you are allowed to write your
own functions in  game.cpp , and do not forget to declare it in  lab6.h .
Variables and Functions
The game operates by a  struct game  structure. We have already specified some components of it:typedef struct game {
//Part A
 char** grid; // a 2-dimensional array of characters to display the game;
 int rows; // number of rows of the grid;
 int columns; // number of columns of the grid;
 int foodCount; // number of remaining food in the game;
 int score; // current score;
 GameState state; // the state of the game, one of losing, onGoing, or winning.
} Game;
Feel free to add more components to this structure if you would like to.
Apart from the structure, there are many functions you need to write for this game to operate. When
implementing provided function prototypes in the templates, you should follow the instructions below,
or see the comments. You MUST NOT modify the function names, or add/remove parameters. You
can also add more functions if you like. We will not check any function that are not provided.
A game of given rows and columns is created by calling the function
 Game* NewGame(int rows, int columns) . In this function, You should:
dynamically allocate space for a Game pointer
initialize all member variables of your Game structure. (For example,  foodCount  and  score 
should be initialized to 0.)
create the member grid by dynamically allocating a 2-dimensional array of given size.
Boundary is not included in either rows or columns, and the cell at top-left corner is at row 0 and
column 0.
When the game ends, the function  void EndGame(Game* game)  is automatically called. In this function,
you should:
free any memory you dynamically allocated, such as grid.
free the parameter game, as it is also dynamically created.
Walls, foods and Pacman are added to the game by functions  AddWall ,  AddFood , and  AddPacman . In
these functions you should:modify the grid in your  Game  structure to make sure whatever item you add displays correctly.
make sure all of these game components can only be added to an empty cell.
make sure Pacman cannot be added to the game if there is already a Pacman.
Finally, you can write the function  void MovePacman(Game* game, Direction direction)  to control your
Pacman.  Direction  is an enum of  {up, down, left, right, idle}  . The rule to move your Pacman
is as follows:
On  idle , Pacman will stay still.
If Pacman would move to an empty cell, Pacman will do so successfully;
If Pacman would move to a food cell, Pacman will move to it and eat the food. Your score will
increase by  FOOD_SCORE = 10 . If Pacman eats the last food, you win the game. You should mark
the state of this game as winning.
If Pacman would bump into a wall or a boundary, Pacman will stay still.
In any of the cases above, your score should decrease by 1, for one turn you have played.
You can have a better understanding of the whole process by reading the sample  main()  function in
 main.cpp  and function  void PlayGame(Game* game)  in  io.cpp .
Time to play!
You can initialize your custom game in your  main()  function by calling  NewGame . After that, you can
add walls and foods to any specific location by  AddWall  and  AddFood . Don’t forget to add a Pacman
by AddPacman to the game.
When your game is prepared, you can call the provided  PlayGame  function. When you win or lose,
 PlayGame  will terminate by calling  EndGame .
If your game runs... Congratulations! You now have a "complete" Pacman game. You can submit it to
JOJ for Part A, and the first three testcases are for Part A, so don't worry if you cannot pass the last
cases now. However, the game seems a little boring, let’s go to Part B...
Part B: Here come the ghosts!
Your game is missing a part of the greatest fun - the ghosts. In this part, you will add ghosts and
energy capsules to your game so that it will become more playable.
We do not force any restrictions on how you should store your data for ghosts and capsules. Do you
think you need to write a structure, especially for ghosts? If so, what do you need to store in it? Your
design can be in any way you like (but still try not to use global variables), as long as it meets the
requirements below:Requirements for ghosts:
There are at most  MAX GHOSTS = 30  ghosts.
Ghosts are added to the game by the function
 bool AddGhost(Game* game, int r, int c, Direction direction) .
This function is slightly different, as ghosts can be added on a cell with food or a capsule.
Ghosts cover foods and capsules in display, so their cells (originally  .  or  o ) will be
displayed in  @ . However, those food or capsules must still exist, and should be displayed
again when ghosts leave their cells.
 Direction  defines how a ghost moves. Ghosts move either in a horizontal line or a vertical
line. The parameter  direction  in this function is the ghost’s initial direction.
Ghosts are moved by the function  void MoveGhosts(Game* game) .
This function will move all ghosts in the game by one step to their own directions.
Ghosts should be moved in the order they were added.
If a ghost would move onto a cell with food or a capsule, it will cover the food or capsule in
display, so that cell (originally  .  or  o ) will be displayed in  @ . However, that food or capsule
must still exist, and should be displayed again when this ghost leaves that cell.
If a ghost would bump into a wall, another ghost, or a boundary, its direction will reverse,
and it will try to move in the new direction immediately this turn. If then it would bump into
another wall/ghost/boundary, it will stop and won’t move for this turn, with its direction
reversed.
Now it is possible to lose the game. By rules, Pacman always moves first. There are three situations
that need to be specified:
If Pacman directly bumps into a ghost, Pacman will move to that cell, and get killed. You should
mark the game state as losing.
If a food or a capsule is below that ghost, Pacman cannot eat it.
If Pacman moves to a cell that a ghost also attempts to move to, Pacman will perform a
successful move, and the ghost then moves onto Pacman’s cell. You will also lose the game.
Requirements for capsules:
Capsules are large foods that give Pacman superpower. Therefore, capsules are counted as the
number of foods in the game. Pacman must eat all food and capsules to win.
Capsules are added by the function  bool AddCapsule(Game* game, int r, int c) . Like food, a
capsule cannot be added to a cell with a wall, a Pacman, or a ghost. However, a capsule can be
added to a cell with a food, resulting in that food being upgraded to a capsule.
When Pacman eats a capsule, your score will increase by  CAPSULE SCORE = 50 , and Pacman will
gain superpower for its next  CAPSULE DURATION = 10  moves. Its superpower is that:
All ghosts will be scared, and their display change from  @  to  X . When Pacman’s
superpower expires, they change back to their cute evil faces  @ .Scared ghosts are slowed down by 50%, which is shown by that they cannot move every
other turn.(We cannot move ghosts by half a cell, after all) They will be able to move on the
same turn when Pacman eats a capsule, but cannot move the next turn. This goes on until
Pacman’s superpower expires.
When with superpower, Pacman can eat ghosts! When Pacman moves onto a grid with a
scared ghost, it eats the ghost, earning a score of  GHOST SCORE = 200 . If there is a food or a
capsule below that ghost, Pacman eats it as well. That ghost will not respawn and can be
removed from the game. The same goes for the case when a scared ghost bumps into
Pacman.
Pacman’s superpower activates immediately when it eats a capsule, and counts down right after
Pacman’s turn, starting from its next turn. For example, if Pacman and a scared ghost attempt to
move onto the same grid on Pacman’s 10th turn of superpower, Pacman will move first, but its
superpower will immediately expire, and that ghost, not scared anymore, can kill Pacman. In
other words, Pacman’s superpower ends after 10 turns at the same moment of eating a capsule.
If Pacman eats another capsule while it has superpower, the duration of superpower will be
refreshed to 10 turns, rather than stack. In this case, it is possible that a scared ghost has
already moved on the turn(the new 9th turn) right before the turn when Pacman’s superpower
expires(10th). That ghost can still move on its next turn(10th), because it will not be a scared
ghost then.
Finally, you can add ghosts and capsules to your game in your main function, and enjoy the finished
game of Pacman. The submission is the same as how you did for part A. Good luck and have fun!
Rubric
Tasks
Part A: 30 pts
Part B: ** pts
Oral Explanation: 30 pts
Total: 150 pts
Deduction
Late submission on Canvas: -20 pts per day. JOJ will be closed on the day of the lab, so no late
submission will be accepted on JOJ.
Global variables: Using global variables in such a big project could be dangerous and you will
lose 10 points for each global variable.Submission
You need to compress your  game.cpp  and  lab6.h  file into a single zip file and submit it to JOJ.

請加QQ:99515681  郵箱:99515681@qq.com   WX:codinghelp




 

掃一掃在手機打開當前頁
  • 上一篇:代做CS-107、java程序語言代寫
  • 下一篇:CE235編程代寫、代做python程序設計
  • 無相關信息
    合肥生活資訊

    合肥圖文信息
    流體仿真外包多少錢_專業CFD分析代做_友商科技CAE仿真
    流體仿真外包多少錢_專業CFD分析代做_友商科
    CAE仿真分析代做公司 CFD流體仿真服務 管路流場仿真外包
    CAE仿真分析代做公司 CFD流體仿真服務 管路
    流體CFD仿真分析_代做咨詢服務_Fluent 仿真技術服務
    流體CFD仿真分析_代做咨詢服務_Fluent 仿真
    結構仿真分析服務_CAE代做咨詢外包_剛強度疲勞振動
    結構仿真分析服務_CAE代做咨詢外包_剛強度疲
    流體cfd仿真分析服務 7類仿真分析代做服務40個行業
    流體cfd仿真分析服務 7類仿真分析代做服務4
    超全面的拼多多電商運營技巧,多多開團助手,多多出評軟件徽y1698861
    超全面的拼多多電商運營技巧,多多開團助手
    CAE有限元仿真分析團隊,2026仿真代做咨詢服務平臺
    CAE有限元仿真分析團隊,2026仿真代做咨詢服
    釘釘簽到打卡位置修改神器,2026怎么修改定位在范圍內
    釘釘簽到打卡位置修改神器,2026怎么修改定
  • 短信驗證碼 寵物飼養 十大衛浴品牌排行 suno 豆包網頁版入口 wps 目錄網 排行網

    關于我們 | 打賞支持 | 廣告服務 | 聯系我們 | 網站地圖 | 免責聲明 | 幫助中心 | 友情鏈接 |

    Copyright © 2025 hfw.cc Inc. All Rights Reserved. 合肥網 版權所有
    ICP備06013414號-3 公安備 42010502001045

    国产人妻人伦精品_欧美一区二区三区图_亚洲欧洲久久_日韩美女av在线免费观看
    精品国产一区二区三区麻豆免费观看完整版 | 久久久久久久久久久视频| 日韩一区二区av| 日韩在线观看a| 99中文字幕在线观看| 欧美久久久精品| 欧美专区在线观看| 欧美亚洲一级片| 91国产精品91| 亚洲成人午夜在线| 77777亚洲午夜久久多人| 亚洲国产精品久久久久婷蜜芽| 国产精品自拍小视频| 久久伊人91精品综合网站| 欧美激情亚洲天堂| 国产精品久久久久久超碰| 欧美日本韩国在线| 国产精品旅馆在线| 国产又粗又爽又黄的视频| 国产精品久久久久不卡| 国模杨依粉嫩蝴蝶150p| 国产精品欧美一区二区| 黄色片网址在线观看| 俺去亚洲欧洲欧美日韩| 日韩欧美亚洲天堂| 国产福利一区视频| 日韩免费高清在线| 日韩亚洲精品视频| 欧美精品一区二区三区免费播放 | 青草青草久热精品视频在线观看| 久久久影院一区二区三区| 日本一区高清在线视频| 日韩视频免费在线| 黄色免费视频大全| 久久综合久中文字幕青草| 国产素人在线观看| 欧美激情精品久久久久| av在线免费观看国产| 午夜美女久久久久爽久久| 国产suv精品一区二区三区88区| 日本久久91av| 国产精品视频公开费视频| 国产一区二区在线网站| 一本色道久久99精品综合 | 91精品国产色综合久久不卡98| 日韩中文字幕一区二区| 日韩中文字幕久久| 国产欧美欧洲| 日韩在线观看a| www国产91| 国产原创欧美精品| 亚洲va欧美va在线观看| 久久久久久久香蕉| 裸模一区二区三区免费| 一区二区精品国产| 久久99久久久久久| 国产一级大片免费看| 亚洲精品乱码视频| 国产精品久久久久久久久久99| 99视频国产精品免费观看| 欧美在线影院在线视频| 一本久道久久综合| 国产精品私拍pans大尺度在线| av免费观看网| 日本高清视频精品| 日韩一区不卡| 欧美精品在线看| 97精品视频在线| 日产日韩在线亚洲欧美| 国产精品美女久久久久av超清| 99久久自偷自偷国产精品不卡 | 成人伊人精品色xxxx视频| 日本精品一区二区三区视频| 国产精品高潮呻吟久久av野狼| 99精品欧美一区二区三区| 欧美性猛交久久久乱大交小说| 在线观看亚洲视频啊啊啊啊| 九九久久99| 国产精品自产拍在线观看中文| 日本精品视频在线观看| 最新中文字幕久久| 久久精彩免费视频| 国产精品99久久久久久久| 国产综合在线视频| 日韩美女免费视频| 亚洲欧美一区二区原创| 国产精品嫩草视频| 国产成人a亚洲精品| 高清国产一区| 国产在线视频在线| 欧美影院久久久| 日韩av一级大片| 久久久久国产精品免费| 久久天天躁狠狠躁夜夜爽蜜月| 久久亚洲综合网| 不卡视频一区二区| 国产人妖伪娘一区91| 韩国精品一区二区三区六区色诱| 日本一区二区三区视频在线观看| 在线丝袜欧美日韩制服| 欧美大胆在线视频| 久久在线免费观看视频| 国产精品国产亚洲精品看不卡| 精品国产视频在线| 久久www免费人成精品| 国产精品69久久久| 91久久夜色精品国产网站| 国产欧美一区二区白浆黑人 | 精品日产一区2区三区黄免费 | 中文字幕日本最新乱码视频| 久久综合色88| 不卡av在线网站| 欧美成人中文字幕| 精品成在人线av无码免费看| 精品成在人线av无码免费看| 久久91亚洲精品中文字幕奶水| 久久躁狠狠躁夜夜爽| 久久国产精品久久久久久| 国产精品黄色av| 欧美大胆在线视频| 欧美激情一二三| 亚洲一区二区在线看| 亚洲在线视频一区二区| 亚洲高清在线观看一区| 色一情一乱一伦一区二区三区丨| 懂色av粉嫩av蜜臀av| 日本最新高清不卡中文字幕| 日韩不卡一二区| 欧美日韩一区二区视频在线观看 | 中文字幕综合在线观看| 中文字幕中文字幕在线中心一区| 久久97久久97精品免视看| 欧美情侣性视频| 一区二区免费在线观看| 五码日韩精品一区二区三区视频 | 九九久久国产精品| 亚洲综合第一页| 色播五月综合| 欧美久久在线| 精品一区二区国产| 国产精品亚洲综合天堂夜夜| 99在线高清视频在线播放| 久久天堂国产精品| 精品国产一区二区三区久久久狼| 久久久97精品| 久久国产天堂福利天堂| 亚洲精品无人区| 日韩网站在线免费观看| 激情小说网站亚洲综合网| 国产免费一区二区三区视频| 91久久精品久久国产性色也91| 久久波多野结衣| 国产精品乱码视频| 亚洲一区二区在| 欧美一区二区在线| 国产一区二区色| 白嫩少妇丰满一区二区| 国产激情片在线观看| 国产精品久久久久久久久久久久午夜片| 欧美理论片在线观看| 亚洲午夜精品久久久久久人妖| 日本视频一区二区在线观看| 精品免费一区二区三区蜜桃| 高清不卡日本v二区在线| 国产av熟女一区二区三区| 国产精品久久久av| 午夜精品免费视频| 精品日本一区二区| 97久久精品人人澡人人爽缅北| 日韩在线中文字| 欧美激情久久久久| 日本高清视频免费在线观看| 国产欧美最新羞羞视频在线观看| 国产黄色激情视频| 欧美日韩成人精品| 欧洲精品码一区二区三区免费看| 国产裸体免费无遮挡| 日韩专区在线播放| 亚洲a∨日韩av高清在线观看| 欧美日韩大片一区二区三区| 超碰国产精品久久国产精品99| 国产成人免费电影| 亚洲精品在线免费| 精品一区二区成人免费视频| 国产a级一级片| 亚洲一区三区在线观看| 欧美视频在线播放一区| 91国语精品自产拍在线观看性色| 国产精品久久久久久久久久99| 欧美一区二区.| 国产亚洲欧美另类一区二区三区| 久久www免费人成精品| 一区二区不卡在线| 免费看污污视频| 色狠狠av一区二区三区香蕉蜜桃| 欧美巨猛xxxx猛交黑人97人| 欧美日韩一区二区三区免费| 久久久av水蜜桃| 亚洲自拍小视频| 国产情侣av自拍|