未修改draw_end函数,其中有调用已经修改的init_game函数但没有传递参数,导致无法正常运行 请修改
时间: 2024-10-17 12:14:08 浏览: 19
matlab符号运算技巧.zip_draw_matlab_matlab mark_matlab 画图技巧_matlab函数 画图
在 `draw_end` 函数中,确实存在一个调用 `init_game` 但是没有给它传递必要的参数的问题。为了修复这个问题并保证程序能够正确地运行,我们需要确保当玩家决定重新开始游戏时,`init_game` 获得正确的游戏难度级别。我们可以在存储所选模式的变量 `mode` 在 `choose` 函数外定义,并将其作为 `begin_game` 和间接地 `init_game` 的参数使用。
以下是修改后的 `draw_end` 函数部分代码示例:
```c
void draw_end() {
cleardevice();
setbkcolor(EGERGB(116, 206, 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) {
while (kbmsg) {
msg = getkey();
if (msg.key == 'r' || msg.key == 'R') {
flag = false;
game_over = false; // 游戏不再处于结束状态
closegraph(); // 关闭当前图形窗口
initgraph(Interval * Width, Interval * Height); // 重新打开图形窗口
draw_welcome();
int ret = choose(); // 等待用户选择是否开始游戏
if (ret != 0) { // 用户选择了有效的游戏模式
mode = ret; // 更新全局变量 mode 来保存新的模式设置
init_game(mode); // 使用新选定的游戏模式来初始化游戏
begin_game(mode); // 开始游戏
}
} else if ((msg.key == key_esc && msg.msg == key_msg_down)) {
flag = false;
}
}
}
}
```
这里假设 `mode` 已经被声明为全局变量或在适当的位置可访问到。通过这样做,我们在重新启动游戏时可以将最新的游戏模式选项传递给 `init_game` 方法。
阅读全文