您的位置:

c语言输出猜拳,猜拳游戏c程序设计

本文目录一览:

怎样用C语言编写一个猜拳游戏?

/*至搂主:本游戏系统可支持多个用户游戏,一次只能登录一个用户,运行此程序会生成一个文件来存储用户信息,本程序允许承载的用户个数为1000个,为使游戏更有趣味,程序特意为不同的玩家分数设计了不同的等级,程序初始化时,会生成一个只含有5个系统玩家的文件。游戏过程中,文件会不断刷新,如果玩家要删除一切曾经的游戏记录,只需将存储文件删除,存储记录的文件名为'sunyi',如果搂主想与我们联系,请加QQ好友865363864。(加好友时请搂主注明身份)。

*/

#include stdio.h

#include stdlib.h

#include time.h

//#define NULL 0

/**************************************************************************************************************************/

struct computer //定义系统玩家结构体

{

char player[30];

int score;

int times;

int time;

}cpt[1000]={"player1",100,1,1,"player2",100,1,1,"player3",100,1,1,"player4",100,1,1,"player5",100,1,1,};

FILE *in; //生成记录玩家信息的文件的指针

int number,rool; //rool:玩家所在数组位置的角标.number:数组元素的个数.

/****************************************************************************************************************************/

int h() //生成一个随机数(1,2或3);

{

int k,n;

n=rand()%3;

return n+1;

}

/****************************************************************************************************************************/

int str_to_num(char a[]) //引入函数str_to_num:使字符串(string)转化为整数数形式(int)!

{

int i=strlen(a)-1,num=0,time=1;

for(;i=0;i--)

{

num=num+(a[i]-'0')*time;

time=time*10;

}

return(num);

}

/*****************************************************************************************************************************/

void b(int n)

{

switch((int)(n/20))

{

case(0):printf("等级:江湖渣子");break;

case(1):

case(2):printf("等级:初入江湖");break;

case(3):

case(4):

case(5):printf("等级:江湖浪子");break;

case(6):

case(7):

case(8):

case(9):printf("等级:江湖侠客");break;

case(10):

case(11):

case(12):

case(13):

case(14):

case(15):

case(16):

case(17):

case(18):

case(19):printf("等级:一派掌门");break;

default:

{

switch((int)(n/1000))

{

case(0):printf("等级:武林盟主");break;

case(1):

case(2):

case(3):

case(4):printf("等级:江湖奇侠");break;

case(5):

case(6):

case(7):

case(8):

case(9):printf("等级:孤独求败");break;

default:printf("等级:不死之身");break;

}

}

}

}

/*****************************************************************************************************************************/

int readfile(void) //读文件

{

int i,number=5;

if((in=fopen("sunyi.txt","rb"))!=NULL)

{

fread(number,sizeof(int),1,in);

for(i=0;inumber;i++)

{

fread(cpt[i],sizeof(struct computer),1,in);

}

fclose(in);

}

return(number);

}

/******************************************************************************************************************************/

void writefile() //写文件

{

int i;

in=fopen("sunyi.txt","wb");

fwrite(number,sizeof(int),1,in);

for(i=0;inumber;i++)

{

fwrite(cpt[i],sizeof(struct computer),1,in);

}

fclose(in);

}

/*******************************************************************************************************************************/

void rule() //规则函数

{

printf(" 猜拳游戏\n");

printf("规则:\n");

printf(" 输入“N”或“n”查看积分,第一次游戏时,会免费赠送玩家100枚金币,每局游戏都会");

printf("提示您输入押金,押金必须大于1枚金币!(含1枚),提示游戏开始后,输入一个1~3");

printf("之间的值;1表示石头,2表示剪刀,3表示布。同时,系统也将出拳,按照通俗规则,赢者");

printf("将得到押金,否则扣除,当积分小于5分时,您有五次机会得到系统免费赠送的30分,");

printf("当玩家金币数为零时(又用完5次得到30金币的机会), 系统将提示玩家游戏结束。并删");

printf("除用户。\n");

printf(" #本系统会自动生成5个系统玩家轮流与您游戏,游戏前,玩家需要登录来调出自己");

printf("的游戏记录,如果是第一次游戏,请输入“register”,再输入新用户名注册,如果以前");

printf("进行过游戏,请输入“entry”再输入“用户名”登录.\n(注:本系统允许存储本记录多个用户的信息。)\n\n");

}

