题目描述:

1)角色类CRole为基类:

构造函数、析构函数;

成员变量:头像、HP(血量)、ATK(攻击力)、DEF(防御力)、Lv(等级),EXP(经验值);

成员函数:武器攻击、跳跃。

2)英雄类CHero继承于CRole类

构造函数、析构函数;

英雄类新增技能踢腿(成员函数)、抱摔(成员函数),给对方造成伤害具体值由学员自己进行设定;

3)敌人类CEnemy继承于CRole类

构造函数、析构函数;

新增技能劈掌(成员函数)、连环腿(成员函数),给对方造成伤害值由学员自己进行设定;

4)战斗类CBattle

构造函数、析构函数及其他成员函数

双方HP(血量)初始值为100,开始战斗以后,英雄和敌人轮流攻击对方,掉血量=攻击方技能伤害值+ATK(攻击方的攻击力)-DEF(防御方的防御力),当一方血量为0时,战斗结束,玩家经验值增加相应点数,当经验等级达一定时候,玩家等级提升。

“game.h”

#pragma once

#include

#include

//角色类

class CRole{

public:

std::string sculpture;//头像

int HP;//血量

int ATK;//攻击力

int DEF;//防御力

int Lv;//等级

int EXP;//经验

public:

CRole() {};//默认构造函数

CRole(const std::string sculpture,int HP,int ATK,int DEF,int Lv,int EXP);

~CRole();

void WeaponAttack();//武器攻击

void Jump();//跳跃

void show();

public:

int wa_ATK;

};

//英雄类

class CHero :public CRole {

public:

CHero() {};//默认构造函数

CHero(const std::string sculpture, int HP, int ATK, int DEF, int Lv, int EXP);

~CHero();//析构函数

void Kicking();//踢腿

void Wresting();//抱摔

public:

int k_ATK;//踢腿攻击力

int w_ATK;//抱摔攻击力

};

//敌人类

class CEnemy:public CRole {

public:

CEnemy() {};//默认构造函数

CEnemy(const std::string sculpture, int HP, int ATK, int DEF, int Lv, int EXP);

~CEnemy();//析构函数

void Chopping_Palm();//劈掌

void Serial_Leg();//连环腿

public:

int p_ATK;//劈掌攻击力

int s_ATK;//连环腿攻击力

};

//战斗类

class CBattle :public CRole {

public:

CBattle();//构造函数

~CBattle();//析构函数

void ready(CHero &obj1, CEnemy &obj2);//战斗准备函数

void fighting(CHero obj1, CEnemy obj2);//战斗函数

};

"game.cpp"

#include"pch.h"

#include"game.h"

#include

#include

#include

//角色类——构造函数

CRole::CRole(const std::string sculpture, int HP, int ATK, int DEF, int Lv, int EXP) {

this->sculpture = sculpture;

this->HP = HP;

this->ATK = ATK;

this->DEF = DEF;

this->Lv = Lv;

this->EXP = EXP;

}

void CRole::show() {

std::cout << "角色:" << this->sculpture << " 血量:" << this->HP << " 攻击力:"

<< this->ATK << " 防御力:" << this->DEF << " 等级:" << this->Lv << " 经验:" << this->EXP << std::endl;

}

//角色类——析构函数

CRole::~CRole(){

}

//角色类——武器攻击

void CRole::WeaponAttack() {

wa_ATK =10;

}

//角色类——跳跃

void CRole::Jump() {

std::cout << "miss" << std::endl;

}

//英雄类——构造函数

CHero::CHero(const std::string sculpture, int HP, int ATK, int DEF, int Lv, int EXP)

:CRole(sculpture,HP,ATK,DEF,Lv,EXP)

{

}

//英雄类——析构函数

CHero::~CHero() {

}

//英雄类——踢腿

void CHero::Kicking() {

k_ATK = 10;

}

//英雄类——抱摔

void CHero::Wresting() {

w_ATK = 15;

}

//敌人类——构造函数

CEnemy::CEnemy(const std::string sculpture, int HP, int ATK, int DEF, int Lv, int EXP)

:CRole(sculpture, HP, ATK, DEF, Lv, EXP)

{

}

//敌人类——析构函数

CEnemy::~CEnemy() {

}

//敌人类——劈掌

void CEnemy::Chopping_Palm() {

p_ATK = 10;

}

//敌人类——连环腿

void CEnemy::Serial_Leg() {

s_ATK = 16;

}

