结构体内容为 玩家名字 血量,攻击力,防御力

通过名字来计算出两个玩家各自的初始血量,攻击力,防御力

#include

#include

#include

#include

#include

typedef struct st

{

char name[20];

int hp;

int stk;

int fangyu;

}STU;

void set_color(int color)

{

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color);

}

void js(STU *p)

{

int i,s=0;

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

{

s += abs(p->name[i]);

}

p->hp = s % (200-150+1)+150;

p->stk = s % (50-30+1)+30;

p->fangyu = s%(5-1)%5;

}

int zhangdou(STU *p1, STU *p2)

{

int tstk; //保存p1的攻击力

int tfy; //保存p2的防御力

tstk = p1->stk;

tfy = p2->fangyu;

printf("[%s]向[%s]发起攻击--",p1->name, p2->name);

if (rand()%100 > 70)

{

set_color(4);

printf(" *暴击* ");

set_color(7);

tstk+=tstk/2;

}

if (rand()%100<10)

{

set_color(4);

printf(" *超级防御* ");

set_color(7);

tfy=tfy+5;

}

tstk-=tfy;

if (tstk < 0)

tstk=0;

p2->hp -= tstk;

if (p2->hp < 0)

{

p2->hp = 0;

}

printf("[%s]受到了%d点伤害并抵挡%d点伤害,HP剩余%d\n\n",p2->name, tstk, tfy, p2->hp);

if (p2->hp == 0)

{

return 1;

}

return 0;

}

main()

{

STU p1,p2,*p;

srand(time(NULL));

printf("输入两个玩家姓名:");

scanf("%s%s",p1.name, p2.name);

system("cls");

//计算hp和stk

js(&p1);

js(&p2);

printf("姓名: %s hp: %d 攻击力: %d 防御力: %d\n",p1.name,p1.hp,p1.stk, p1.fangyu);

printf("姓名: %s hp: %d 攻击力: %d 防御力: %d\n",p2.name,p2.hp,p2.stk, p2.fangyu);

//z战斗过程

while (1)

{

if (zhangdou(&p1, &p2) == 1)

{

set_color(3);

printf("[%s]",p1.name);

printf("胜利!\n");

set_color(7);

break;

}

Sleep(500);

if (zhangdou(&p2, &p1) == 1)

{

set_color(3);

printf("[%s]",p2.name);

printf("胜利!\n");

set_color(7);

break;

}

Sleep(500);

}

}

从文件中读取技能

#include

#include

#include

#include

#include

#include

typedef struct st

{

char name[20];

int hp;

int stk;

}STU;

typedef struct

{

char name[20];

int stk;

}JN;

void set_color(int color)

{

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color);

}

void js(STU *p)

{

int i,s=0;

for(i=0; i < strlen(p->name); i++)

{

s += abs(p->name[i]);

}

p->hp = s % (200-150+1)+150;

p->stk = s % (50-30+1)+30;

}

//初始化技能

int JN_init(JN jn1[100])

{

int k=0;

FILE *fp = NULL;

fp = fopen("E://aa//JN.txt","r");

if (fp == NULL)

{

printf("技能文档不存在");

exit(0);

}

while (1)

{

JN t;

if (feof(fp)!=0)

{

break;

}

fscanf(fp,"%s%d",t.name,t.stk);

jn1[k++]=t;

}

fclose(fp);

return k;

}

void zhangdou(STU *p1, STU *p2,JN *p3)

{

int p2hp;

printf("[%s]对[%s]发出%d攻击",p1->name,p2->name , p1->stk);

p2hp = p1->stk + p3->stk;

p2->hp -= p2hp;

printf("使出技能[%s]增加%d点伤害",p3->name, p3->stk);

if (p2->hp < 0)

p2->hp = 0;

printf("[%s]剩余血量%d\n",p2->name, p2->hp);

}

int main()

