软件开发与创新第一次作业——贪吃蛇小游戏修改
本博客为软件工程专业软件开发与创新第一次实验报告,就一个已有的项目,进行阅读分析,找出软件尚存得缺陷,并改进其软件做二次开发,并在最后写出此次试验的心得体会。
我在csdn找了一个贪吃蛇小游戏的代码
(原代码见 https://blog.csdn.net/leslie5205912/article/details/78980006)
试运行:



程序改动部分:
1.代码bug修复
经过对这个小游戏代码的阅读和测试,我发现了一个bug:豆子的生成并不是随机产生的。
生成豆子部分代码如下:
void Creatfood(char map[Row_max][Line_max], int snake[Row_max][Line_max]) {//生成豆子
do{
food_x = rand() % (Line_max - 2) + 1;
food_y = rand() % (Row_max - 2) + 1;
} while (snake[food_y][food_x] != 0||map[food_y][food_x]=='#');
map[food_y][food_x] = '*';
}
此处原作者准备随机生成豆子,但是并没有给与随机数种子,导致豆子固定生成
于是我加上了srand(time(NULL)); 语句根据时间生成随机数种子
(此处原作者使用 do{ }while (snake[food_y][food_x] != 0||map[food_y][food_x]=='#');语句保证随机生成的豆子不在蛇身上且没有落在游戏边框上)
经测试改动后无bug,种子能够正常随机生成了
2.主页面美化
原作者为了代码简洁,主页面仅显示一句"Press any key to start this game!"
我决定对游戏开始时的主页面进行简单美化
代码如下:
cout << " *** ****" << endl;
cout << " **** * **Q *<--food" << endl;
cout << " *****" << endl;
cout << "" << endl;
cout << "-------The Gluttonous Snake-------" << endl;
cout << "" << endl;
cout << " Use ↑ W" << endl;
cout << " ←↓→ or A S D to control" << endl;
cout << "" << endl;
cout << "" << endl;
cout << " Press any key to start this game!" << endl;
改动后:

3.实时显示分数
玩家可能需要一个实时显示分数的功能来了解现在已经获得的分数
于程序运行主要循环代码,也就是switch (ch) 部分添加语句如下
printf("\nScore:%d\n",score*10);
即可在每一次循环时输出当时分数的值
改动后:

疑问部分:
想要实现按下指定按键即重新执行程序,按下除此外任意键退出
但是使用while语句后,的确可以重新回到主页,但是不能正常继续执行程序,Creatsnake(snake);Creatmap(map);Creatfood(map, snake);Run(map, snake);均无法运行,会直接跳转到结束页Result();
使用代码如下:
int main() {
int k;
while(1){
system("cls");
cout << " *** ****" << endl;
cout << " **** * **Q *<--food" << endl;
cout << " *****" << endl;
cout << "" << endl;
cout << "-------The Gluttonous Snake-------" << endl;
cout << "" << endl;
cout << " Use ↑ W" << endl;
cout << " ←↓→ or A S D to control" << endl;
cout << "" << endl;
cout << "" << endl;
cout << " Press any key to start this game!" << endl;
getch();
Creatsnake(snake);
Creatmap(map);
Creatfood(map, snake);
Run(map, snake);
Result();
k=getch();
if(k!='Y')break;
}
}
心得体会:
在写代码的过程中一定要仔细,项目实现之后也要进行充分的测试,避免bug产生。
可以通过以用户的视角看待项目,思考用户需要,丰富项目功能。
浙公网安备 33010602011771号