//战斗类——构造函数

CBattle::CBattle() {

std::cout << "自动格斗小游戏" << std::endl;

}

//战斗类——准备函数

void CBattle::ready(CHero &obj1, CEnemy &obj2){

std::cout << "战斗双方" << std::endl;

obj1.show();

obj2.show();

std::cout << "准备战斗" << std::endl;

for (int i = 3;i > 0;i--) {

std::cout << i << std::endl;

Sleep(1000);

}

std::cout << "战斗开始" << std::endl;

Sleep(1000);

}

//战斗类——析构函数

CBattle::~CBattle() {

}

//战斗类——格斗函数

void CBattle::fighting(CHero obj1, CEnemy obj2) {

srand((unsigned)time(0));

int Blood_Loss;

int temp, temp1;

int t = 1;

//掉血量=攻击方技能伤害+ATK(攻击方的攻击力)-防御方的防御力DEF

while (obj1.HP > 0 && obj2.HP > 0) {

std::cout << "第" << t << "回合" << std::endl;

temp = rand() % (3 - 0 + 1) + 0;//随机生成攻击类型

temp1 = rand() % (2 - 0 + 1) + 0;//随机产生跳跃躲避攻击,三分之一的概率触发跳跃闪避

if (t % 2 == 1) {

switch (temp) {

case 0://普通攻击

if (temp1 == 1) {

obj2.Jump();

std::cout<< obj1.sculpture << "对" << obj2.sculpture << "使出的普通攻击被" << obj2.sculpture << "跳跃躲避了" << std::endl;

}

else {

Blood_Loss = obj1.ATK - obj2.DEF;//掉血量

obj2.HP -= Blood_Loss;//obj2剩余血量

std::cout << obj1.sculpture << "使出普通攻击对" << obj2.sculpture << "造成了" << Blood_Loss << "点伤害" << std::endl;

}

break;

case 1:

if (temp1 == 1) {//武器攻击

obj2.Jump();

std::cout << obj1.sculpture << "对" << obj2.sculpture << "使出的武器攻击被" << obj2.sculpture << "跳跃躲避了" << std::endl;

}

else {

obj1.WeaponAttack();

Blood_Loss = obj1.ATK + obj1.wa_ATK - obj2.DEF;

obj2.HP -= Blood_Loss;

std::cout << obj1.sculpture << "使用武器对" << obj2.sculpture << "造成了" << Blood_Loss << "点伤害" << std::endl;

}

break;

case 2:

if (temp1 == 1) {//踢腿攻击

obj2.Jump();

std::cout << obj1.sculpture << "对" << obj2.sculpture << "使出踢腿攻击被" << obj2.sculpture << "跳跃躲避了" << std::endl;

}

else {

obj1.Kicking();

Blood_Loss = obj1.ATK + obj1.k_ATK - obj2.DEF;

obj2.HP -= Blood_Loss;

std::cout << obj1.sculpture << "使用踢腿对" << obj2.sculpture << "造成了" << Blood_Loss << "点伤害" << std::endl;

}

break;

case 3:

if (temp1 == 1) {//抱摔攻击

obj2.Jump();

std::cout << obj1.sculpture << "对" << obj2.sculpture << "使出抱摔攻击被" << obj2.sculpture << "跳跃躲避了" << std::endl;

}

else {

obj1.Wresting();//抱摔

Blood_Loss = obj1.ATK + obj1.w_ATK - obj2.DEF;

obj2.HP -= Blood_Loss;

std::cout << obj1.sculpture << "使用抱摔对" << obj2.sculpture << "造成了" << Blood_Loss << "点伤害" << std::endl;

}

break;

}

}

if (t % 2 == 0) {

switch (temp) {

case 0://普通攻击

if (temp1 == 1) {

obj1.Jump();

std::cout << obj2.sculpture << "对" << obj1.sculpture << "使出的普通攻击被" << obj1.sculpture << "跳跃躲避了" << std::endl;

}

else {

Blood_Loss = obj2.ATK - obj1.DEF;//掉血量

obj1.HP -= Blood_Loss;//obj2剩余血量

std::cout << obj2.sculpture << "使出普通攻击对" << obj1.sculpture << "造成了" << Blood_Loss << "点伤害" << std::endl;

}

break;

case 1:

if (temp1 == 1) {//武器攻击

obj1.Jump();

std::cout << obj2.sculpture << "对" << obj1.sculpture << "使出的武器攻击被" << obj1.sculpture << "跳跃躲避了" << std::endl;

}

else {

obj2.WeaponAttack();

Blood_Loss = obj2.ATK + obj2.wa_ATK - obj1.DEF;

obj1.HP -= Blood_Loss;

std::cout << obj2.sculpture << "使用武器对" << obj1.sculpture << "造成了" << Blood_Loss << "点伤害" << std::endl;

}

break;

case 2:

if (temp1 == 1) {//劈掌攻击

obj1.Jump();

std::cout << obj2.sculpture << "对" << obj1.sculpture << "使出的劈掌攻击被" << obj1.sculpture << "跳跃躲避了" << std::endl;

}

else {

obj2.Chopping_Palm();//劈掌

Blood_Loss = obj2.ATK + obj2.p_ATK - obj1.DEF;

obj1.HP -= Blood_Loss;

std::cout << obj2.sculpture << "使用劈掌对" << obj1.sculpture << "造成了" << Blood_Loss << "点伤害" << std::endl;

}

break;

case 3:

if (temp1 == 1) {//连环腿攻击

obj1.Jump();

std::cout << obj2.sculpture << "对" << obj1.sculpture << "使出的连环腿攻击被" << obj1.sculpture << "跳跃躲避了" << std::endl;

}

else {

obj2.Serial_Leg();//连环腿

Blood_Loss = obj2.ATK + obj2.s_ATK - obj1.DEF;

obj1.HP -= Blood_Loss;

std::cout << obj1.sculpture << "使用连环腿对" << obj2.sculpture << "造成了" << Blood_Loss << "点伤害" << std::endl;

}

break;

}

}

t++;

}

std::cout << std::endl<

if (obj1.HP > 0) {

int exp;

exp = obj2.Lv * 10;

obj1.EXP += exp;

std::cout << obj2.sculpture << "死亡,";

std::cout << obj1.sculpture << "胜利!获得" << exp << "经验,目前经验值为:" << obj1.EXP << std::endl;

}

if (obj2.HP > 0) {

int exp;

exp = obj1.Lv * 5;

obj2.EXP += exp;

std::cout << obj1.sculpture << "死亡,";

std::cout << obj2.sculpture << "胜利!获得" << exp << "经验,目前经验值为:" << obj2.EXP << std::endl;

}

}

