别想歪 2016-01-03 20:01 采纳率: 0%
浏览 1641

求大神~帮忙改一下。把这串代码改成函数的方式(问题是:用C语言函数制作石头剪刀布)

#include
#include
#include
#include
void printMenu(void)
{
printf("\t\t -------------------------------------------\n");
printf("\t\t| 石头剪刀布游戏 |\n");
printf("\t\t| ---------------------------- |\n");
printf("\t\t| |\n");
printf("\t\t| 说明: |\n");
printf("\t\t| 此小游戏是用C语言实现的结构化程序 |\n");
printf("\t\t| 设计,能够实现用户和电脑相互对玩的 |\n");
printf("\t\t| 过程,其中用户的出拳在下面有说明 |\n");
printf("\t\t| |\n");
printf("\t\t| 用户操作: |\n");
printf("\t\t| |\n");
printf("\t\t| 1-石头 2-剪刀 3-布 4-退出 |\n");
printf("\t\t -------------------------------------------\n\n\n");

}
int main(void)
{
char ch,Computer;
int win=0,lose=0,he=0; //分别统计赢、输、平手的次数
srand(time(NULL));//用系统时间来初始化随机数发生器
printMenu();
while(1)
{
printf("\t\t您的选择(1、2、3):");
while(1)
{
ch = getch();
if(ch=='1'||ch=='2'||ch=='3'||ch=='4')
{ //这里对输入做了限制,只能输入1到4之间的整数
printf("%c\t",ch);
break;
}
}
if(ch=='4') //如果按了4,则退出游戏。
break;
switch(ch)
{ //显示玩家选择的手型
case '1': printf("石头 VS ");
break;
case '2': printf("剪刀 VS ");
break;
case '3': printf("布 VS ");
break;
}
Computer = rand()%3+1+48;
//电脑随机产生1到3之间的整数,后面加上48的目的是将整数转换成字符
switch(Computer)
{
//显示电脑随机产生的手型
case '1':
printf("石头");
break;
case '2':
printf("剪刀");
break;
case '3':
printf("布");
break;
}
switch(ch-Computer)
{

 //这里是比较输赢,通过计算0表示平手,-1和2表示胜利,1和-2表示输了。
           case 0:
     printf("\t平手!\n");
  he++; break;
           case -1: case 2:
  printf("\t你赢了!\n");
  win++;
   break;
           case 1: case -2:
  printf("\t你输了!\n");
  lose++;
  break;
      }
 }
 //如果游戏退出,则打印统计的结果

printf("\n\n\n");
printf("\t\t -------------------TOTAL-------------------\n");
printf("\t\t| 您一共玩了%d次 |\n",win+lose+he);
printf("\t\t ---------------------|-------------------- \n");
printf("\t\t| 胜利 | %d 次 |\n",win);
printf("\t\t ---------------------|-------------------- \n");
printf("\t\t| 失败 | %d 次 |\n",lose);
printf("\t\t ---------------------|-------------------- \n");
printf("\t\t| 平手 | %d 次 |\n",he);
printf("\t\t ---------------------|-------------------- \n");
return 0;
}

  • 写回答

2条回答 默认 最新

  • 关注

    #include
    #include
    #include
    #include
    void myfunc();
    void printMenu(void)
    {
    printf("\t\t -------------------------------------------\n");
    printf("\t\t| 石头剪刀布游戏 |\n");
    printf("\t\t| ---------------------------- |\n");
    printf("\t\t| |\n");
    printf("\t\t| 说明: |\n");
    printf("\t\t| 此小游戏是用C语言实现的结构化程序 |\n");
    printf("\t\t| 设计,能够实现用户和电脑相互对玩的 |\n");
    printf("\t\t| 过程,其中用户的出拳在下面有说明 |\n");
    printf("\t\t| |\n");
    printf("\t\t| 用户操作: |\n");
    printf("\t\t| |\n");
    printf("\t\t| 1-石头 2-剪刀 3-布 4-退出 |\n");
    printf("\t\t -------------------------------------------\n\n\n");
    }
    int main(void)
    {
    myfunc();
    return 0;
    }

    void myfunc()
    {
    char ch,Computer;
    int win=0,lose=0,he=0; //分别统计赢、输、平手的次数
    srand(time(NULL));//用系统时间来初始化随机数发生器
    printMenu();
    while(1)
    {
    printf("\t\t您的选择(1、2、3):");
    while(1)
    {
    ch = getch();
    if(ch=='1'||ch=='2'||ch=='3'||ch=='4')
    { //这里对输入做了限制,只能输入1到4之间的整数
    printf("%c\t",ch);
    break;
    }
    }
    if(ch=='4') //如果按了4,则退出游戏。
    break;
    switch(ch)
    { //显示玩家选择的手型
    case '1': printf("石头 VS ");
    break;
    case '2': printf("剪刀 VS ");
    break;
    case '3': printf("布 VS ");
    break;
    }
    Computer = rand()%3+1+48;
    //电脑随机产生1到3之间的整数,后面加上48的目的是将整数转换成字符
    switch(Computer)
    {
    //显示电脑随机产生的手型
    case '1':
    printf("石头");
    break;
    case '2':
    printf("剪刀");
    break;
    case '3':
    printf("布");
    break;
    }
    switch(ch-Computer)
    {
    //这里是比较输赢,通过计算0表示平手,-1和2表示胜利,1和-2表示输了。
    case 0:
    printf("\t平手!\n");
    he++; break;
    case -1: case 2:
    printf("\t你赢了!\n");
    win++;
    break;
    case 1: case -2:
    printf("\t你输了!\n");
    lose++;
    break;
    }
    }
    //如果游戏退出,则打印统计的结果
    printf("\n\n\n");
    printf("\t\t -------------------TOTAL-------------------\n");
    printf("\t\t| 您一共玩了%d次 |\n",win+lose+he);
    printf("\t\t ---------------------|-------------------- \n");
    printf("\t\t| 胜利 | %d 次 |\n",win);
    printf("\t\t ---------------------|-------------------- \n");
    printf("\t\t| 失败 | %d 次 |\n",lose);
    printf("\t\t ---------------------|-------------------- \n");
    printf("\t\t| 平手 | %d 次 |\n",he);
    printf("\t\t ---------------------|-------------------- \n");
    }

    评论

报告相同问题?

悬赏问题

  • ¥15 虚拟机打不开,怎么解决
  • ¥15 为什么游戏兑换码能被重复领取
  • ¥30 (急!)java实现二叉链表构建二叉树,实现相关功能
  • ¥15 C#tekloa节点插件小项
  • ¥20 脑电信号的局部场电位分析
  • ¥30 Diodes 霍尔开关AH337已经obselete,他的升级替代料【不改变现有电路图】
  • ¥15 python爬虫IndexError: list index out of range
  • ¥15 (标签-考研|关键词-set)
  • ¥15 求修改代码,图书管理系统
  • ¥15 请问有没求偏多标签数据集yeast,reference,recreation,scene,health数据集。