#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
#include<conio.h>
#define N 100

int n=0;

int Checktoseek(char name[]);//查找
void mainmenu();//菜单
void Register();//登记注册
void Showplayer();//显示当前人物数据
void Showallplayer();//显示所有人物数据
void Chooseopponent();//选择对手
void Chooseplayer(int i);//选择角色
void vs(int i,int j);//PK
void Attack(int i,int j);//攻击
void recovery(int i,int j);//防御
void Energy(int i,int j);//能量

struct Kof
{
char name[20];
int Hp;
int AP;
int Dp;
int Rp;
}player[N];

int main()
{
srand(unsigned(time(NULL)));
mainmenu();
}
void login()
{

}
void mainmenu()
{
while(1)
{
int x;
printf("\n");
printf("\n");
printf(" ***************************************************************\n");
printf(" *** ***\n");
printf(" *** ***\n");
printf(" *** 欢迎进入Kof ***\n");
printf(" *** ***\n");
printf(" *** ***\n");
printf(" ***************************************************************\n");
printf("\n\n\t\t\t\t\t=======选择项=======");
printf("\n\t\t\t\t\t||1----注册 ||\n");
printf("\t\t\t\t\t||2----查看玩家信息||\n");
printf("\t\t\t\t\t||3----查看自己信息||\n");
printf("\t\t\t\t\t||4----选择对手 ||\n");
printf("\t\t\t\t\t||5----结束 ||\n");
printf("\t\t\t\t\t=====================\n\n");
printf("\n\n请选择菜单:");
scanf("%d",&x);
if(x==5) break;
switch(x)
{
case 1:Register();break;
case 2:Showallplayer();break;
case 3:Showplayer();break;
case 4:Chooseopponent();break;
}
printf("\n\n\n\n\n按任意键继续:");
getch();
system("cls");
}
}
void Register()
{
char name[20];
printf("输入名称:");
fflush(stdin);
gets(name);
if(Checktoseek(name)==-1)
{
strcpy(player[n].name,name);
player[n].Hp=rand()%1000;
player[n].AP=rand()%(100+1)+50;
player[n].Dp=rand()%(10-5+2)+5;
player[n].Rp=rand()%(60+2)+60;
n++;
printf("人物创建成功\n");
}
else
{
Register();
}
}
void Showplayer()
{
char name[20];
printf("角色名:");
fflush(stdin);
gets(name);
int i=Checktoseek(name);

if(i!=-1)
{
printf("人物名称:%s\n",player[i].name);
printf("Hp:%d\n",player[i].Hp);
printf("Ap:%d\n",player[i].AP);
printf("Dp:%d\n",player[i].Dp);
printf("Rp:%d\n",player[i].Rp);
}
else
{
printf("请重新输入角色名");
Showplayer();

}

}

void Showallplayer()
{
printf("%-10s%-10s%-10s%-10s%-10s\n","Name","Hp","Ap","Dp","Rp");
for(int i=0;i<n;i++)
{
printf("%-10s%-10d%-10d%-10d%-10d\n",player[i].name,player[i].Hp,player[i].AP,player[i].Dp,player[i].Rp);
}
}

void Chooseopponent()
{
char name[20];
int i;
Showallplayer();
printf("你选择PK谁:");
fflush(stdin);
gets(name);

i=Checktoseek(name);
if(i!=-1)
{
Chooseplayer(i);
}
else
{
printf("你选择PK的人物找不到?\n");
Chooseopponent();
}
}

int Checktoseek(char name[])
{
for(int i=0;i<n;i++)
{
if(!strcmp(player[i].name,name))
{
return i;
}
}
return -1;
}

void Chooseplayer(int i)
{
char name[20];
int j;
printf("请你选择一个角色:");
fflush(stdin);
gets(name);
j=Checktoseek(name);
if(j!=-1 && j!=i)
{
vs(i,j);
}
else
{
Chooseplayer(i);
}
printf("=================================\n");
}
void vs(int i,int j)
{
int count=1;
while(player[i].Hp>0 && player[j].Hp>0)
{
printf("==================第%d局==================\n\n",count);
if(count%2==0)
{
Attack(i,j);
recovery(i,j);
Energy(i,j);
}
else
{
Attack(j,i);
recovery(i,j);
Energy(i,j);
}
count++;
_sleep(3344);
}
if(player[i].Hp>0)
{
printf("%s 获得了胜利 \n",player[i].name);
}
else
{
printf("%s 获得了胜利 \n",player[j].name);
}
printf("******************************\n");
}

void Attack(int i,int j)
{
int x;
int s;
x=rand()%5;
switch(x)
{
case 0:
printf("\n%s发出波动伤害%s\n",player[i].name,player[j].name);
s=rand()%100;
player[j].Hp-=s;
printf("%s受到%d点伤害\n\n",player[j].name,s);
break;
case 1:
printf("\n%s使用连招攻击%s\n",player[i].name,player[j].name);
s=rand()%100*2;
player[j].Hp-=s;
printf("%s受到%d点伤害\n\n",player[j].name,s);
break;
case 2:
printf("\n%s释放超杀技\n",player[i].name);
s=(rand()%100)*4;
player[j].Hp-=s;
printf("%s受到%d点伤害\n\n",player[j].name,s);
break;

}
}

