当前位置:首页 » 编程语言 » c语言猜拳游戏

c语言猜拳游戏

发布时间: 2024-12-30 22:10:03

⑴ 怎样用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;i<number;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;i<number;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;i<number;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;i<number;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].score<5&&cpt[rool].times<=5)
{
if(cpt[rool].times<5)
{
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;q<number-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;d<5;d++)
{
if(d!=i[0]&&d!=i[1]&&d!=i[2]&&d!=i[3]&&d!=i[4])break;
}
for(j=0;j<number;j++)
{
if(cpt[j].score>=cpt[d].score&&j!=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(;g<le;g++)
{
if(!(a[g]>='0'&&a[g]<='9'))
{
printf("你输入了游戏系统无法识别的字符,请重新输入:");
break;
}
}
if(g<le)
{
goto loop5;
}

int money=str_to_num(a);
if(money==0)
{
printf("押金不能为‘0’,请重新输入:");
goto loop5;
}
if(money<0)
{
printf("押金不能为负数,请重新输入:");
goto loop5;
}

printf("和您进行本轮游戏的是系统玩家player%d。\n",(cpt[rool].time-1)%5+1);
if(cpt[(cpt[rool].time-1)%5].score<5)
{
cpt[(cpt[rool].time-1)%5].score+=50;
printf("你的对手的金币小于5个,系统赠送你的对手50枚金币\n");
}
printf("您设定的押金为%d\n",money);
if(money>cpt[rool].score)
{
printf("抱歉,您的金币不足!请重新输入!\n");
goto loop1;
}
if(money>cpt[(cpt[rool].time-1)%5].score)
{
printf("抱歉,您的对手金币不足!请重新输入!\n");
goto loop1;
}
if(1>0)
{
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语言编写一个有趣的猜拳游戏

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<time.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语言猜拳游戏代码

#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("pause>nul&&cls"); // 暂停并清屏
}
return 0;
}

⑷ 用c语言怎么写猜拳游戏啊!我刚刚学一个月

#include<cstdio>
#include<cstdlib>
#include<ctime>
intmain()
{
inta=0,b=0,i,c,h,wr;
printf("飞行棋,先输入格子数,之后每次输入1-3的数(上限100) ");
printf("输入格子数:");
scanf("%d",&h);
a=a+h;b=b+h;
while(1)
{
printf("1=石头2=剪刀3=布 ");
printf("****** ******** ****** ");
printf("输入1~3 ");
printf("---------------------------------- ");
scanf("%d",&i);
srand(time(0));
c=rand()%3;
if(i==1&&c==2||i==2&&c==3||i==3&&c==1)
{a=a-1;
printf("你赢了,前进一步 你还剩%d电脑剩%d ",a,b);
printf("*--------------------------------* ");}
elseif(c==1&&i==2||c==2&&i==3||c==3&&i==1)
{b=b-1;
printf("你输了,电脑前进 你还剩%d电脑剩%d ",a,b);
printf("/--------------------------------/ ");}
else{printf("平局 你还剩%d电脑剩%d ",a,b);
printf("?--------------------------------? ");}
if(a==0||b==0)break;}

if(a==0)printf("youwin ");
elseprintf("youlose ");

system("pause");
}

⑸ 给我提供个小游戏的C 语言代码

本原代码是基于C语言的原程序。是经典中的小游戏。-primitive code is based on the C language of the original procere. Classic is a small game.
一个小游戏,用C语言编写的:俄罗斯方块.C原码及应用程序都在里面哦 -a small game using the C language : Russian cubes. The original C code and application proceres inside oh
十全十美游戏原程序,c语言-perfect game program, language c
上数据结构时,自己用C语言做的小游戏,做得不好,请大家原谅。-structure on the data they used C language to the small games, done well, please forgive me.
大家都耍过文曲星中的猜数字的游戏吧 !! 最近我在学习C语言。写了个菜鸟的C语言的猜数字的游戏程序的原代码-rings off the viewing of the game! ! I recently learning C language. Wrote a birdie C language viewing of the games original code proceres
这是我在大学二年级学习C语言课程时,作为“练笔”而编写的一个小程序(当时在我眼里可却是一个大程序!)其主要特点有:1、正真做到了全中文界面(不需要UCDOS操作系支持) 2、大量的图形特技(如图像的显隐技术、图像穿插技术、多任务仿真技术等) 3、纯C语言打造(不含任何C++知识) 4、实现了街机“俄罗斯方块”绝大部分功能(如动画、声音、速度变化) 5、用户可根据自据的习惯自由地调整“游戏操作键” 6、方法独特,全部语句和技术都是我本人原创,没有参考过任何相关代码 7、防“跟踪调试”技术,防“版权篡改”技术 8、……-
这个程序是模仿Windows中的扫雷小游戏制作的,该程序只是实现了扫雷游戏的主体部分,诸如计分、升级部分都没有做。这个程序可以作为初学者学习C语言绘图和游戏的实例。 该程序在Turbo C2.0 下编译通过 由于扫雷游戏是用鼠标操作的,而Turbo C中提供的鼠标驱动程序在Windows xp下不可用,所以我随源程序提供了一个鼠标驱动的头文件,须将将该头文件复制到Turbo C2.0 的安装目录下的“include”文件夹中方可编译或运行,也可自行修改原文件使之包含该投文件。 注:该鼠标驱动程序是我在网上找到的,其出处我已无法考证,如果侵犯了作者的权利还请作者与我联系。 由于在我的电脑上Turbo C图形环境下显示数字会有问题(估计是系统问题),所以程序中雷周围的数字1-8我用a-h代替,看不顺眼的可以自己修改原程序。-
c语言 猜拳游戏的原代码就是这个 已经测试成功了呀-language of the original game is the code has been tested successfully ah
俄罗斯方块对战版c语言原代码。希望大家能喜欢。是比较简单的一个代码,游戏开发高手请指教。-Tetris screen version of the original C language code. Hope you will like. It is a relatively simple code, game development experts please advise.
用linuX 下的C语言 运用CURSES编写的俄罗斯方块游戏,很好,这个是本人原创,值得参考-linuX use the C language CURSES prepared by the Russian box game, well, this is the original, worthy of reference

⑹ 根据猜拳游戏规则,用C语言编程:A,B,C,D.(1)A>B,A<C,A>D(2)B>C,B>D(3)C<D

今和高了。

有点

⑺ C语言编写三局两胜的猜拳游戏编程

/*假设有A和B进行猜拳
'x'表示剪刀,'y'表示石头,'z'表示布
规则如下:
1、 石头 > 剪刀
2、 布 > 石头
3、 剪刀> 布
*/

#include <stdio.h>

#define WIN 1
#define LOSE -1
#define EQUAL 0

/*比赛规则函数*/
int game_rule(char a,char b)
{
switch(a)

case 'x':
{
switch(b)
case 'x':return EQUAL;
case 'y':return LOSE;
case 'z':return WIN;
}
case 'y':
{
switch(b)
case 'x':return WIN;
case 'y':return EQUAL;
case 'z':return LOSE;
}
case 'z':
{
switch(b)
case 'x':return LOSE;
case 'y':return WIN;
case 'z':return EQUAL;
}
}

/* main function*/
void main(void)
{
int ans;
int a = b = 0;
char A;
char B;

do
{
prinf("please input A:\n");
scanf("%c",&A);
getchar();
prinf("please input B:\n");
scanf("%c",&B);
getchar();
//有效性检查请自己加上
ans = game_rule(A,B);
if(ans==WIN)
{
a++;
prinf("A赢了%d局\n",a);
}
else if(ans==LOSE)
{
b++;
prinf("A赢了%d局\n",b);
}

if((a==2)||(b==2))
{
prinf("game over");
break;
}

}while(1);
}

热点内容
一起提醒对方密码修改是什么意思 发布:2025-01-02 20:46:07 浏览:968
放假解压 发布:2025-01-02 20:46:03 浏览:946
为什么数据老是断网安卓手机 发布:2025-01-02 20:45:23 浏览:227
多ip服务器如何实现域名 发布:2025-01-02 20:29:38 浏览:549
联网服务器1302什么意思 发布:2025-01-02 20:28:50 浏览:900
乐视手机相册在哪个文件夹 发布:2025-01-02 20:22:27 浏览:570
腾讯云服务器部署 发布:2025-01-02 20:18:04 浏览:508
如何挤进服务器选课 发布:2025-01-02 20:12:16 浏览:766
怎么设置安卓登陆注册 发布:2025-01-02 19:50:17 浏览:138
在线编译器python 发布:2025-01-02 19:50:17 浏览:697