前言:
今天继续昨天的石头剪刀布的小项目,今天做个升级版,比昨天难度稍微大点,用别的更高级的语句取代了if语句,同时优化了操作界面增加了提示界面,让我们一起看看是怎么做到的把。
代码1(界面设置):
while (1)
{
printf("这个小游戏是——剪刀石头布,\n你要出:\n");
printf("A:剪刀\nB:石头\nC:布\n");
scanf("%c", &Gamer);
switch (Gamer)
{
case 'A':
gamer = 4;
break;
case 'B':
gamer = 7;
break;
case 'C':
gamer = 10;
break;
default:
printf("你的选择为%c\n选择错误,退出...\n", Gamer);
system("pause");
return 0;
break;
}
解析:
这个游戏界面其实非常简单,用一个while语句输出提示词,然后根据玩家输出字母A,B,C代表石头剪刀布,然后用Switch语句来做分支把各个情况的出拳化为一个值便于后面与电脑作比较判断。
代码2(电脑随机种子与判断胜负):
srand((unsigned)time(0));//每一次的seed都不同
computer = rand() % 3+1;
result = gamer + computer;
printf("电脑出了:");
switch (computer)
{
case 3:printf("剪刀\n"); break;
case 1:printf("石头\n"); break;
case 2:printf("布\n"); break;
}
printf("你出了:");
switch (gamer)
{
case 4:printf("剪刀\n"); break;
case 7:printf("石头\n"); break;
case 10:printf("布\n"); break;
}
if (result == 6 || result == 10 || result == 11)
printf("你赢了!");
else if (result == 5 || result == 9 || result == 13)
printf("电脑赢了!");
else
printf("平手");
system("pause>nul&&cls"); //清屏
}
解析:
同样的这里用Switch语句优化了昨天大量使用if else的情况,使代码更加简洁移动,另外在电脑出拳后会显示当前电脑的出拳情况之后输出胜负情况,更加让人一目了然。最后使用了system("pause>nul&&cls");函数实现清空屏幕的操作,从而完成任务。
小结:
其实今天的升级版相对于昨天最大的区别在于对于if else语句的优化,一个好的程序要避免大量使用if else语句,否则可读性会大大降低。所以代码不仅要完成相应功能最好要简洁易懂,这样在工作才会更高效。今天的分享就到这里,明天准时更新。