当前位置: 代码迷 >> C语言 >> [求助]C语言编写石头剪子布游戏
  详细解决方案

[求助]C语言编写石头剪子布游戏

热度:386   发布时间:2006-06-13 12:09:29.0
[求助]C语言编写石头剪子布游戏
程序是一个与电脑玩“石头、剪刀、纸”的游戏程序。
游戏中,玩家为一方,电脑为另一方。
游戏开始,双方各有100分底分。
每一回合玩家通过键盘从“石头、剪刀、纸”三种手势中选择一种,电脑也随机选择一种,然后程序按“纸胜石头;石头胜剪刀;剪刀胜纸”的规则判断本回合的胜负方,负方将被扣去10分给胜方。
以上过程反复进行,直到其中一方被扣成零分。当玩家被扣成零分,则本局游戏结束,玩家按任一键继续游戏;如果是电脑被扣成零分,则显示祝贺词,并根据玩家打败电脑所用的回合数。
游戏过程中按Q键随时可以终止游戏。

[此贴子已经被作者于2006-6-13 14:22:08编辑过]

搜索更多相关的解决方案: C语言  剪子  石头  游戏  编写  

----------------解决方案--------------------------------------------------------
给点意见我啊!
----------------解决方案--------------------------------------------------------

#include"time.h"
#include"stdlib.h"
void str(int x);
void compare(int x,int y);
main()
{

int i,m,n;
printf("游戏开始,退出请按Q,继续请按其它字符键:\n");
while(getchar()!='Q')
{
srand((int)time(0));
n=rand()%3;
printf("石头请选 0;剪刀请选 1;布请选 2;");
scanf("%d",&m);
printf("电脑出的是:");
str(n);
printf("你出的是:");
str(m);
compare(n,m);
printf("按Q退出,按其它字符键继续:");
getchar();
}
getchar();
}
void str(int x)
{
switch (x)
{
case 0:
{printf("石头\n");
break; }
case 1:
{ printf("剪刀\n");
break; }
case 2:
{printf("布\n");
break; }
}
}
void compare(int x,int y)
{ if(x==y+1||x==y+2)
printf("你赢了!!\n");
else if(x==y) printf("平局!!\n");
else printf("你输了!!\n");
}
比分自己去完成吧!


----------------解决方案--------------------------------------------------------
感谢!
----------------解决方案--------------------------------------------------------

我啊特别笨的.
我刚刚开始学这个不久..老师就给我出了这个难题啊.可不可以再帮一次啊..


----------------解决方案--------------------------------------------------------
以下是引用csight在2006-6-13 15:44:20的发言:

void compare(int x,int y)
{ if(x==y+1||x==y+2) /* y-2 */
printf("你赢了!!\n");
else if(x==y) printf("平局!!\n");
else printf("你输了!!\n");
}
比分自己去完成吧!


----------------解决方案--------------------------------------------------------
同意LS的~
应该改为
void compare(int x,int y)
{ if(x==y+1||x==y+2||x=y-2) /* y-2 */
printf("你赢了!!\n");
else
{if(x==y)
printf("平局!!\n");
else
printf("你输了!!\n");
}

}

----------------解决方案--------------------------------------------------------

以下是引用工藤♀新一在2006-6-13 19:21:38的发言:
同意LS的~
应该改为
void compare(int x,int y)
{ if(x==y+1||x==y+2||x=y-2) /* y-2 */
printf("你赢了!!\n");
else
{if(x==y)
printf("平局!!\n");
else
printf("你输了!!\n");
}

}

应为 if(x==y+1||x==y-2)


----------------解决方案--------------------------------------------------------

应该在那个地方加多比分这一项呢!怎么一样思路~再烦一下你们哦~


----------------解决方案--------------------------------------------------------

#include<stdio.h>
#include<stdlib.h>
#include <time.h>
int cmark=100,mmark=100,bout=0; /*cmark电脑分数,mmark是玩家分数,bout是回合数,都是全局变量*/
void count(int y)
{
int x;
bout+=1;
srand((int)time(0));
x=rand()%3+1;/*随机产生一个1到3的数*/
switch(x)
{
case 1:
printf("电脑出石头!\n");break;
case 2:
printf("电脑出剪刀!\n");break;
case 3:
printf("电脑出布!\n");break;
}
if(y==x-1 || y==x+2)
{
mmark+=10;
cmark-=10;
printf("第%d回合,您羸了!加十分!您现在的分数是:%d\n",bout,mmark);
}
else if(x==y)
printf("第%d回合,平局!您现在的分数是:%d\n",bout,mmark);
else
{
mmark-=10;
cmark+=10;
printf("第%d回合,您输了!扣去十分!您现在的分数是:%d\n",bout,mmark);
}
if(mmark<=0)
{
printf("本局游戏结束!你输给了对手!按任意键重新开始!\n") ;
mmark=100;
cmark=100;
bout=0;
getche();
}
if(cmark<=0)
{
printf("恭喜您打败对手了,您一共用了%d回合结束战斗!按任意键重新开始!\n",bout);
mmark=100;
cmark=100;
bout=0;
getche();
}
}

void main()
{
char my;
do
{
printf("游戏开始,退出请按Q,石头请选1,剪刀请选2,布请选3,:");
my=getche();
printf("\n");
switch(my-48)
{
case 1:
printf("你出石头!\n");count(1);break;
case 2:
printf("你出剪刀!\n");count(2);break;
case 3:
printf("你出布!\n");count(3);break;
case 33:break;
case 65:break;
default :printf("输入错误,请重新输入!\n");
}
printf("=============================================\n");
}while(my!='q' && my!='Q');
}

这个包括分数计算的!~

[此贴子已经被作者于2006-6-14 17:47:33编辑过]


----------------解决方案--------------------------------------------------------
  相关解决方案