修改完难度之后,当游戏结束按r重新开始的时候,选择好难度之后,按s程序无响应,给出修改的代码,使得程序每次重新运行都能正确选择难度
时间: 2024-10-17 20:14:03 浏览: 16
为了确保在游戏结束后重新选择难度并正常启动游戏,我们需要对 `draw_end` 函数进行一些修改。具体来说,需要确保在重新开始游戏时,能够正确处理用户的输入并重新初始化游戏。
以下是修改后的 `draw_end` 函数:
```c
void draw_end() {
cleardevice();
setbkcolor(EGERGB(116, 222, 222));
char str[4][30] = {{"Game Over"}, {"Score:"}, {NULL}, {"Press R to restart"}};
sprintf(str[1], "Score: %d", score);
setfont(40, 0, "楷体");
for (int i = 0; i < 4; i++) {
outtextxy(Height / 2 * Interval - 70, Width / 2 * Interval + 50 * i, str[i]);
}
key_msg msg;
bool flag = true;
while (flag) {
if (kbhit()) {
msg = getkey();
if (msg.key == 'r' || msg.key == 'R') {
flag = false;
game_over = false; // 游戏不再处于结束状态
closegraph(); // 关闭当前图形窗口
initgraph(Interval * Width, Interval * Height); // 重新打开图形窗口
int selected_mode = choose(); // 等待用户选择是否开始游戏
if (selected_mode != -1) {
init_game(selected_mode); // 重新初始化游戏
begin_game(selected_mode); // 如果用户选择开始游戏,则开始游戏
}
} else if (msg.key == key_esc && msg.msg == key_msg_down) {
flag = false;
}
}
}
}
```
### 修改说明:
1. **关闭和重新打开图形窗口**:在重新开始游戏时,先关闭当前的图形窗口,然后重新打开一个新的图形窗口。
2. **重新选择难度**:调用 `choose()` 函数让用户重新选择难度。
3. **重新初始化游戏**:如果用户选择了有效的难度(即 `selected_mode != -1`),则调用 `init_game(selected_mode)` 和 `begin_game(selected_mode)` 重新初始化并开始游戏。
这样可以确保每次重新开始游戏时,用户都能够正确选择难度,并且游戏能够正常运行。
阅读全文