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

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

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

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



CSCI1540 Fundamental Computing Using C++, Fall 2023/24
Department of Computer Science and Engineering, The Chinese University of Hong Kong
Copyright © 2023 CSE, CUHK Page 1 of 7
Assignment 6: Rush Hour
Due: 23:59, Sat 9 Dec 2023 File names: RushHour.cpp
playgame.cpp
Full marks: 100
Introduction
The objective of this assignment is to practice object-oriented programming. You will write a class
and a client program to play a sliding block puzzle game called Rush Houra
.
The game is played on a grid of size 8 × 8 with at most 10 cars on it. The cars are aligned either
vertically or horizontally in the grid and occupy two or three tiles. There is an exit hole on the right
side of the grid. The goal of the puzzle is to move the cars forward or backward (but not change
direction) so that a designated car (called Car 0) moves to the exit hole. Figure 1(a) shows an
example puzzle configuration, in which Cars 0, 1, 6, and 7 are horizontal and can move left or right,
and Cars 2, 3, 4, and 5 are vertical and can move up or down. Moving Car 1 to the right by one tile
yields the state in Figure 1(b). Continuing to move the cars carefully, you can yield the solved state as
in Figure 1(c) where Car 0 reaches the exit hole on the right.
########
#11...2#
#3..4.2#
#3004.2.
#3..4..#
#5...66#
#5.777.#
########