/*********************************************************************************************************************************/

int registe() //开始游戏前的登录和注册.

{

char ch[30];

int i;

loop4:

printf("\n第一次玩游戏?请输入“register”注册!\n登录?请输入“entry”登录\n");

loop3:

scanf("%s",ch);

if(strcmp("register",ch)==0)

{

loop2:

printf("请输入新用户名:(长度小于30个字符)");

scanf("%s",ch);

for(i=5;inumber;i++)

{

if(strcmp(cpt[i].player,ch)==0)

{

printf("这个用户已被注册过!注册失败!请重新注册!\n");

goto loop2;

}

}

strcpy(cpt[number].player,ch);

cpt[number].score=100;

cpt[number].time=cpt[number].times=1;

number+=1;

writefile();

printf("注册成功!请登录并在您的用户下进行游戏!:");

goto loop4;

}

else if(strcmp("entry",ch)==0)

{

printf("请输入用户名登录:");

scanf("%s",ch);

for(i=5;inumber;i++)

{

if(strcmp(cpt[i].player,ch)==0)

{

printf("登录成功!\n");

printf("您将在您的用户下进行游戏。!");

break;

}

}

if(i==number)

{

printf("输入错误或没有注册或该用户由于输光金币已被系统删除!\n请重新输入用户名登录!");

goto loop4;

}

}

else

{

printf("您输入的不是“register”也不是“entry”,系统无法执行您的命令,请重新输入:\n");

goto loop3;

}

return(i);

}

/*********************************************************************************************************************************/

void game() //游戏和查询的主体函数

{

int o,p;

char a[10],wether[1];

if(cpt[rool].time==1)printf("本局游戏系统将免费赠予您100枚金币。\n");

if(cpt[rool].score5cpt[rool].times=5)

{

if(cpt[rool].times5)

{

printf("您的积分已少于5分,系统第%d次赠送你30枚金币\n",cpt[rool].times);

}

else

{

printf("您的积分已少于5分,系统最后一次赠送你30枚金币!\n");

}

cpt[rool].score+=30;

cpt[rool].times+=1;

game();

}

if(cpt[rool].score==0)

{

int q;

printf("您不能在没有积分的状态下游戏!你的用户将被删除,如果您还想继续游戏,请重新申请用户\nGAME OVER!\n");

for(q=rool;qnumber-1;q++)

{

strcpy(cpt[q].player,cpt[q+1].player);

cpt[q].time=cpt[q+1].time;

cpt[q].times=cpt[q+1].times;

cpt[q].score=cpt[q+1].score;

}

number-=1;

writefile();

return;

}

else

{

printf("是否继续游戏,输入‘y’或‘Y’继续游戏\n");

scanf("%s",wether);

if(strcmp("y",wether)!=0 strcmp("Y",wether)!=0)

{

printf("GAME STOP");

return;

}

else

{

loop1:

printf("请输入你对本局游戏的押金或输入'N'或‘n’查询积分排名\n");

loop5:

scanf("%s",a);

/****************************************************************************************************************************************************/

if(a[0]=='n'||a[0]=='N') //查寻排名

{

int i[5]={-1,-1,-1,-1,-1},j,k,d=0,e=0,line=-1;

for(k=1;k=5;k++)

{

for(d=0;d5;d++)

{

if(d!=i[0]d!=i[1]d!=i[2]d!=i[3]d!=i[4])break;

}

for(j=0;jnumber;j++)

{

if(cpt[j].score=cpt[d].scorej!=i[0]j!=i[1]j!=i[2]j!=i[3]j!=i[4])d=j;

}

i[k-1]=d;

if(d==rool)

{

line=k;

}

printf("\n玩家:%10s,金币数:%4d,",cpt[d].player,cpt[d].score);

b(cpt[d].score);

}

if(line!=-1)

{

printf("\n\n您目前的积分为:%d,\n排名为:%d,\n",cpt[rool].score,line);

b(cpt[rool].score);

printf("\n\n");

}

else

{

printf("\n\n您目前的积分为:%d,\n没有进入前5名\n",cpt[rool].score);

b(cpt[rool].score);

printf("\n\n");

}

game();

}

/*****************************************************************************************************************************************************/

else //玩游戏

{

int g=0,le=strlen(a);

for(;gle;g++)

{

if(!(a[g]='0'a[g]='9'))

{

printf("你输入了游戏系统无法识别的字符,请重新输入:");

break;

}

}

if(gle)

{

goto loop5;

}

int money=str_to_num(a);

if(money==0)

{

printf("押金不能为‘0’,请重新输入:");

goto loop5;

}

if(money0)

{

printf("押金不能为负数,请重新输入:");

goto loop5;

}

printf("和您进行本轮游戏的是系统玩家player%d。\n",(cpt[rool].time-1)%5+1);

if(cpt[(cpt[rool].time-1)%5].score5)

{

cpt[(cpt[rool].time-1)%5].score+=50;

printf("你的对手的金币小于5个,系统赠送你的对手50枚金币\n");

}

printf("您设定的押金为%d\n",money);

if(moneycpt[rool].score)

{

printf("抱歉,您的金币不足!请重新输入!\n");

goto loop1;

}

if(moneycpt[(cpt[rool].time-1)%5].score)

{

printf("抱歉,您的对手金币不足!请重新输入!\n");

goto loop1;

}

if(10)

{

printf("游戏开始,请出拳!(1表示石头,2表示剪刀,3表示布)");

scanf("%d",o);

p=h();

switch(o)

{

case 1:

{

printf("玩家出拳:石头\n");

break;

}

case 2:

{

printf("玩家出拳:剪子\n");

break;

}

case 3:

{

printf("玩家出拳:布\n");

break;

}

}

switch(p)

{

case 1:

{

printf("系统出拳:石头\n");

break;

}

case 2:

{

printf("系统出拳:剪子\n");

break;

}

case 3:

{

printf("系统出拳:布\n");

break;

}

}

switch(o-p)

{

case 0 :

{

printf("平局!系统将不改变你的金币数量,你的余额为:%d\n",cpt[rool].score);

break;

}

case 1 :

case -2:

{

printf("你输了,系统将扣除你%d个金币,你的余额为:%d\n",money,cpt[rool].score-money);

cpt[rool].score-=money;

cpt[(cpt[rool].time-1)%5].score=cpt[(cpt[rool].time-1)%5].score+money;

break;

}

case -1:

case 2 :

{

printf("你赢了,系统将给予你%d个金币,你的余额为:%d\n",money,cpt[rool].score+money);

cpt[rool].score+=money;

cpt[(cpt[rool].time-1)%5].score=cpt[(cpt[rool].time-1)%5].score-money;

break;

}

}

cpt[rool].time+=1;

writefile();

}

game();

}

}

}

}

