//打印选项,提示用户选择;
//可以让用户连续猜拳,直到输入‘q’退出;
//退出之前显示进行了几次游戏和得分;
//流程:
/*
1、打印选项菜单
2、接收用户输入
3、判断用户的选择,并且执行相应操作
4、如果赢了,得分加10,如果输了,得分减5,游戏次数加1;
如果是退出,则执行相应退出操作
5、只要不是退出,以上的所有操作,都需要循环
6、执行退出操作,在退出之前,打印游戏次数和得分;
*/
#include <stdio.h> //标准输入输出
#include <time.h> //time
#include <stdlib.h> //srand
char printMenu(); //声明打印菜单函数
void panduan(char user); //声明选择判断函数
int flag = 1; //判断是否退出的值
int count = 0; //局数
int score = 0; //积分
int main(int argc, const char * argv[]) {
char ch;
while(flag)
{
ch = printMenu(); //调用打印菜单函数
panduan(ch); //调用选择判断函数
}
return 0;
}
void panduan(char user){ //定义选择判断函数
int sys = 0; //系统出拳
srand((unsigned) time (NULL)); //根据”时间“随机数播种子
sys = rand()%3 +1; //系统取1~3之间的随机数
switch (user) { //用户选择的4个案例
case '1': //用户出“剪刀”
if (sys == 1) { //系统出“剪刀”
count++; //局数加1
printf("电脑出‘剪刀’。平局\n");
}else if(sys == 2){
count++;
printf("电脑出‘石头’。你输了\n");
score-=5; //得分减5
}else if(sys == 3){
count++;
printf("电脑出‘布’。你赢了\n");
score+=10; //得分加10
}
break; //跳出switch
case '2':
if (sys == 2) {
count++;
printf("电脑出‘石头’。平局\n");
}else if(sys == 3){
count++;
printf("电脑出‘布’。你输了\n");
score-=5;
}else if(sys == 1){
count++;
printf("电脑出‘剪刀’。你赢了\n");
score+=10;
}
break;
case '3':
if (sys == 3) {
count++;
printf("电脑出‘布’。平局\n");
}else if(sys == 1){
count++;
printf("电脑出‘剪刀’。你输了\n");
score-=5;
}else if(sys == 2){
count++;
printf("电脑出‘石头’。你赢了\n");
score+=10;
}
break;
case 'q': //用户选择退出
printf("一共玩了%d局,得分:%d\n",count,score); //输出得分
flag = 0; //使判断为0
break;
default:printf("输入错误\n"); //如果输入的不是0、1、2、3,提示错误
}
}
char printMenu(){ //定义打印菜单的函数
char ch = '\0';
printf("1:剪刀\n2:石头\n3:布\nq:退出\n");
printf("请选择:\n");
scanf("%c",&ch);
getchar();
return ch; //char类型函数要有返回值
}