本文目录一览:
用C语言编写一个有趣的猜拳游戏
#includestdio.h
#includestring.h
#includestdlib.h
#includetime.h
#define maxn 10001
char p1[]="rock";
char p2[]="scissors";
char p3[]="cloth";
char *h[4];
void init(void)
{
h[1]=p1;
h[2]=p2;
h[3]=p3;
}
void begin(void)
{
char your[maxn];
long com;
char p[maxn];
srand(time(NULL));
for(;;)
{
printf("input your order ?( 1:rock 2:scissors 3:cloth )\n");
scanf("%s",your);
com=strlen(your);
if( your[0]'3' || your[0]'1' || com!=1)
{
printf("wrong order! please choose in(1~3);\n");
getchar();
continue;
}
printf("your order is %s!\n",h[your[0]-'0']);
getchar();
getchar();
com=rand()%3+1;
printf("The computer's order is %s!\n",h[com]);
getchar();
switch(com-your[0]+'0')
{
case 0:printf("draw game!\n");break;
case 1:
case -2:
printf("You wins!\n");break;
case -1:
case 2:
printf("The computer wins!\n");break;
}
com=1;
for(;com==1;)
{
printf("continue?(Y/N)\n");
scanf("%s",p);
com=0;
switch(p[0])
{
case 'Y':break;
case 'N':
printf("press any key to continue.\n");getchar();getchar();return ;
default:
printf("wrong order!\n");com=1;break;
}
}
}
}
main(void)
{
init();
begin();
return 0;
}
c语言问题 猜拳游戏
整体还是很好的。
问题在这里:
“scanf("%c,%C",player1,player2); ”这一句,第二个%c大写了,改一下。
scanf的实质是将键盘输入字符存入声明字符变量时开辟的一段存储区域。第一局运行正常,而第二局往后你只是单纯的想覆盖输入,这是不可以的——因为你在上一次使用scanf后没有清空输入缓存, 这样再次使用scanf的时候函数就会认为你已经输入过了。
改进只需要在scanf之前加上fflush(stdin)清空输入缓存。
如图:
希望帮上忙。
就C语言中 猜拳游戏的代码
这是一个简单的猜拳游戏(剪子包子锤),让你与电脑对决。你出的拳头由你自己决定,电脑则随机出拳,最后判断胜负。
下面的代码会实现一个猜拳游戏,让你与电脑对决。你出的拳头由你自己决定,电脑则随机出拳,最后判断胜负。
启动程序后,让用户出拳,截图:
用户出拳,显示对决结果:截图:
代码实现:
#include stdio.h
#include stdlib.h
#include time.h
int main()
{
char gamer; // 玩家出拳
int computer; // 电脑出拳
int result; // 比赛结果
// 为了避免玩一次游戏就退出程序,可以将代码放在循环中
while (1){
printf("这是一个猜拳的小游戏,请输入你要出的拳头:\n");
printf("A:剪刀\nB:石头\nC:布\nD:不玩了\n");
scanf("%c%*c",gamer);
switch (gamer){
case 65: //A
case 97: //a
gamer=4;
break;
case 66: //B
case 98: //b
gamer=7;
break;
case 67: //C
case 99: //c
gamer=10;
break;
case 68: //D
case 100: //d
return 0;
default:
printf("你的选择为 %c 选择错误,退出...\n",gamer);
getchar();
system("cls"); // 清屏
return 0;
break;
}
srand((unsigned)time(NULL)); // 随机数种子
computer=rand()%3; // 产生随机数并取余,得到电脑出拳
result=(int)gamer+computer; // gamer 为 char 类型,数学运算时要强制转换类型
printf("电脑出了");
switch (computer)
{
case 0:printf("剪刀\n");break; //4 1
case 1:printf("石头\n");break; //7 2
case 2:printf("布\n");break; //10 3
}
printf("你出了");
switch (gamer)
{
case 4:printf("剪刀\n");break;
case 7:printf("石头\n");break;
case 10:printf("布\n");break;
}
if (result==6||result==7||result==11) printf("你赢了!");
else if (result==5||result==9||result==10) printf("电脑赢了!");
else printf("平手");
system("pausenulcls"); // 暂停并清屏
}
return 0;
}
代码分析
1) 首先,我们需要定义3个变量来储存玩家出的拳头(gamer)、电脑出的拳头(computer)和最后的结果(result),然后给出文字提示,让玩家出拳。
接下来接收玩家输入:
scanf("%c%*c",gamer);
用c语言怎么写猜拳游戏啊!我刚刚学一个月
#includecstdio
#includecstdlib
#includectime
int main()
{
int a=0,b=0,i,c,h,wr;
printf("飞行棋,先输入格子数,之后每次输入1-3的数(上限100)\n");
printf("输入格子数:");
scanf("%d",h);
a=a+h;b=b+h;
while(1)
{
printf("1=石头2=剪刀3=布\n");
printf(" * * * ***\n *** * * ***\n * * * ***\n");
printf("输入1~3\n");
printf("----------------------------------\n");
scanf("%d",i);
srand(time(0));
c=rand()%3;
if(i==1c==2||i==2c==3||i==3c==1)
{a=a-1;
printf("你赢了,前进一步\n你还剩%d 电脑剩%d\n",a,b);
printf("*--------------------------------*\n");}
else if(c==1i==2||c==2i==3||c==3i==1)
{b=b-1;
printf("你输了,电脑前进\n你还剩%d 电脑剩%d\n",a,b);
printf("/--------------------------------/\n");}
else {printf("平局\n你还剩%d 电脑剩%d\n",a,b);
printf("?--------------------------------?\n");}
if(a==0||b==0)break;}
if(a==0)printf("you win\n");
else printf("you lose\n");
system("pause");
}
c语言 猜拳问题
int win = player[0].hand;
bool change = false;
bool draw = false;
for (int k = 1; k players; k++) {
if (player[k].hand + 1 == win || (player[k].hand == 2 win == 0)) {
if (change) {
printf("平局\n");
draw = true;
break;
} else {
win = player[k].hand;
change = true;
}
} else if (player[k].hand - 1 == win || (player[k].hand == 0 win == 2)) {
if (!change) change = true;
}
}
if (!change) {
printf("平局\n");
draw = true;
}
if (!draw) {
printf("player ");
for (int k = 0; k players; k++)
if (player[k].hand == win) {
player[k].winCount++;
printf("%d ", k + 1);
}
printf("胜\n");
}
以上是课题一。
----------------------------------
以下是课题二。
printf("胜数 ");
int max = 0;
for (int k = 0; k players; k++) {
if (player[k].winCount max) max = player[k].winCount;
printf("%d胜 ", player[k].winCount);
}
printf("\nplayer ");
for (int k = 0; k players; k++) {
if (player[k].winCount == max) printf("%d ", k + 1);
}
printf("胜\n");
------------------------------------
以上代码纯手打,请自行编译,出现问题欢迎追问。
求C语言猜拳游戏代码
#include stdio.h
#include stdlib.h
#include time.h
void main()
{
int rand_0(void);
int game(int inp);
int start,yes=1,inp,inp_1=1; char y;
while(yes) /*预防用户输入1或2以外的数据*/
{
printf("1:开始游戏\n2:排行榜\n");
scanf("%d",start);
if((start!=1)(start!=2))
{
printf("请输入1或2\n");
}
else
yes=0;
}
start:
if(start==1) /*如果用户选择开始游戏……*/
{
printf("你出?\n1:石头\n2:剪刀\n3:布\n");
while(inp_1) /*预防用户输入别的数据*/
{
scanf("%d",inp);
if((inp!=1)(inp!=2)(inp!=3))
{
printf("你出?\n1:石头\n2:剪刀\n3:布\n");
}
else
{
inp_1=0;
switch(game(inp))
{
case 1:printf("\n\n恭喜你,你赢了!\n\n");break;
case 0:printf("\n\n很遗憾,你输了!\n\n");break;
case 2:printf("\n\n平局\n\n");break;
}
}
}
}
inp_1=1;
printf("\n\n是否重新开始游戏?(y/n)");
scanf("%s",y);
if((y=='y')||y=='Y')
goto start;
else
return 0;}
int rand_0(void) /*取随机数*/
{
int i,rand_1;
srand((unsigned)time(NULL));
for(i=1;i=10;i++)
{
rand_1=rand()%4;
if(rand_1==0) continue;
return(rand_1);
}
}
int game(int inp)
{
int random,win; /*win变量,1是赢,2是平,0是输*/
random=rand_0();
switch(inp)
{
case 1:if(random==3) return win=0;
else if(random==2) return win=1;
else return win=2;
case 2:if(random==3) return win=1;
else if(random==2) return win=2;
else return win=0; case 3:if(random==3) return win=2;
else if(random==2) return win=1;
else return win=0;
}
}就做了那么点点。。。