问题描述
- 求大神~帮忙改一下。把这串代码改成函数的方式(问题是:用C语言函数制作石头剪刀布)
-
#include
#include
#include
#include
void printMenu(void)
{
printf("tt -------------------------------------------n");
printf("tt| 石头剪刀布游戏 |n");
printf("tt| ---------------------------- |n");
printf("tt| |n");
printf("tt| 说明: |n");
printf("tt| 此小游戏是用C语言实现的结构化程序 |n");
printf("tt| 设计,能够实现用户和电脑相互对玩的 |n");
printf("tt| 过程,其中用户的出拳在下面有说明 |n");
printf("tt| |n");
printf("tt| 用户操作: |n");
printf("tt| |n");
printf("tt| 1-石头 2-剪刀 3-布 4-退出 |n");
printf("tt -------------------------------------------nnn");}
int main(void)
{
char ch,Computer;
int win=0,lose=0,he=0; //分别统计赢、输、平手的次数
srand(time(NULL));//用系统时间来初始化随机数发生器
printMenu();
while(1)
{
printf("tt您的选择(1、2、3):");
while(1)
{
ch = getch();
if(ch=='1'||ch=='2'||ch=='3'||ch=='4')
{ //这里对输入做了限制,只能输入1到4之间的整数
printf("%ct",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("nnn");
printf("tt -------------------TOTAL-------------------n");
printf("tt| 您一共玩了%d次 |n",win+lose+he);
printf("tt ---------------------|-------------------- n");
printf("tt| 胜利 | %d 次 |n",win);
printf("tt ---------------------|-------------------- n");
printf("tt| 失败 | %d 次 |n",lose);
printf("tt ---------------------|-------------------- n");
printf("tt| 平手 | %d 次 |n",he);
printf("tt ---------------------|-------------------- n");
return 0;
}
解决方案
#include
#include
#include
#include
void myfunc();
void printMenu(void)
{
printf("tt -------------------------------------------n");
printf("tt| 石头剪刀布游戏 |n");
printf("tt| ---------------------------- |n");
printf("tt| |n");
printf("tt| 说明: |n");
printf("tt| 此小游戏是用C语言实现的结构化程序 |n");
printf("tt| 设计,能够实现用户和电脑相互对玩的 |n");
printf("tt| 过程,其中用户的出拳在下面有说明 |n");
printf("tt| |n");
printf("tt| 用户操作: |n");
printf("tt| |n");
printf("tt| 1-石头 2-剪刀 3-布 4-退出 |n");
printf("tt -------------------------------------------nnn");
}
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("tt您的选择(1、2、3):");
while(1)
{
ch = getch();
if(ch=='1'||ch=='2'||ch=='3'||ch=='4')
{ //这里对输入做了限制,只能输入1到4之间的整数
printf("%ct",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("nnn");
printf("tt -------------------TOTAL-------------------n");
printf("tt| 您一共玩了%d次 |n",win+lose+he);
printf("tt ---------------------|-------------------- n");
printf("tt| 胜利 | %d 次 |n",win);
printf("tt ---------------------|-------------------- n");
printf("tt| 失败 | %d 次 |n",lose);
printf("tt ---------------------|-------------------- n");
printf("tt| 平手 | %d 次 |n",he);
printf("tt ---------------------|-------------------- n");
}
解决方案二:
把代码拿出来放到一个方法里就行了嘛