void recovery(int i,int j)
{
int s;
int x;

s=rand()%3;
switch(s)
{
case 0:
printf("\n%s防御%s的攻击\n",player[i].name,player[j].name);
x=rand()%(10-5+2)+5;
player[i].Dp==x;
printf("%s抵挡%d点伤害\n\n",player[i].name,x);
break;
case 1:
printf("\n%s防御%s的攻击\n",player[j].name,player[i].name);
x=rand()%(10-5+2)+5;
player[j].Dp==x;
printf("%s抵挡%d点伤害\n\n",player[j].name,x);
break;

}
}
void Energy(int i,int j)
{
int x;
int s;
x=rand()%6;
switch(x)
{
case 0:
printf("\n%s大怒,使用超必杀技\n",player[i].name);
s=(rand()%100)*6;
player[j].Hp-=s;
printf("%s受到%d点伤害\n\n",player[j].name,s);
break;
case 1:
printf("\n%s大怒,使用超必杀技\n",player[j].name);
s=(rand()%100)*6;
player[i].Hp-=s;
printf("%s受到%d点伤害\n\n",player[i].name,s);
break;

}
}

转载于:https://www.cnblogs.com/yszhyhm/p/8969592.html

游戏系列~拳皇(7)相关推荐

  1. WPF编游戏系列 之四 用户控件

    在上一篇<WPF编游戏系列 之三 物品清单>中,对物品清单进行了演示,其中反复用到了同一组控件(如下图),而且 颜昌钢也指出在3.2.2中使用的C#代码过多,其实我在写这些代码时也有同感, ...

  2. C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):目录

    本系列教程的示例代码下载(感谢 银光中国 提供资源分流): 第一部分源码:WPFGameTutorial_PartI(1-20节) 第二部分源码:WPFGameTutorial_PartII(21-2 ...

  3. C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(二)让物体动起来②

    第二种方法,CompositionTarget动画,官方描述为:CompositionTarget对象可以根据每个帧回调来创建自定义动画.其实直接点,CompositionTarget创建的动画是基于 ...

  4. 【C++】2048游戏系列---优化模块第一稿【加载图片】

    [C++]2048游戏系列---优化模块第一稿[加载图片] (更新中--) 参考博客: https://blog.csdn.net/qq_39151563/article/details/104283 ...

  5. 什么样的恐怖才是真恐怖?由最近所看的一部电影以及最喜欢的游戏系列想到的。

    春节长假即将结束,想想已经有好久没更新自己的blog了,正在等Arsenal和Crystal Palace的比赛转播,也睡不着,就写写最近的一些感想吧. 这些天除了走亲访友.合家团聚.请客吃饭之外,也 ...

  6. HTML5开发 页游/手游动画及游戏系列教程(Game Tutorial):(一)物体动起来吧

    前言 所谓高手,也就是熟悉别人制定的游戏规则.并且能在规则内跳舞的人.(随笔,转自王哲的博客) 09年的时候,为了跳槽和兴趣,转型游戏行业,因此去网上找资料学习各种游戏相关的资料.也是缘分吧,看到了深 ...

  7. fcn从头开始_从头开始:简单游戏系列1-抓鱼

    fcn从头开始 Recently, I've decided to take a break from coding on IDE's and go back to the basics of exp ...

  8. C++桌面图标游戏系列之二【俄罗斯方块】

    最近写了一个C++桌面图标游戏系列之一[贪吃蛇]. https://blog.csdn.net/Yang9325/article/details/111031297 没想到还挺受欢迎,那么系列之二[俄 ...

  9. Laya官方不会告诉你的坑(微信小游戏系列)

    Laya官方不会告诉你的坑(微信小游戏系列) 使用laya2系列调试微信小游戏的时候, 发现了以下问题, 看了一圈官网也没提及, 所以记录一下供大家参考和讨论. 1.报错 ReferenceError ...

最新文章

  1. redis4.0.6集群部署(5.0.2版本更新补充)
  2. jqgrid自定义列表开发=》实现高级查询
  3. php html自动打开新页面大小,HTML_html 用超链接打开新窗口其可控制窗口属性,1、html超链接打开的窗口大小 - phpStudy...
  4. 第一章 操作系统引论
  5. 系统设计说明书案例_案例 | 太阳能+热泵枸杞烘干系统设计及经济性分析
  6. 40 个 SpringBoot 常用注解:让生产力爆表!
  7. mysql or走索引吗_加了索引,mysql查询就一定会用吗?
  8. linux etc/init 与etc/init.d的区别
  9. oracle 连接数_Oracle多租户数据库资源管理,就这么简单
  10. 吴恩达新书AI实战圣经《Machine Learning Yearning》中英文版分享
  11. UVALive - 7345 The Hypnotic Spirals 高等数学+几何知识
  12. 正弦电压有效值推导过程(为什么与频率无关)
  13. 太阳高度角方位角计算
  14. 西门子1200/1500系列PLC与安川CP-317系列PLC网口通讯
  15. Qt读写Excel--QXlsx设置字体格式、样式8
  16. 【应急响应】Linux下变种DDG挖矿应急处理总结
  17. PC端、手机端在线预览文档组件react-file-viewer与npm构建内存溢出
  18. 企业微信寄件审批教程
  19. 医院医生护士都不愿说的医学小常识,我终于查齐了。留着以后自己学习。什么都有...
  20. java重要代码词汇_java基础必备词汇

热门文章

  1. windows搜不到特定wifi
  2. 【1207】正三角形的外接圆面积
  3. 生产过程中计算机软件的确认,简述医疗器械生产过程确认
  4. 智能音箱:我是物联网入口;物联网:别闹了行吗?
  5. Linux学习——I2C-MPU6050驱动移植记录
  6. 普通USB2.0和USB OTGH和HSIC的USB区别
  7. 创意毕业答辩通用PPT模板
  8. C++大型项目中使用hpp和h文件代替cpp
  9. Hadoop系统化学习提纲
  10. spring+mybatis(Oracle的 round()+decode())值为.00的问题