99爱在线视频这里只有精品_窝窝午夜看片成人精品_日韩精品久久久毛片一区二区_亚洲一区二区久久

合肥生活安徽新聞合肥交通合肥房產(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.
請(qǐng)加QQ:99515681 或郵箱:99515681@qq.com   WX:codehelp

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

    合肥圖文信息
    急尋熱仿真分析?代做熱仿真服務(wù)+熱設(shè)計(jì)優(yōu)化
    急尋熱仿真分析?代做熱仿真服務(wù)+熱設(shè)計(jì)優(yōu)化
    出評(píng) 開團(tuán)工具
    出評(píng) 開團(tuán)工具
    挖掘機(jī)濾芯提升發(fā)動(dòng)機(jī)性能
    挖掘機(jī)濾芯提升發(fā)動(dòng)機(jī)性能
    海信羅馬假日洗衣機(jī)亮相AWE  復(fù)古美學(xué)與現(xiàn)代科技完美結(jié)合
    海信羅馬假日洗衣機(jī)亮相AWE 復(fù)古美學(xué)與現(xiàn)代
    合肥機(jī)場(chǎng)巴士4號(hào)線
    合肥機(jī)場(chǎng)巴士4號(hào)線
    合肥機(jī)場(chǎng)巴士3號(hào)線
    合肥機(jī)場(chǎng)巴士3號(hào)線
    合肥機(jī)場(chǎng)巴士2號(hào)線
    合肥機(jī)場(chǎng)巴士2號(hào)線
    合肥機(jī)場(chǎng)巴士1號(hào)線
    合肥機(jī)場(chǎng)巴士1號(hào)線
  • 短信驗(yàn)證碼 豆包 幣安下載 AI生圖 目錄網(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

    99爱在线视频这里只有精品_窝窝午夜看片成人精品_日韩精品久久久毛片一区二区_亚洲一区二区久久

          9000px;">

                国产女同互慰高潮91漫画| 久久人人超碰精品| 久久综合久久久久88| 久久精品国产亚洲高清剧情介绍 | 色94色欧美sute亚洲线路一ni | 91精品国产手机| 久久99国产精品久久| 中文字幕精品三区| 欧美日韩精品一区二区在线播放| 久久国产剧场电影| 亚洲精品乱码久久久久久久久 | 亚洲精品欧美专区| 岛国av在线一区| 99视频一区二区| 欧美一级一区二区| 国产精品午夜免费| 国产精品看片你懂得| 136国产福利精品导航| 亚洲第一精品在线| 色av成人天堂桃色av| 成人av电影在线播放| 国产精品视频一二三| 欧美日韩久久一区二区| 韩国成人福利片在线播放| 国产精品久久久久久久久动漫| 欧美怡红院视频| 成人伦理片在线| 久久精品国产亚洲aⅴ| 亚洲一区二区在线观看视频| 欧美激情在线看| 欧美一区二区成人| 欧美色综合天天久久综合精品| 国产高清精品在线| 欧美激情一区二区三区不卡| 欧美一区二区三区视频免费播放 | 日韩精品一区二区三区老鸭窝| 99re免费视频精品全部| 国产福利91精品一区二区三区| 青青草原综合久久大伊人精品优势| 一区二区三区 在线观看视频| 亚洲国产婷婷综合在线精品| 久久久国产精品麻豆| 欧美撒尿777hd撒尿| 亚洲v日本v欧美v久久精品| 欧美日韩黄视频| 成人手机在线视频| 亚洲另类春色校园小说| 91麻豆精品国产91久久久使用方法| 天堂资源在线中文精品| 成人欧美一区二区三区白人| 亚洲欧美日韩国产成人精品影院| 久久亚区不卡日本| 国产亚洲污的网站| 国产目拍亚洲精品99久久精品 | 国产suv精品一区二区6| 蜜臀av一级做a爰片久久| 久久综合色8888| 91精品一区二区三区久久久久久| 国产精品一区二区无线| 亚洲欧美日韩国产综合在线| 久久蜜臀精品av| 色婷婷国产精品综合在线观看| 韩国视频一区二区| 国产在线一区二区| av高清不卡在线| 欧美手机在线视频| 色综合天天综合网天天看片| 成人网在线播放| 在线观看一区日韩| 91网上在线视频| 日韩一区二区在线看| 欧美久久高跟鞋激| 高潮精品一区videoshd| 亚洲欧美综合色| 国产精品二三区| 欧美日韩视频在线一区二区| 日韩精品一区二区三区视频播放 | 26uuu亚洲婷婷狠狠天堂| 精品国产91久久久久久久妲己| 国产色产综合色产在线视频| 一区二区三区在线视频免费| 久久se精品一区精品二区| 岛国一区二区在线观看| 欧美日韩一区不卡| 国产亚洲成av人在线观看导航| 一区二区日韩电影| 国产成人自拍高清视频在线免费播放| 色噜噜狠狠成人中文综合| 亚洲精品在线网站| 亚洲一区二区三区在线| 国产麻豆精品在线| 欧美日韩一区在线| 国产精品久久久久久久久动漫| 日韩在线一区二区| 色吊一区二区三区| 国产女主播视频一区二区| 日韩一区欧美二区| 欧美性生交片4| 亚洲乱码国产乱码精品精小说| 精品一区二区三区在线观看国产| 在线欧美日韩国产| 国产精品美女久久福利网站| 国产综合色视频| 日韩欧美在线观看一区二区三区| 一级特黄大欧美久久久| 99精品偷自拍| 中文乱码免费一区二区| 国产一区高清在线| 51精品视频一区二区三区| 成人欧美一区二区三区白人 | 欧美伦理电影网| 亚洲男人天堂一区| av亚洲精华国产精华| 精品久久久久久久人人人人传媒 | 欧美色图12p| 一区二区三区四区视频精品免费| 国产成人aaaa| 国产精品丝袜黑色高跟| 成人午夜看片网址| 国产精品免费观看视频| 成人永久aaa| 中文字幕亚洲欧美在线不卡| 蜜臂av日日欢夜夜爽一区| 亚洲成人免费在线| 亚洲欧洲性图库| 26uuu国产电影一区二区| 成人黄动漫网站免费app| 日本不卡一二三区黄网| 亚洲色欲色欲www在线观看| 日韩欧美一区在线观看| 欧美一区二区在线视频| 色哟哟一区二区在线观看| 国产尤物一区二区在线| 国产成人午夜99999| 91官网在线观看| 亚洲自拍都市欧美小说| 91黄色免费版| 日本亚洲三级在线| 26uuuu精品一区二区| www.99精品| 亚洲国产精品久久久久秋霞影院| 色狠狠综合天天综合综合| 日韩av一二三| 国产人成亚洲第一网站在线播放| 91首页免费视频| 久久精品二区亚洲w码| 国产色产综合色产在线视频| 色成人在线视频| 蜜臀av性久久久久蜜臀av麻豆| 精品国产免费久久| 91原创在线视频| 麻豆国产欧美一区二区三区| 国产精品日日摸夜夜摸av| 欧美日韩性生活| 国产成人av电影在线| 丝袜脚交一区二区| 国产精品久久久久久一区二区三区| 欧洲一区在线电影| 丁香啪啪综合成人亚洲小说| 亚洲成av人片在线观看无码| 国产亚洲精品bt天堂精选| 欧美三级电影一区| 97久久人人超碰| 精品一区二区三区在线播放视频| 亚洲欧美日韩电影| 2023国产精品| 欧美精品久久99久久在免费线| 盗摄精品av一区二区三区| 日产国产高清一区二区三区| 亚洲视频一区二区免费在线观看| 日韩美一区二区三区| 91论坛在线播放| 国产91色综合久久免费分享| 蜜臀av性久久久久av蜜臀妖精| 一区二区三区高清在线| 欧美韩国一区二区| 2020国产精品自拍| 欧美一级国产精品| 欧美日韩免费高清一区色橹橹| 成人少妇影院yyyy| 黄一区二区三区| 免费成人深夜小野草| 亚洲成人777| 天天综合网 天天综合色| 亚洲成a人片在线观看中文| 自拍av一区二区三区| 中文字幕欧美区| 欧美韩国日本一区| 中文字幕不卡在线观看| 亚洲国产成人私人影院tom| 国产香蕉久久精品综合网| 久久精品在这里| 国产日产欧美精品一区二区三区| 久久久久久一级片| 国产欧美一区视频| 国产精品免费久久| 亚洲欧美偷拍三级| 午夜精品久久久久久久久久久 | 亚洲精品久久久蜜桃| 中文字幕在线不卡一区二区三区|