########
#.11..2#
#3..4.2#
#3004.2.
#3..4..#
#5...66#
#5.777.#
########
→ … →
########
#311...#
#3.....#
#3....00
#5..4.2#
#5664.2#
#7774.2#
########
(a) Initial (b) Move Car 1 (c) Solved
Figure 1: An Example Rush Hour Configuration and its Solved State
Program Specification
You shall write your program in two source files RushHour.cpp and playgame.cpp. The former is
the implementation of the class RushHour, while the latter is a client program of class RushHour
which performs the program flow. You are recommended to finish the RushHour class first before
writing the client program. When you write the RushHour class, implement the member functions
and test them individually one by one. Your two files will be graded separately, so you should not mix
the functionalities of the two files.
Class RushHour (RushHour.cpp)
You are given the interface of the RushHour class in the header file RushHour.h. You shall not
modify the contents of this header file. Descriptions of the class are given below.
a You may play Rush Hour online at: https://www.mahjongfun.com/rush-hour/
CSCI1540 Fundamental Computing Using C++, Fall 2023/24
Department of Computer Science and Engineering, The Chinese University of Hong Kong
Copyright © 2023 CSE, CUHK Page 2 of 7
class RushHour {
public:
 RushHour(const string g[]);
 bool locateCar(int car, int &row, int &col);
 int moveCar(int car, int step);
 bool isSolved();
 int getTotalSteps();
 void print();
private:
 string grid[8];
 int totalSteps;
};
Private Data Members
string grid[8];
The Rush Hour puzzle is represented by an array of string. Each element grid[𝑖] stores the
contents in row 𝑖 of the grid. E.g., for the configuration in Figure 1(a), grid[0] is “########”,
grid[1] is “#11...2#”, grid[2] is “#3..4.2#”, etc. All characters in the strings are either ‘#’
(border), ‘.’ (empty), or digits ‘0’–‘9’ (cars). All the strings are of length 8.
int totalSteps;
The total number of steps that a player has moved during puzzle play. Note that moving a car by, say,
two tiles, is counted as two steps.
Public Constructor and Member Functions
RushHour(const string g[]);
This constructor initializes the Rush Hour puzzle using the array parameter g, which contains
contents for row 1 to row 6 of the grid. (That is, g[0] is used to initialize grid[1]; g[1] is used to
initialize grid[2]; …; g[5] is used to initialize grid[6].) Note that row 0 and row 7 are not
needed in the parameter because the two rows always contain only the ‘#’ symbol. You just have to
initialize grid[0] and grid[7] as “########”. E.g., suppose g is {"#11...2#", "#3..4.2#",
"#3004.2.", "#3..4..#", "#5...66#", "#5.777.#"}. Then grid shall be initialized such
that grid[0]…grid[7] become “########”, “#11...2#”, “#3..4.2#”, “#3004.2.”,
“#3..4..#”, “#5...66#”, “#5.777.#”, and “########” respectively (that is, the configuration in
Figure 1(a)).
You can assume that:
➢ Array parameter g is always of size 6;
➢ Each string g[0], …, g[5] is always of length 8, and always contains eight symbols of either ‘#’
(border), ‘.’ (empty), or digits ‘0’–‘9’ (cars);
➢ The strings g[0], …, g[5] always start and end with the border ‘#’. An exception is on g[2] (for
grid[3]), where its last character is always the exit hole (‘.’).
➢ The cars always occupy either two or three tiles, and are always properly aligned vertically or
horizontally.
CSCI1540 Fundamental Computing Using C++, Fall 2023/24
Department of Computer Science and Engineering, The Chinese University of Hong Kong
Copyright © 2023 CSE, CUHK Page 3 of 7
You do not have to handle situations where the parameter g does not conform to these assumptions.
Remember to also initialize the data member totalSteps as 0.
bool locateCar(int car, int &row, int &col);
Finds the position of the parameter car in the puzzle. The position of a vertical car is its topmost tile.
The position of a horizontal car is its leftmost tile. The row and column indices of the found position
are assigned to the reference parameters row and col respectively, and the member function shall
return true. E.g., locating Car 2 in Figure 1(a) shall write 1 to row and 6 to col and return true,
because Car 2 appears at row 1, column 6. In case car cannot be located in the grid (e.g., there is no
Car 8 in Figure 1(a)), the member function shall not update row and col and return false.
int moveCar(int car, int step);
Performs the action of moving the parameter car by step tiles. A positive value for step means
moving down (for vertical car) or right (for horizontal car); a negative value means moving up (for
vertical car) or left (for horizontal car). E.g., in Figure 1(a), moving Car 6 left by three tiles has a step
of -3. A move is valid only if all the followings are satisfied:
➢ The parameter car exists in the grid.
➢ The parameter step is non-zero. (Moving a car by 0 tile is meaningless.)
➢ There is enough space to allow the car to move by step tiles, without hitting other cars or the
border, or going beyond the exit hole. (E.g., in Figure 1(a), Car 6 cannot move left by four tiles (-4
steps), as it would hit Car 5.)
If the move is valid, then data members grid and totalSteps shall be updated accordingly.
Otherwise, no updates to grid and totalSteps are needed. This member function shall return
either 0, 1, or 2, according to the following conditions:
Condition Return value
Move is valid 0
car does not exist in the grid or step is zero 1
Hit other cars or border or go beyond the exit hole 2
Implementation hint: First, find the position of car (with the help of locateCar()). Then
determine which one of the four cases the prospective move is: move left/right/up/down. Implement
the four cases one by one. For each case, check whether the move is valid or not. If valid, update the
car to the new position (by updating the grid contents).
bool isSolved();
Returns true if Car 0 touches the exit hole; returns false otherwise.
int getTotalSteps();
Returns the total number of steps that a player has moved the cars. That is, the value of the data
member totalSteps.
void print();
Prints out the Rush Hour puzzle and the number of steps that the player has used. The following is
an example output of print().
CSCI1540 Fundamental Computing Using C++, Fall 2023/24
Department of Computer Science and Engineering, The Chinese University of Hong Kong
Copyright © 2023 CSE, CUHK Page 4 of 7
########
#311..2#
#3....2#
#300..2.
#5..4..#
#5664..#
#7774..#
########
Steps: 10
Client Program (playgame.cpp)
Your main program is a client of the RushHour class. You create a RushHour object here and call its
member functions to implement the following program flow.
1. The program starts with prompting the user to enter six strings (separated by spaces), which are
the initial grid contents for row 1 to row 6 of the puzzle. Then create a RushHour object using
the user input. You can assume that the six strings follow the same assumptions stated in the
constructor above).
2. Prompt the user to move a car. You can assume that the user always enters two integers,
denoting the car and the steps of the prospective move respectively. (Positive step means
moving down/right; negative step means moving up/left.)
3. In case the input is not a valid move (see definition in the moveCar() member function above),
the program prints a warning message and goes back to Step 2. Otherwise, move the car
accordingly.
Note: there are two kinds of warning messages. When the car does not exist or the step is zero,
the message “Invalid car or step! Try again.” shall be printed. When the move would hit other
cars or border or go beyond the exit hole, the message “Hit! Try again.” shall be printed.
4. If the puzzle is not yet solved after the move and the total number of steps is smaller than 100,
go back to Step 2.
5. Finally, print the puzzle and either the winning message “Congrats! You finished in 𝑋 steps.”
(where 𝑋 is the number of steps used) or the losing message “Oops! You could not solve in 100
steps.”
Some Points to Note
➢ You cannot declare any global variables in all your source files (except const ones).
➢ Remember to #include "RushHour.h" in both RushHour.cpp and playgame.cpp.
➢ You can write extra functions in any source files if necessary. However, extra member functions
(instance methods), no matter private or public, are not allowed.
➢ Your RushHour class shall not contain any cin statements. All user inputs shall be done in the
client program (playgame.cpp) only.
➢ The RushHour class shall not contain any cout statements except in the print() member
function for printing the puzzle.
CSCI1540 Fundamental Computing Using C++, Fall 2023/24
Department of Computer Science and Engineering, The Chinese University of Hong Kong
Copyright © 2023 CSE, CUHK Page 5 of 7
Sample Run
In the following sample run, the blue text is user input and the other text is the program output. You
can try the provided sample program for other input. Your program output should be exactly the
same as the sample program (same text, symbols, letter case, spacings, etc.). Note that there is a
space after the ‘:’ in the program printout. More sample runs and initial grids are available in
Blackboard.
Enter initial grid: #11...2# #3..4.2# #3004.2. #3..4..# #5...66# #5.777.#
########
#11...2#
#3..4.2#
#3004.2.
#3..4..#
#5...66#
#5.777.#
########
Steps: 0
Move a car: 1 4
Hit! Try again.
Move a car: 1 1
########
#.11..2#
#3..4.2#
#3004.2.
#3..4..#
#5...66#
#5.777.#
########
Steps: 1
Move a car: 3 0
Invalid car or step! Try again.
Move a car: 3 -2
Hit! Try again.
Move a car: 8 1
Invalid car or step! Try again.
Move a car: 3 -1
########
#311..2#
#3..4.2#
#3004.2.
#...4..#
#5...66#
#5.777.#
########
Steps: 2
Move a car: 5 -1
CSCI1540 Fundamental Computing Using C++, Fall 2023/24
Department of Computer Science and Engineering, The Chinese University of Hong Kong
Copyright © 2023 CSE, CUHK Page 6 of 7
########
#311..2#
#3..4.2#
#3004.2.
#5..4..#
#5...66#
#..777.#
########
Steps: 3
Move a car: 7 -2
########
#311..2#
#3..4.2#
#3004.2.
#5..4..#
#5...66#
#777...#
########
Steps: 5
Move a car: 6 -3
########
#311..2#
#3..4.2#
#3004.2.
#5..4..#
#566...#
#777...#
########
Steps: 8
Move a car: 4 2
########
#311..2#
#3....2#
#300..2.
#5..4..#
#5664..#
#7774..#
########
Steps: 10
Move a car: 2 3
########
#311...#
#3.....#
#300....
#5..4.2#
#5664.2#
#7774.2#
########
Steps: 13
Move a car: 0 5
Hit! Try again.
Move a car: 0 4
CSCI1540 Fundamental Computing Using C++, Fall 2023/24
Department of Computer Science and Engineering, The Chinese University of Hong Kong
Copyright © 2023 CSE, CUHK Page 7 of 7
########
#311...#
#3.....#
#3....00
#5..4.2#
#5664.2#
#7774.2#
########
Steps: 17
Congrats! You finished in 17 steps.
Submission and Marking
➢ Your program file names should be RushHour.cpp and playgame.cpp. Submit the two files in
Blackboard (https://blackboard.cuhk.edu.hk/). You do not have to submit RushHour.h.
➢ Insert your name, student ID, and e-mail as comments at the beginning of all your files.
➢ Besides the above information, your program should include suitable comments as
documentation in all your files.
➢ You can submit your assignment multiple times. Only the latest submission counts.
➢ Your program should be free of compilation errors and warnings.
➢ Do NOT share your work to others and do NOT plagiarize. Those who shared their work and/or
plagiarized others work shall be penalized.
請加QQ:99515681 或郵箱:99515681@qq.com   WX:codehelp

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

    合肥圖文信息
    流體仿真外包多少錢_專業(yè)CFD分析代做_友商科技CAE仿真
    流體仿真外包多少錢_專業(yè)CFD分析代做_友商科
    CAE仿真分析代做公司 CFD流體仿真服務(wù) 管路流場仿真外包
    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)助手,多多出評軟件徽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號-3 公安備 42010502001045

    国产人妻人伦精品_欧美一区二区三区图_亚洲欧洲久久_日韩美女av在线免费观看
    分分操这里只有精品| 欧美亚洲另类激情另类| 日本a在线免费观看| 国产精品亚洲欧美导航| 国产精品久久久久福利| 欧美一区视久久| 久久男人资源站| 一区高清视频| 国产一区在线观| 国产精品推荐精品| 日韩av中文字幕第一页 | 成人a级免费视频| 精品免费国产一区二区| 欧美亚洲视频在线看网址| 久久久综合香蕉尹人综合网| 亚洲人成网站在线播放2019| 成人免费福利在线| 欧美日本黄视频| 成人免费观看a| 亚洲国产精品日韩| av 日韩 人妻 黑人 综合 无码| 精品国产免费一区二区三区| 国产一区二区视频免费在线观看| 久久这里有精品视频| 国产日本欧美视频| 欧美大肥婆大肥bbbbb| 国内免费久久久久久久久久久| 国产精品久久久久久亚洲调教| 欧美精品免费观看二区| 久久精品视频播放| 美日韩精品免费| 久久成人综合视频| 国产精品夜夜夜一区二区三区尤| 久久久久久69| 91精品国产乱码久久久久久久久| 亚洲人成无码www久久久| 久久久免费观看| 日韩精品一区二区三区四| 国产成人久久777777| 国产在线精品日韩| 亚洲欧美日韩在线综合| 国产suv精品一区二区| 热久久这里只有精品| 久久精品最新地址| 国产日韩欧美一区二区| 亚洲在线视频一区二区| 国产高清一区二区三区| 欧美在线视频免费| 久久夜色撩人精品| 97久久精品人人澡人人爽缅北| 午夜精品美女自拍福到在线 | 久久综合色一本| 日韩国产高清一区| 久久精品视频网站| 成人免费网视频| 日韩啊v在线| 久久精品中文字幕一区| 国产伦精品一区二区三区四区视频 | 久久久久无码国产精品一区| 加勒比成人在线| 欧美成人免费一级人片100| 成人国产一区二区| 日本精品一区二区三区在线播放视频| 国产精品麻豆免费版| 99视频在线免费| 日韩免费在线播放| 国产精品美女www爽爽爽视频| 91精品久久久久久久久| 欧美久久久久久一卡四| 亚洲午夜高清视频| 色噜噜久久综合伊人一本| 国产日韩欧美一区二区| 日本不卡视频在线播放| 欧美片一区二区三区| www.日韩欧美| www.日日操| 欧美日韩dvd| 亚洲综合视频一区| 国产精品入口免费视| 91精品视频在线免费观看| 男人天堂新网址| 日韩中文字幕一区| 精品综合久久久久久97| 国产成人无码一二三区视频| 91久久国产自产拍夜夜嗨 | 国产区日韩欧美| 日韩欧美三级一区二区| 亚洲综合自拍一区| 久久久99久久精品女同性| 久久久天堂国产精品| 国产日韩视频在线观看| 欧美一区二区影视| 午夜精品久久久久久久99热| 久久五月天色综合| 色琪琪综合男人的天堂aⅴ视频| 99在线免费视频观看| 国模无码视频一区二区三区| 日韩精品综合在线| 都市激情久久久久久久久久久| 国产精品区一区| 久艹视频在线免费观看| 91精品久久香蕉国产线看观看| 国产一区玩具在线观看| 欧美日韩国产三区| 色一情一乱一伦一区二区三区丨| 一区二区三区四区欧美| 久久亚洲成人精品| 国产精品视频中文字幕91| 九九久久99| 国产激情在线观看视频| 91福利视频导航| av免费观看网| 国产乱码精品一区二区三区卡| 毛葺葺老太做受视频| 国模私拍视频一区| 裸模一区二区三区免费| 欧美日本韩国在线| 人人妻人人做人人爽| 日韩欧美精品在线观看视频| 亚洲丰满在线| 亚洲欧洲免费无码| 亚洲a级在线播放观看| 亚洲激情一区二区三区| 亚洲色成人一区二区三区小说| 欧美精品激情在线| 亚洲一卡二卡三卡| 亚洲欧美丝袜| 日韩av免费在线| 日韩手机在线观看视频| 日韩欧美亚洲日产国产| 欧美亚洲国产另类| 精品嫩模一区二区三区| 黄色一级二级三级| 国产女同一区二区| 国产伦精品一区二区三区免费视频| 国产伦精品一区二区三区在线| 高清一区二区三区四区五区 | 久久成年人视频| 中文字幕乱码人妻综合二区三区| 亚洲熟妇av一区二区三区| 天天久久人人| 热re99久久精品国产66热| 欧美激情 国产精品| 国产偷久久久精品专区| 国产伦精品一区二区三| 97精品国产97久久久久久春色| 7777精品视频| 国产不卡视频在线| 国产成人精品一区二区在线| 久久精品一区中文字幕| 欧美精品在线观看91| 亚洲一区久久久| 日本一级黄视频| 免费在线观看日韩视频| 国产又黄又大又粗视频| 高清欧美性猛交| 九九九热999| 国产精品电影久久久久电影网| 一区二区视频国产| 五月天综合婷婷| 欧美韩国日本精品一区二区三区| 国产伦一区二区三区色一情| 91精品国产高清自在线| 精品国产一区二区三区久久| 欧美激情极品视频| 午夜精品久久久久久久99热| 激情图片qvod| 91精品国产乱码久久久久久久久 | 性一交一乱一伧国产女士spa| 青青草视频在线视频| 精品一卡二卡三卡四卡日本乱码| 99久久自偷自偷国产精品不卡| 色婷婷成人综合| 欧美激情亚洲自拍| 日本最新高清不卡中文字幕| 久久亚洲国产成人精品无码区| 大地资源第二页在线观看高清版| 亚洲一区二区三区视频播放| 奇米四色中文综合久久| 免费日韩中文字幕| 久久久之久亚州精品露出| 国产精品日韩高清| 亚洲欧洲精品在线| 欧美日韩一区二区三区免费| 国产美女作爱全过程免费视频| 91av一区二区三区| 久久躁日日躁aaaaxxxx| 日产精品高清视频免费| 国产美女久久精品香蕉69| 久久波多野结衣| 一区二区三区久久网| 欧洲日本亚洲国产区| 91精品国产综合久久男男| 免费99精品国产自在在线| 欧美在线视频网站| 国产不卡视频在线| 亚洲免费不卡| 国产精品一区二区久久精品| 国产精品久久久久影院日本| 日本不卡在线观看|