main() //主函数

{

srand( (unsigned)time(0) );

number=readfile();

rule();

rool=registe();

game();

}

c语言猜拳游戏问题,求大神帮忙看一下

getchar()放在scanf输入之前,其他小改动。

#include "stdafx.h"

#include iostream

#include time.h

using namespace std;

int main()

{

int times,x,user,computer,result,Y=0,T=0,C=0;

char userInput;

cout "请输入局数:" endl;

cin times;

for (int i = 0; i times; i++)

{

x = i + 1;

printf("\n    Match %d:Enter R for Rock,P for paper,or S for scissors:", x);

getchar();

scanf_s("%c", userInput, 1);

switch (userInput)

{

case 82:

user = 2;

break;

case 83:

user = 1;

break;

case 80:

user = 3;

break;

}

srand((unsigned)time(NULL));

computer = rand() % 3 + 1;

if (computer == 1)

{

printf("    The computer chose scissors.");

}

if (computer == 2)

{

printf("    The computer chose rock.");

}

if (computer == 3)

{

printf("    The computer chose paper.");

}

result = computer - user;

if (result == -1 || result == 2)

{

Y += 1;

printf("You win.\n");

printf("    Scores: ");

}

else if (result == 1 || result == -2)

{

C += 1;

printf("You lose.\n");

printf("    Scores: ");

}

else if (result == 0)

{

T += 1;

printf("You tied.\n");

printf("    Score: ");

}

if (T != 0)

{

printf("    Ties-%d", T);

}

if (Y != 0)

{

printf("    You-%d", Y);

}

if (C != 0)

{

printf("    Computer-%d", C);

}

}

printf("\n\n");

system("pause");

  return 0;

}

就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语言猜拳游戏代码

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

}

}就做了那么点点。。。