{

int i,k=0,t=0,t1,t2,c=0,jk=0,tk;

JN jn[100];

STU play[100],*p;

FILE *fp = NULL;

srand(time(NULL));

fp = fopen("e://aa//name.txt","r");

if (fp == NULL)

{

printf("玩家文档不存在!");

return 0;

}

//从文件中读取名字

while (1)

{

STU temp;

if (feof(fp) != 0)

{

break;

}

fscanf(fp,"%s",temp.name);

play[k++]=temp;

}

fclose(fp);

//计算hp和stk

for (i=0; i

{

js(&play[i]);

printf("姓名: %s hp: %d 攻击力: %d\n",play[i].name, play[i].hp, play[i].stk);

}

//读取技能文档

fp = NULL;

fp = fopen("E://aa//JN.txt","r");

if (fp == NULL)

{

printf("技能文件缺失");

return 0;

}

while (1)

{

JN Temp;

if (feof(fp)!=0)

break;

fscanf(fp,"%s%d",Temp.name, &Temp.stk);

jn[jk++] = Temp;

}

fclose(fp);

//z战斗过程

while (1)

{

t1=rand()%k;//k为玩家数

t2=rand()%k;//随机获取玩家id

tk=rand()%jk;//随机技能

if (t1 == t2)

continue;

//血量同时不为0才能战斗

if (play[t1].hp != 0 && play[t2].hp !=0)

zhangdou(&play[t1], &play[t2], &jn[tk]);

else

{

t=0;

for (i=0;i

{

if (play[i].hp != 0)

{

t++;

c=i;

}

}

if (t==1)

{

printf("胜利者:%s",play[c].name);

break;

}

}

Sleep(100);

}

return 0;

}

姓名大战c语言,c语言姓名大作战游戏相关推荐

  1. c语言球球半径,C/C++编程笔记:C语言开发球球大作战(源码分享),你想试试吗?...

    原标题:C/C++编程笔记:C语言开发球球大作战(源码分享),你想试试吗? 游戏背景 <球球大作战>是Superpop一款自主研du发的免费手机网络游戏. 以玩家间的实时互动PK产生游戏乐 ...

  2. html5小游戏 typescript,使用TypeScript和Canvas编写移动端贪吃蛇大作战游戏

    基本介绍 一款移动端贪吃蛇大作战游戏.(只支持移动端) 这是一个临近 deadline 的课设项目,为了方便地使用TS,我直接使用angular-cli生成了TypeScript的项目结构.如果你有好 ...

  3. c语言编程球球大作战,C/C++项目源码——球球大作战

    C/C++项目源码--球球大作战 这是一个球球大作战的小程序,能够运行,需要下载一个easyx库 初始产生一个小球,可以慢慢吃零食长大 游戏没有写完整,不能吃别的玩家(单机初始化产生的玩家) 有兴趣可 ...

  4. 【项目实战】轻松实现C/C++大作业:贪吃蛇大作战游戏!

    这是一个贪吃蛇大作战类游戏,修改特性为 AI 不互杀: 该程序有四个类:蛇基类 SnakeBase,玩家类 Player,AI 类,Game 类:SnakeBase 和 AI 均继承自 SnakeBa ...

  5. 原谅帽大作战游戏程序

    原谅帽大作战 制作人:崔帅宽 时间:2020.11.10 一.如何创建原谅帽大作战的窗体: (1)先创建一个原谅帽的类包,然后创建:游戏客户端GameClinet类. /* 游戏客户端 */ publ ...

  6. 面向对象版贪吃蛇大作战游戏创作

    贪吃蛇大作战 创作思路: 1.创建蛇头蛇身-----2.让蛇动起来-----3.随机投放食物-----4.吃掉创建的食物------5.判断游戏开始结束 前期准备工作: 创建一个宽1200 高800的 ...

  7. Python—飞机大作战游戏(附源代码及素材)

    目录 过程说明: 主函数 键盘控制 创建类 01.飞机基类 02.子弹基类 03. Hero飞机类 04.enemy飞机类 源代码及素材 过程说明: 应用到的库:         import pyg ...

  8. 球球大作战c语言源代码,球球大作战,源码分享

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include "qiu.h" int main() { initgraph(800, 600); mciSendString(&q ...

  9. 贪吃蛇大作战游戏——C语言

    是你想要的贪吃蛇吗? 快来看看吧~ #define _CRT_SECURE_NO_WARNINGS#include <stdio.h> #include <string.h> ...

  10. java写潜艇大作战游戏_基于Java实现的潜艇大战游戏

    一.需求分析 本次游戏课程设计小组成员团队合作的方式,通过游戏总体分析设计,场景画面的绘制,游戏事件的处理,游戏核心算法的分析实现,游戏的碰撞检测,游戏的反复测试,游戏的打包运行等一个完整的游戏设计编 ...

最新文章

  1. android shape的使用
  2. 12.3、Libgdx的图像之截屏
  3. 剖析nodejs的事件循环
  4. Ajax请求Session超时的解决办法:拦截器 + 封装jquery的post方法
  5. SpringCloud教程-注册中心(Consul)(SpringCloud版本Greenwich.SR4)
  6. EF Core 生成数据库
  7. jquery --- 监听input框失效
  8. python处理json数据_python处理json格式的数据
  9. Celery多个定时任务使用RabbitMQ,Queue冲突解决
  10. python处理txt文件的一种情况
  11. java执行 scp_Java执行SSH/SCP之JSch
  12. access升级mysql_将现有的Access数据库升级为SQL
  13. Flink CDC 系列 - 同步 MySQL 分库分表,构建 Iceberg 实时数据湖
  14. Python基础之键盘操作
  15. 解决linux kernel 提交gerrit时,运行checkpatch.pl产生的xxxx64_defconfig not generated by savedefconfig问题
  16. mysql mpm_Zabbix和MPM监控MySQL
  17. 【微信小程序】问卷调查/答题类小程序实现
  18. 智能快递柜在小区的应用
  19. JAVA基础之设计模式和枚举
  20. 以太坊链上的二层(layer2)扩容方案Matic(Polygon)

热门文章

  1. 微信小游戏 资源下载解压
  2. linux非root用户添加rzsz,linux RZSZ RZSZ 安装
  3. breakall lisp文件_cad中pl线画的粗线转线框后,能转到su里封面么,求解
  4. 广州坐标系转换大地2000_城市坐标系转换2000国家大地坐标系分析
  5. 整理iOS9适配中出现的坑(图文)
  6. 计算机网络课程设计 学校园网设计
  7. VLFeat中SIFT特征点检测
  8. 前端开发【WEUI框架H5网页开发】—— WEUI+Node.js+fis3 项目开发
  9. 用python处理DEA模型--CCR
  10. PaddleOCR 手写识别模型:标注到训练