python编写格斗游戏_设计并编写代码自动格斗类游戏
题目描述:
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编写格斗游戏_设计并编写代码自动格斗类游戏相关推荐
- python编写格斗游戏_设计并编写代码自动格斗类游戏。
1) 角色类CRole为基类: 构造函数.析构函数: 成员变量:头像.HP(血量).ATK(攻击力).DEF(防御力).Lv(等级),EXP(经验值): 成员函数:武器攻击.跳跃. 2)英雄类CHer ...
- 【三子棋小游戏的设计思路以及代码实现】
目录 一,设计思路 二, 代码实现 首先,欢迎各位点进我的文章.话不多说,正如标题一样,接下来,我来给大家讲解三子棋小游戏的设计思路以及代码实现. 一,设计思路 一. 大家应该都 ...
- 设计并编写代码自动格斗类游戏
题目描述: 1)角色类CRole为基类: 构造函数.析构函数: 成员变量:头像.HP(血量).ATK(攻击力).DEF(防御力).Lv(等级),EXP(经验值): 成员函数:武器攻击.跳跃. 2)英雄 ...
- vs python生成exe文件_使用VScode编写python程序并打包成.exe文件-文件夹变成exe
1. 下载vscode并安装 2. 配置Python环境 点击左下角的吃了图标,在弹出的菜单中选择extensions,在左上方搜索框内输入"Python",可以看到好多Pytho ...
- linux小型游戏系统设计,Linux平台下基于JAVA小游戏_设计文档.doc
Linux课程设计报告 课题名称:<Linux平台下基于java小游戏设计> 专 业:2011级计算机科学与技术 组 长:043佘清泉 组 员:007陈威达 008陈学仁 026赖华标 0 ...
- vb6编写用户权限_仅需三行代码,即可让Apache Shiro接管Swagger权限认证
有很多文章提到,在生产环境中需要关闭Swagger功能,防止系统资源泄露.今天,我结合自己开发过程中的经验,分享一个只需几行代码便可实现让Apache Shiro接管Swagger认证和授权的方法.如 ...
- python3.7魔塔游戏_基于Funcode平台的“火锅版魔塔”游戏开发与设计
2019 年第 2 期 信息与电脑 China Computer & Communication 软件开发与应用 基于 Funcode 平台的"火锅版魔塔"游戏开发与设计 ...
- python+unittest框架 UI自动化设计思路以及代码剖析,增加易用性
前言 学习UI自动化的同学都应该知道PO模式,PO共分为三层,分别是页面定位层,页面对象层,业务逻辑层. po模式有以下几个优点: 1.易读性好 2.扩展性高 3.复用性强 4.维护性好 5.代码冗余 ...
- 人体一机竞技格斗机器人_电竞火了 机器人格斗会是下一个风口吗?
和 Robot Wars 那种颇具破坏性的激烈格斗相比,工匠社宣传的机器人格斗要温和许多.玩家下载配套 App,再对机器人的格斗动作进行设计.编程,之后就能将 20 厘米高的桌面级机器人放入格斗场.机 ...
最新文章
- 安卓(android)建立项目时失败,出现Android Manifest.xml file missing几种解决方法?...
- 《王者荣耀》技术总监复盘回炉历程:没跨过这三座大山,就是另一款MOBA霸占市场了...
- 【转】【centos】启动网卡报错(Failed to start LSB: Bring up/down networking )解决办法总结...
- tomcat7 - 烫手山芋之热部署
- python学习-序列化对象(pickle)
- [react] 在使用react过程中你都踩过哪些坑?你是怎么填坑的?
- Linux下安装VIM编辑器,以及简单的VIM指令操作
- c++编写算法判断二叉树是否为完全二叉树_字节面试官:连这90道LeetCode算法题都不会也来面试?...
- Google AI “作恶”,4000 员工抗议,十余人失望辞职!
- 拓端tecdat|SARIMA,神经网络,RNN-LSTM,SARIMA和RNN组合方法预测COVID-19每日新增病例
- 鲁大师2014绿色版 v3.75.14.1058 免费版
- PLC与RobotStudio联合仿真调试——项目一
- drupal主题开发_开发人员降低了Drupal的进入门槛
- 2018.09.02【BZOJ2227】【ZJOI2011】看电影 (高精度)(组合数)
- 放牛娃谈堆排序---(为了说明白,我重新学习了如何说“人话”)
- 【ISCCC认证】WEB安全工程师认证介绍
- mysql主从配置duxi_做Mysql主从时,注意使用replicate_wild_do_table和replicate-wild-ignore-table...
- LayUI可选择可输入下拉框
- qq扫码认证登录php,PHP实现第四方QQ微信扫码登陆,不接入qq互联以及微信开发者平台...
- 详述 MIMIC 数据库 26张数据表(二)之 五种字典表