您的位置:

c语言猜拳教程,用c语言编写猜拳游戏

本文目录一览:

用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;

}

}就做了那么点点。。。