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

合肥生活安徽新聞合肥交通合肥房產(chǎn)生活服務(wù)合肥教育合肥招聘合肥旅游文化藝術(shù)合肥美食合肥地圖合肥社保合肥醫(yī)院企業(yè)服務(wù)合肥法律

代寫ENGR1010J、代做C/C++設(shè)計(jì)編程
代寫ENGR1010J、代做C/C++設(shè)計(jì)編程

時(shí)間:2024-12-11  來源:合肥網(wǎng)hfw.cc  作者:hfw.cc 我要糾錯(cuò)



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.

請(qǐng)加QQ:99515681  郵箱:99515681@qq.com   WX:codinghelp




 

掃一掃在手機(jī)打開當(dāng)前頁
  • 上一篇:代做CS-107、java程序語言代寫
  • 下一篇:CE235編程代寫、代做python程序設(shè)計(jì)
  • 無相關(guān)信息
    合肥生活資訊

    合肥圖文信息
    流體仿真外包多少錢_專業(yè)CFD分析代做_友商科技CAE仿真
    流體仿真外包多少錢_專業(yè)CFD分析代做_友商科
    CAE仿真分析代做公司 CFD流體仿真服務(wù) 管路流場(chǎng)仿真外包
    CAE仿真分析代做公司 CFD流體仿真服務(wù) 管路
    流體CFD仿真分析_代做咨詢服務(wù)_Fluent 仿真技術(shù)服務(wù)
    流體CFD仿真分析_代做咨詢服務(wù)_Fluent 仿真
    結(jié)構(gòu)仿真分析服務(wù)_CAE代做咨詢外包_剛強(qiáng)度疲勞振動(dòng)
    結(jié)構(gòu)仿真分析服務(wù)_CAE代做咨詢外包_剛強(qiáng)度疲
    流體cfd仿真分析服務(wù) 7類仿真分析代做服務(wù)40個(gè)行業(yè)
    流體cfd仿真分析服務(wù) 7類仿真分析代做服務(wù)4
    超全面的拼多多電商運(yùn)營技巧,多多開團(tuán)助手,多多出評(píng)軟件徽y1698861
    超全面的拼多多電商運(yùn)營技巧,多多開團(tuán)助手
    CAE有限元仿真分析團(tuán)隊(duì),2026仿真代做咨詢服務(wù)平臺(tái)
    CAE有限元仿真分析團(tuán)隊(duì),2026仿真代做咨詢服
    釘釘簽到打卡位置修改神器,2026怎么修改定位在范圍內(nèi)
    釘釘簽到打卡位置修改神器,2026怎么修改定
  • 短信驗(yàn)證碼 豆包網(wǎng)頁版入口 破天一劍 目錄網(wǎng) 排行網(wǎng)

    關(guān)于我們 | 打賞支持 | 廣告服務(wù) | 聯(lián)系我們 | 網(wǎng)站地圖 | 免責(zé)聲明 | 幫助中心 | 友情鏈接 |

    Copyright © 2025 hfw.cc Inc. All Rights Reserved. 合肥網(wǎng) 版權(quán)所有
    ICP備06013414號(hào)-3 公安備 42010502001045

    国产人妻人伦精品_欧美一区二区三区图_亚洲欧洲久久_日韩美女av在线免费观看
    久久久精品欧美| 精品中文字幕乱| 久久国产天堂福利天堂| 人人妻人人做人人爽| 国产精品av在线播放 | 国产一区二区三区乱码| 色777狠狠综合秋免鲁丝| 亚洲91精品在线观看| 不卡日韩av| 一区二区不卡在线视频 午夜欧美不卡' | 亚洲乱码一区二区三区三上悠亚 | 国产精品免费一区二区三区观看| 欧美在线激情网| 日韩在线中文字| 日韩精品一区二区三区不卡| 国产成人综合av| 日韩av一区二区三区在线| 国产精品69久久| 日产精品久久久一区二区| 久久国产欧美精品| 日韩不卡一二区| 日韩在线激情视频| 欧洲午夜精品久久久| 国产成人精品日本亚洲专区61| 亚洲 高清 成人 动漫| 91精品天堂| 日本一区二区三区视频在线播放 | 欧美亚洲第一区| 国产精品视频一区二区三区四区五区 | 日韩中文在线不卡| 欧美日韩另类丝袜其他| 国产成人精品综合| 欧美亚洲成人网| 久热精品在线视频| 国产精品永久免费在线| 亚洲国产一区二区三区在线播| 国产精品99久久久久久大便| 日本一区二区在线视频| 久久九九亚洲综合| 麻豆一区区三区四区产品精品蜜桃| 久久精品99国产精品酒店日本| 欧美视频小说| 国产精品国产精品国产专区不卡 | 日日骚一区二区网站| 日韩中文一区| 日韩精品一区二区三区色欲av| 午夜精品视频网站| 精品中文字幕在线| 狠狠色综合网站久久久久久久| 国产精品久久中文| 成人www视频在线观看| 亚洲精品日韩精品| 丝袜一区二区三区| 欧美中文字幕在线观看| 久久成人精品视频| 91久久国产婷婷一区二区| 日本高清不卡三区| 久久成年人视频| 久久久99精品视频| 免费看欧美一级片| 五码日韩精品一区二区三区视频| 日韩中文字幕视频在线| 国产区亚洲区欧美区| 成人做爰www免费看视频网站| 日韩在线小视频| 国产精品一区=区| 日本成人中文字幕在线| 国产精品对白刺激久久久| 成人免费福利在线| 日韩精品 欧美| 色在人av网站天堂精品| 久久国产亚洲精品无码| 免费看欧美一级片| 欧美一区1区三区3区公司| 国产精品久久久久久久久| 99久久久精品免费观看国产| 欧美在线不卡区| 亚洲欧美精品| 国产精品美女主播在线观看纯欲 | 国产伦精品一区二区三区照片91| 日韩一区不卡| 久久亚洲电影天堂| 九一免费在线观看| 成人av免费在线看| 欧美 国产 综合| 日本亚洲欧美三级| 色综合久久久久久中文网| 久久久精品网站| 久热国产精品视频一区二区三区| 国产一区二区丝袜| 日韩精品福利视频| 亚洲人成77777| 欧美精品在线看| 国产精品无码专区在线观看| 国产精品96久久久久久又黄又硬| 国内伊人久久久久久网站视频| 午夜精品一区二区三区视频免费看| 国产精品欧美激情在线播放| 国产成人艳妇aa视频在线| 国产免费一区视频观看免费| 欧美一二三区| 欧美一级视频免费看| 欧美激情亚洲国产| 国产精品国模在线| 久久精品国产v日韩v亚洲| 国产高清在线一区| 久久久亚洲综合网站| 97碰碰碰免费色视频| 国产精品自拍偷拍| 国产日韩精品入口| 欧美日韩精品在线一区二区 | 国产精品你懂得| 国产成人女人毛片视频在线| 91国在线高清视频| 成人久久久久久久| 国产欧美日韩一区二区三区| 国产午夜福利在线播放| 激情五月五月婷婷| 加勒比成人在线| 黄色特一级视频| 黄瓜视频免费观看在线观看www| 欧美综合在线播放| 色爱区成人综合网| 午夜精品一区二区三区在线播放 | 亚洲综合成人婷婷小说| 一区二区在线高清视频| 久久久久久国产| 一本一生久久a久久精品综合蜜| 欧美精品激情在线观看| 欧美精品videofree1080p| 精品自拍视频在线观看| 欧美成人精品在线| 麻豆乱码国产一区二区三区 | 在线视频精品一区| 亚洲一区中文字幕在线观看| 亚洲精品久久区二区三区蜜桃臀 | www.久久草| 91国在线高清视频| 国产成人亚洲综合青青| 色婷婷av一区二区三区在线观看 | 99在线观看视频网站| 91精品国产91久久久久青草| 久久婷婷五月综合色国产香蕉| 国产成人精品免高潮费视频 | av观看久久| 久久精品在线免费视频| 少妇精69xxtheporn| 久久久国产精品一区| 国产精品久久久一区| 欧美日韩不卡合集视频| 亚洲v国产v在线观看| 日韩人妻精品无码一区二区三区| 欧美日韩国产一二| 国产女人精品视频| 久久亚洲综合网| 精品国产拍在线观看| 久久成年人视频| 亚洲精品成人三区| 热99久久精品| 国产男女免费视频| 久久久久久艹| 国产精品久久久久久久乖乖 | 国产一区二区视频播放| 91福利视频导航| 俺也去精品视频在线观看| 久久91精品国产91久久跳| 午夜肉伦伦影院| 激情视频一区二区| 99爱精品视频| 国产精品视频免费一区二区三区 | 国产精品无码专区av在线播放 | 亚洲a区在线视频| 日韩一二区视频| 国产一区免费| 久久九九视频| 精品自在线视频| 日韩亚洲欧美视频| 国产欧美日韩中文| 久久久久久久久久久久av| 精品国产乱码久久久久久丨区2区| 色狠狠久久av五月综合|| 国内精品久久国产| 国产高清免费在线| 精品蜜桃一区二区三区| 日本高清视频免费在线观看| 国产日韩欧美成人| y97精品国产97久久久久久| 欧美日韩国产成人| 欧美乱偷一区二区三区在线| 91精品视频大全| 久久香蕉国产线看观看av| 日韩啊v在线| 成人精品网站在线观看| 国产精品精品视频一区二区三区| 日韩在线视频在线| 成人免费无码av| 国产精品二区在线观看| 秋霞成人午夜鲁丝一区二区三区| av免费网站观看| 欧美精品久久久久久久久久|