"main.cpp"

// FightingGame.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。

//

#include "pch.h"

#include"game.h"

#include

#include

#include

#include

int main()

{

//创建普通角色

CRole Ordy_character1("村民1",100,3,5,1,0);

CRole Ordy_character2("村民2",100,3,6,1,20);

CRole Ordy_character3("村民3", 100,4,9,3,100);

//创建英雄角色

CHero Hero1("张飞", 100, 19, 5, 1, 0);

CHero Hero2("刘备", 100, 18, 5, 1, 0);

CHero Hero3("关羽", 100, 20, 5, 1, 0);

//创建敌人角色

CEnemy enemy1("小黄巾1",100,16,3,3,100);

CEnemy enemy2("小黄巾2",100,16,3,3,100);

CEnemy enemy3("小黄巾3", 100, 16, 3, 3, 100);

/*std::cout << "战斗双方" << std::endl;

Ordy_character1.show();

Hero1.show();*/

CBattle battle1;

battle1.ready(Hero1, enemy1);

battle1.fighting(Hero1, enemy1);

}

运行结果:

python编写格斗游戏_设计并编写代码自动格斗类游戏相关推荐

  1. python编写格斗游戏_设计并编写代码自动格斗类游戏。

    1) 角色类CRole为基类: 构造函数.析构函数: 成员变量:头像.HP(血量).ATK(攻击力).DEF(防御力).Lv(等级),EXP(经验值): 成员函数:武器攻击.跳跃. 2)英雄类CHer ...

  2. 【三子棋小游戏的设计思路以及代码实现】

    目录 一,设计思路 二, 代码实现 首先,欢迎各位点进我的文章.话不多说,正如标题一样,接下来,我来给大家讲解三子棋小游戏的设计思路以及代码实现.            一,设计思路 一. 大家应该都 ...

  3. 设计并编写代码自动格斗类游戏

    题目描述: 1)角色类CRole为基类: 构造函数.析构函数: 成员变量:头像.HP(血量).ATK(攻击力).DEF(防御力).Lv(等级),EXP(经验值): 成员函数:武器攻击.跳跃. 2)英雄 ...

  4. vs python生成exe文件_使用VScode编写python程序并打包成.exe文件-文件夹变成exe

    1. 下载vscode并安装 2. 配置Python环境 点击左下角的吃了图标,在弹出的菜单中选择extensions,在左上方搜索框内输入"Python",可以看到好多Pytho ...

  5. linux小型游戏系统设计,Linux平台下基于JAVA小游戏_设计文档.doc

    Linux课程设计报告 课题名称:<Linux平台下基于java小游戏设计> 专 业:2011级计算机科学与技术 组 长:043佘清泉 组 员:007陈威达 008陈学仁 026赖华标 0 ...

  6. vb6编写用户权限_仅需三行代码,即可让Apache Shiro接管Swagger权限认证

    有很多文章提到,在生产环境中需要关闭Swagger功能,防止系统资源泄露.今天,我结合自己开发过程中的经验,分享一个只需几行代码便可实现让Apache Shiro接管Swagger认证和授权的方法.如 ...

  7. python3.7魔塔游戏_基于Funcode平台的“火锅版魔塔”游戏开发与设计

    2019 年第 2 期 信息与电脑 China Computer & Communication 软件开发与应用 基于 Funcode 平台的"火锅版魔塔"游戏开发与设计 ...

  8. python+unittest框架 UI自动化设计思路以及代码剖析,增加易用性

    前言 学习UI自动化的同学都应该知道PO模式,PO共分为三层,分别是页面定位层,页面对象层,业务逻辑层. po模式有以下几个优点: 1.易读性好 2.扩展性高 3.复用性强 4.维护性好 5.代码冗余 ...

  9. 人体一机竞技格斗机器人_电竞火了 机器人格斗会是下一个风口吗?

    和 Robot Wars 那种颇具破坏性的激烈格斗相比,工匠社宣传的机器人格斗要温和许多.玩家下载配套 App,再对机器人的格斗动作进行设计.编程,之后就能将 20 厘米高的桌面级机器人放入格斗场.机 ...

