C语言猜拳小游戏程序求助
作业要求编个猜拳小游戏,编得渣渣,各种bug,1.最后的比较最终胜负出现了垃圾值,2.输入q的时候游戏无法结束3.要输入第四次才出最终结果的判断,为什么不是比了第三次之后...
作业要求编个猜拳小游戏,编得渣渣,各种bug,
1.最后的比较最终胜负出现了垃圾值,
2.输入q的时候游戏无法结束
3.要输入第四次才出最终结果的判断,为什么不是比了第三次之后就直接出最终结果?
程序如下:
//这是一个猜拳小游戏,三局两胜制
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int get_int(void); //规范输入的函数
int game(int y,int x); //游戏函数
int result(int m,int n); //比较最终结果的函数
main()
{
int x,y,m,n;
int k = 1;
char q;
printf("1代表石头;2代表剪刀;3代表布;按q退出。\n");
printf("请输入您的选择.\n");
while((y = get_int())!= 'q'&&k<4)
{
k++;
game(y,x);
}
result(m,n);
return 0;
}
int get_int(void)
{
int y;
char ch;
while (scanf("%d", &y)!= 1||y>3)
{
while ((ch = getchar()) != '\n')
putchar(ch); //剔除错误的输入
printf("不是正确的命令,请输入正确的形式,1或2或者3:\n");
}
return y;
}
int game(int y,int x)
{
int m = 0; //玩家赢的次数
int n = 0; //电脑赢的次数
srand(time(NULL));
x = rand()%3+1; //取随机数1~3
if(y==1&&x==3)
{
printf("你出石头\n");
printf("电脑出布\n");
printf("你输了\n");
++n; //电脑赢的次数
}
else if(y==1&&x==1)
{
printf("大家都出石头,平局\n");
++m;
++n;
}
else if(y==1&&x==2)
{
printf("你出石头\n");
printf("电脑出剪刀\n");
printf("你赢了\n");
++m; //玩家赢的次数
}
if(y==2&&x==1)
{
printf("你出剪刀\n");
printf("电脑出石头\n");
printf("你输了\n");
++n;
}
else if(y==2&&x==2)
{
printf("大家都出剪刀,平局\n");
++m;
++n;
}
else if(y==2&&x==3)
{
printf("你出剪刀\n");
printf("电脑出布\n");
printf("你赢了\n");
++m;
}
if(y==3&&x==1)
{
printf("你出布\n");
printf("电脑石头\n");
printf("你赢了\n");
++m;
}
else if(y==3&&x==2)
{
printf("你出石头\n");
printf("电脑出剪刀\n");
printf("你输了\n");
++n;
}
else if(y==3&&x==3)
{
printf("大家都出布,平局\n");
++m;
++n;
}
return m,n; //返回m,n的值
}
int result(int m,int n) //比较最终结果
{
if(m<n)
printf("3局%d胜,你输了.\n",m);
else if(m>n)
printf("3局%d胜,你赢了.\n",m);
else if(m==n)
printf("一胜一负一平局,旗鼓相当。\n");
return 0;
} 展开
1.最后的比较最终胜负出现了垃圾值,
2.输入q的时候游戏无法结束
3.要输入第四次才出最终结果的判断,为什么不是比了第三次之后就直接出最终结果?
程序如下:
//这是一个猜拳小游戏,三局两胜制
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int get_int(void); //规范输入的函数
int game(int y,int x); //游戏函数
int result(int m,int n); //比较最终结果的函数
main()
{
int x,y,m,n;
int k = 1;
char q;
printf("1代表石头;2代表剪刀;3代表布;按q退出。\n");
printf("请输入您的选择.\n");
while((y = get_int())!= 'q'&&k<4)
{
k++;
game(y,x);
}
result(m,n);
return 0;
}
int get_int(void)
{
int y;
char ch;
while (scanf("%d", &y)!= 1||y>3)
{
while ((ch = getchar()) != '\n')
putchar(ch); //剔除错误的输入
printf("不是正确的命令,请输入正确的形式,1或2或者3:\n");
}
return y;
}
int game(int y,int x)
{
int m = 0; //玩家赢的次数
int n = 0; //电脑赢的次数
srand(time(NULL));
x = rand()%3+1; //取随机数1~3
if(y==1&&x==3)
{
printf("你出石头\n");
printf("电脑出布\n");
printf("你输了\n");
++n; //电脑赢的次数
}
else if(y==1&&x==1)
{
printf("大家都出石头,平局\n");
++m;
++n;
}
else if(y==1&&x==2)
{
printf("你出石头\n");
printf("电脑出剪刀\n");
printf("你赢了\n");
++m; //玩家赢的次数
}
if(y==2&&x==1)
{
printf("你出剪刀\n");
printf("电脑出石头\n");
printf("你输了\n");
++n;
}
else if(y==2&&x==2)
{
printf("大家都出剪刀,平局\n");
++m;
++n;
}
else if(y==2&&x==3)
{
printf("你出剪刀\n");
printf("电脑出布\n");
printf("你赢了\n");
++m;
}
if(y==3&&x==1)
{
printf("你出布\n");
printf("电脑石头\n");
printf("你赢了\n");
++m;
}
else if(y==3&&x==2)
{
printf("你出石头\n");
printf("电脑出剪刀\n");
printf("你输了\n");
++n;
}
else if(y==3&&x==3)
{
printf("大家都出布,平局\n");
++m;
++n;
}
return m,n; //返回m,n的值
}
int result(int m,int n) //比较最终结果
{
if(m<n)
printf("3局%d胜,你输了.\n",m);
else if(m>n)
printf("3局%d胜,你赢了.\n",m);
else if(m==n)
printf("一胜一负一平局,旗鼓相当。\n");
return 0;
} 展开
2个回答
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int get_int(void); //规范输入的函数
int game(int y,int x); //游戏函数
int result(int m,int n); //比较最终结果的函数
int main()
{
int x,y,m,n;
int k = 0;
char q;
printf("1代表石头;2代表剪刀;3代表布;\n");
printf("请输入您的选择.\n");
while(k<3)
{
scanf("%d", &y);
k++;
game(y,x);
}
result(m,n);
system("pause");
return 0;
}
int game(int y,int x)
{
int m = 0; //玩家赢的次数
int n = 0; //电脑赢的次数
srand(time(NULL));
x = rand()%3+1; //取随机数1~3
if(y==1&&x==3)
{
printf("你出石头\n");
printf("电脑出布\敬唯n");
printf("你输了\n");
++n; //电脑赢的次数
}
else if(y==1&&x==1)
{
printf("大家都出石头,平兆晌局\n");
++m;
++n;
}
else if(y==1&&x==2)
{
printf("你出石头\n");
printf("电脑出剪刀\n");
printf("你赢了\n");
++m; //玩家赢的次数
}
if(y==2&&x==1)
{
printf("你出剪刀\n");
printf("电脑出石头\n");
printf("你输了\n");
++n;
}
else if(y==2&&x==2)
{
printf("大家都出剪刀,平局\n");
++m;
++n;
}
else if(y==2&&x==3)
{
printf("你出剪刀\n");
printf("电脑出布\n");
printf("你赢了\n");
++m;
}
if(y==3&&x==1)
{
printf("你出布\n");
printf("电脑石头\n");
printf("亮猜培你赢了\n");
++m;
}
else if(y==3&&x==2)
{
printf("你出石头\n");
printf("电脑出剪刀\n");
printf("你输了\n");
++n;
}
else if(y==3&&x==3)
{
printf("大家都出布,平局\n");
++m;
++n;
}
return m,n; //返回m,n的值
}
int result(int m,int n) //比较最终结果
{
if(m<n)
printf("3局%d胜,你输了.\n",m);
else if(m>n)
printf("3局%d胜,你赢了.\n",m);
else if(m==n)
printf("一胜一负一平局,旗鼓相当。\n");
return 0;
}//改好了,直接比较三次出结果就行了呀!最后暂停查看下system("pause");
#include <stdlib.h>
#include <time.h>
int get_int(void); //规范输入的函数
int game(int y,int x); //游戏函数
int result(int m,int n); //比较最终结果的函数
int main()
{
int x,y,m,n;
int k = 0;
char q;
printf("1代表石头;2代表剪刀;3代表布;\n");
printf("请输入您的选择.\n");
while(k<3)
{
scanf("%d", &y);
k++;
game(y,x);
}
result(m,n);
system("pause");
return 0;
}
int game(int y,int x)
{
int m = 0; //玩家赢的次数
int n = 0; //电脑赢的次数
srand(time(NULL));
x = rand()%3+1; //取随机数1~3
if(y==1&&x==3)
{
printf("你出石头\n");
printf("电脑出布\敬唯n");
printf("你输了\n");
++n; //电脑赢的次数
}
else if(y==1&&x==1)
{
printf("大家都出石头,平兆晌局\n");
++m;
++n;
}
else if(y==1&&x==2)
{
printf("你出石头\n");
printf("电脑出剪刀\n");
printf("你赢了\n");
++m; //玩家赢的次数
}
if(y==2&&x==1)
{
printf("你出剪刀\n");
printf("电脑出石头\n");
printf("你输了\n");
++n;
}
else if(y==2&&x==2)
{
printf("大家都出剪刀,平局\n");
++m;
++n;
}
else if(y==2&&x==3)
{
printf("你出剪刀\n");
printf("电脑出布\n");
printf("你赢了\n");
++m;
}
if(y==3&&x==1)
{
printf("你出布\n");
printf("电脑石头\n");
printf("亮猜培你赢了\n");
++m;
}
else if(y==3&&x==2)
{
printf("你出石头\n");
printf("电脑出剪刀\n");
printf("你输了\n");
++n;
}
else if(y==3&&x==3)
{
printf("大家都出布,平局\n");
++m;
++n;
}
return m,n; //返回m,n的值
}
int result(int m,int n) //比较最终结果
{
if(m<n)
printf("3局%d胜,你输了.\n",m);
else if(m>n)
printf("3局%d胜,你赢了.\n",m);
else if(m==n)
printf("一胜一负一平局,旗鼓相当。\n");
return 0;
}//改好了,直接比较三次出结果就行了呀!最后暂停查看下system("pause");
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询