最新文章

  1. 安卓(android)建立项目时失败,出现Android Manifest.xml file missing几种解决方法?...
  2. 《王者荣耀》技术总监复盘回炉历程:没跨过这三座大山,就是另一款MOBA霸占市场了...
  3. 【转】【centos】启动网卡报错(Failed to start LSB: Bring up/down networking )解决办法总结...
  4. tomcat7 - 烫手山芋之热部署
  5. python学习-序列化对象(pickle)
  6. [react] 在使用react过程中你都踩过哪些坑?你是怎么填坑的?
  7. Linux下安装VIM编辑器,以及简单的VIM指令操作
  8. c++编写算法判断二叉树是否为完全二叉树_字节面试官:连这90道LeetCode算法题都不会也来面试?...
  9. Google AI “作恶”,4000 员工抗议,十余人失望辞职!
  10. 拓端tecdat|SARIMA,神经网络,RNN-LSTM,SARIMA和RNN组合方法预测COVID-19每日新增病例
  11. 鲁大师2014绿色版 v3.75.14.1058 免费版
  12. PLC与RobotStudio联合仿真调试——项目一
  13. drupal主题开发_开发人员降低了Drupal的进入门槛
  14. 2018.09.02【BZOJ2227】【ZJOI2011】看电影 (高精度)(组合数)
  15. 放牛娃谈堆排序---(为了说明白,我重新学习了如何说“人话”)
  16. 【ISCCC认证】WEB安全工程师认证介绍
  17. mysql主从配置duxi_做Mysql主从时,注意使用replicate_wild_do_table和replicate-wild-ignore-table...
  18. LayUI可选择可输入下拉框
  19. qq扫码认证登录php,PHP实现第四方QQ微信扫码登陆,不接入qq互联以及微信开发者平台...
  20. 详述 MIMIC 数据库 26张数据表(二)之 五种字典表

热门文章

  1. 3dmax导入Sketchup 模型位置错乱的解决方法
  2. 买不起的网红奶茶为何不赚钱?
  3. python爬虫之字体反爬虫
  4. Android LCD
  5. 记录下Android RecyclerView的使用
  6. 数字经济时代,大数据产业将呈现持续增长趋势
  7. Shell编程之函数与数组
  8. JS商品足迹案例代码
  9. gazebo11下uuv_simulator的编译
  10. 小红书爆文怎么打造?原来零经验也能写出爆文