OJ第三批——Problem T: P4 游戏中的Human角色

格斗游戏,每个游戏角色的姓名,血量,都不相同,在选定人物的时候(new对象的时候),这些信息就应该被确定下来。 阅读详情

问题及代码:

Problem T: P4 游戏中的Human角色

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 449   Solved: 270
[ Submit][ Status][ Web Board]

Description

在一个平面打斗游戏中,任何的角色(Role)都有血量(blood)和位置loc(此处loc是Location类的实例)属性。有了Role类,可以派生出不同的角色,如人、神仙、怪兽等。如下程序中,定义了Location类和Role类,人类(Human)中新增了姓名和攻击力数据成员,请为Human类设计成员函数,并实现Role类中的moveTo和addBlood两个成员函数。
请在begin和end中间写下需要的代码。你只能编辑并提交begin和end之间的代码。
#include <iostream>
using namespace std;
class Location
{
private:
    int x, y;
public:
    Location(int a, int b):x(a),y(b) {}
    int getX(){return x;}
    int getY(){return y;}
    void setXY(int a,int b) {x=a;y=b;};  //设置位置坐标
};
class Role
{
public:
    Role(int rblood, int rx, int ry):blood(rblood),loc(rx,ry) {}
    void moveTo(int rx, int ry);  //移动到(rx, ty)处,要改变loc的值
    void addBlood(int b); //增加血量,参数为负时,代表减少
protected:
    int blood;
    Location loc;
};
void Role::moveTo(int rx, int ry)
{
loc.setXY(rx,ry);
}
void Role::addBlood(int b)
{
blood+=b;
}
//************* begin *****************
class Human: public Role
{
public:
private:
    string name;  // 姓名
    int attack;   // 攻击力
};
//************* end *****************
int main()
{
    string name;
    int att, blood, x, y;
    cin>>name>>att>>blood>>x>>y;
    Human hum(name,att,blood,x,y); //人name的攻击力att,血量blood,在(x,y)处
    hum.show();
    int incAtt, incBlood, newx, newy ;
    cin>>incAtt;
    cin>>incBlood;
    cin>>newx>>newy;
    hum.addAttack(incAtt);  //攻击力增加incAtt
    hum.addBlood(incBlood); //血量增加incBlood
    hum.moveTo(newx,newy);  //人移到了(news,newy)处
    hum.show();
    return 0;
}

Input

第一行:名字 血量 攻击力 位置,其中位置处是两个整数,代表平面x、y坐标
第二行:增加的攻击力
第三行:要增加的血量
第四行:新位置,用两个整数代表
输入的各部分之间用空格隔开

Output

分别用两行显示游戏角色的初始状态和调整参数后的状态
如“Avanda has 500 attack and 1000 blood in (4,3)”表示Avanda有500攻击力1000血量,在(4,3)位置处

Sample Input

Avanda 500 1000 4 3
-300
200
2 5

Sample Output

Avanda has 500 attack and 1000 blood in (4,3)
Avanda has 200 attack and 1200 blood in (2,5)

HINT

 

 

#include <iostream>
using namespace std;
class Location
{
private:
    int x, y;
public:
    Location(int a, int b):x(a),y(b) {}
    int getX()
    {
        return x;
    }
    int getY()
    {
        return y;
    }
    void setXY(int a,int b)
    {
        x=a;
        y=b;
    };  //设置位置坐标
};

class Role
{
public:
    Role(int rblood, int rx, int ry):blood(rblood),loc(rx,ry) {}
    void moveTo(int rx, int ry);  //移动到(rx, ty)处,要改变loc的值
    void addBlood(int b); //增加血量,参数为负时,代表减少
protected:
    int blood;
    Location loc;
};

void Role::moveTo(int rx, int ry)
{
    loc.setXY(rx,ry);
}

void Role::addBlood(int b)
{
    blood+=b;
}
//************* begin *****************
class Human: public Role,public Location
{
public:
    Human(string na,int att,int rblood,int rx,int ry) :Role(rblood,rx,ry),Location(rx,ry),name(na),attack(att) {}
    void show();
    void addAttack(int n);
    void addBlood(int m);
    void moveTo(int rx,int ry);
private:
    string name;  // 姓名
    int attack;   // 攻击力
};

void Human::addAttack(int n)
{
    attack+=n;
}

void Human::addBlood(int m)
{
    blood+=m;
}

void Human::show()
{
   cout<<name<<" has "<<attack<<" attack and "<<blood<<" blood in ("<<Location::getX()<<","<<Location::getY()<<")"<<endl;
}

void Human::moveTo(int rx,int ry)
{
   Location::setXY(rx,ry);
}
//************* end *****************
int main()
{
    string name;
    int att, blood, x, y;
    cin>>name>>att>>blood>>x>>y;
    Human hum(name,att,blood,x,y); //人name的攻击力att,血量blood,在(x,y)处
    hum.show();
    int incAtt, incBlood, newx, newy ;
    cin>>incAtt;
    cin>>incBlood;
    cin>>newx>>newy;
    hum.addAttack(incAtt);  //攻击力增加incAtt
    hum.addBlood(incBlood); //血量增加incBlood
    hum.moveTo(newx,newy);  //人移到了(news,newy)处
    hum.show();
    return 0;
}


 

运行结果:

第三周 程序阅读 (2)利用指针访问私有数据成员 class Test { private: int x,y; public: void setX(int a) { x=a; } void setY(int b) { y=b; } void getXY(int *px, int *py) { 阅读详情

相关推荐

零差云控关节模组:EtherCAT+preempt-RT实现微秒级同步

关节模组是协作机器人、外骨骼与高精度服务机器人的核心执行单元,其性能瓶颈常在于多轴运动的时序一致性与实时闭环能力。实现‘零差’同步依赖于确定性通信(如EtherCAT)与硬实时操作系统支持(如Linux preempt-RT),前者保障指令与状态在微秒级时间戳下全局对齐,后者消除内核调度抖动,使PID控制、电流采样、编码器反馈等关键路径具备纳秒级可预测性。技术价值体现在相位偏差<±0.01°、端到端控制周期稳定1ms、连续运行温漂<±1.2℃等工程指标,广泛应用于力控装配、康复训练、远程遥操作等对动态精度与

weixin_34192816的博客 1198

【c++】内联成员函数和重载成员函数|构造函数

内联成员函数 inline+成员函数 整个函数体出现在类定义内部 class B{ //inline+成员函数 inline void func1(); //整个函数体出现在类定义内部 void func2(){ }; }; void B::func1(){} 成员函数的重载以及参数缺省 重载成员函数 成员函数带缺省参数 class Location{ private: int x, y; public: void init(int x = 0, int y = 0); vo

mathilda33的博客 329

Proteus仿真实战:基于IIC驱动SSD1306的0.96英寸OLED显示方案解析

本文详细解析了在Proteus仿真环境中基于IIC驱动SSD1306的0.96英寸OLED显示方案。从硬件搭建、IIC接口连接、软件驱动移植到常见问题排查,提供了全面的实战指导,帮助开发者快速实现OLED显示功能并优化性能。

weixin_28724661的博客 772

YTU-OJ-P4 游戏中的Human角色

Problem T: P4 游戏中的Human角色 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 292  Solved: 177 [Submit][Status][Web Board] Description 在一个平面打斗游戏中,任何的角色(Role)都有血量(blood)和位置loc(此处loc是Location类的实例

Some. 1292

FISCO-BCOS配置及使用控制台

如果因为网络问题长时间无法下载,请尝试:curl -#LO https://gitee.com/FISCO-BCOS/console/raw/master-2.0/tools/download_console.sh && bash download_console.sh。为了可以更加方便快捷,所以HelloWorld合约已经被内置了,位于控制台下面的contracts/solidity/HelloWorld.sol。用于获取和设置name的值,合约代码如下。部署成功会返回合约地址。

qq_51562644的博客 832

【C语言学习疑难杂症】第20期:0x00007FF7F2821964处引发的异常0xC0000005写入位置 0x0000000000000

检查代码中是否存在野指针访问的情况,确保在进行写入操作之前,内存已经被正确分配或初始化,并且在使用完毕后进行了正确的释放。空指针访问:代码尝试在空指针地址(0x0000000000000000)处进行写入操作,导致访问冲突。检查代码中是否存在数组越界的情况,确保在进行写入操作之前,数组的索引值在合法范围内。检查代码中是否存在空指针访问的情况,确保在进行写入操作之前,指针已经被正确初始化。野指针访问:代码尝试在已释放或未初始化的内存地址进行写入操作,导致访问冲突。

学无止境 828

结构型设计模式

结构设计模式的典型例题!

weixin_62540487的博客 3480

超级详细的GNS3最新版3-2.2.50安装配置教程,网工速度收藏!

你好,这里是网络技术联盟站,我是瑞哥。上周给大家分享了GNS3安装包。周末的时候有小伙伴在安装的时候遇到了一些问题,瑞哥周末特地从头安装了一下GNS3,今天给大家出个安装的教程,每一步的步骤我都截图了下来,希望对大家有所帮助!

网络技术联盟站 1109

《程序设计实习》之【类和对象初探】

面向对象的程序设计方法 从客观事物抽象出来的例子 类成员的可访问范围 内联成员函数和重载成员函数 构造函数 面向对象的程序设计方法 类的定义 class 类名 { 访问范围说明符: 成员变量1 成员变量2 … 成员函数声明1 成员函数声明2 访问范围说明符: ...

beashaper_的博客 354

Python 爬虫实战:赛事分析平台构建与比赛数据抓取

在体育赛事日益丰富的今天,对比赛数据的收集与分析对于运动员、教练团队以及体育爱好者都具有重要意义。通过构建一个赛事分析平台,我们可以系统地抓取、整理和展示各类比赛数据,为用户提供全面的赛事洞察。本文将深入讲解如何利用 Python 爬虫技术实现这一平台的构建,涵盖从目标网站分析到数据可视化展示的全过程。

u014481728的博客 3180

第14.10章 高翔博士最新开源框架Lightning-LM源码解读(十):在线定位run_loc_online涉及到的核心模块总结

本文对Lightning-LM激光SLAM定位框架进行了全面剖析。该框架是一个轻量高效的激光雷达建图与定位系统,支持3D SLAM、动态图层管理等功能。文章首先介绍了项目概况和源码结构,包括核心模块如定位系统(loc_system)、激光匹配(lidar_loc)和位姿图优化(pose_graph)等。接着详细解析了各模块的关键函数和运行流程,如数据接收处理、NDT匹配和位姿优化等。最后总结了学习该框架所需的C++知识要点,包括智能指针、多线程编程等现代C++特性。该分析为SLAM开发者提供了实用的架构参考

行知SLAM 801

YTU OJ 2635 Problem C P4 游戏中的Human角色

题目描述 在一个平面打斗游戏中,任何的角色(Role)都有血量(blood)和位置loc(此处loc是Location类的实例)属性。有了Role类,可以派生出不同的角色,如人、神仙、怪兽等。如下程序中,定义了Location类和Role类,人类(Human)中新增了姓名和攻击力数据成员,请为Human类设计成员函数,并实现Role类中的moveTo和addBlood两个成员函数。 请在begin和end中间写下需要的代码。你只能编辑并提交begin和end之间的代码。 #include <iostr

weixin_51273276的博客 262

【信息科学与工程学】【物理/化学科学和工程技术】第八篇 光学07

对于光源-探测器距离 ρ, 稳态漫反射率 R(ρ) ≈ (1/(4π)) [ z₀ (μ_eff + 1/r₁) exp(-μ_eff r₁)/r₁² + (z₀ + 2z_b) (μ_eff + 1/r₂) exp(-μ_eff r₂)/r₂² ], 其中 μ_eff = √(3μ_a(μ_a+μ_s’)), z₀=1/μ_s’, z_b 与边界条件有关。通过测量光纤各点的布里渊频移 ν_B(z) 来得到应变/温度分布:Δν_B(z) = C_ν,ε Δε(z) + C_ν,T ΔT(z)。

weixin_49199313的博客 330

13. 类和对象基础

13.1 结构化程序设计和面向对象程序设计 1)C语言的结构化程序设计 (1)程序 = 数据结构 + 算法 (2)程序由全局变量以及众多相互调用的函数组成 (3)算法以函数的形式存在,用于对数据结构进行操作 2)结构化程序设计的不足 (1)结构化程序设计中,函数和其所操作的数据结构没有直观的联系 (2)随着程序规模的增大,程序逐渐难以理解,很难一下子看出来 a)某个数据结构到底那些函数可以操作它...

weixin_44189610的博客 588

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

C++的类和对象

类成员的可访问范围 类成员的函数内部访问范围: 当前对象的全部属性、函数; 同类其他对象的全部属性和函数。 类的成员函数以外的地方,只能访问该类对象的公有成员。 这里是引用 #include <iostream> #include <cstring> using namespace std;//声明引用的标准输入和输出库(std) class CEmpl...

weixin_42648229的博客 504

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Java技能测试试卷二及答案

Java技能测试试卷二 第一部分:基础部分    软件基础 (每题3分,共18分)  1、十进制数10相当于二进制数的多少?   1010  2、请写出五个基本数据类型。   byte/short/int/long/boolean    3、程序的控制语句有哪些?      4、break语句和continue语句有什么区别?   break是指中断当前语句块/

:)一位靓仔偶然路过的博客 1万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

类和对象入门

类成员的可访问范围 下列关键字说明类成员的访问范围 private: 私有成员, 只能在成员函数内访问 public: 公有成员,可以在任何地方访问 protected: 保护成员,以后再说 以上三个关键字出现的次数和顺序没有任何限制 定义一个类 class className{ private: 私有属性和函数 public: 公有属性和函数 protected: 保护属性和函数 }; 如果某个成员前面没有上述关键字,则被缺省地认为是私有成员 例如: class Man{ int n

weixin_49727780的博客 205

C++程序设计基础之(第六章)类与对象

类(Class)是面向对象程序设计(OOP)实现信息封装的基础。 类是用户定义类型,也称为类类型 每个类包含数据说明和一组操作数据或传递消息的函数。类的 实例称为对象 6.1 类与对象 面向对象编程的程序基本单位是类 类是数据和操作数据的函数的封装 类的对象使用自己的方法完成对数据的操作 类可以隐藏数据和操作细节,对象通过类接口与外部通信 封装 数组与数组类 // 排序函数原型 void...

qq_41589763的博客 1018

OJ积累--P4游戏中的human角色

/* *copyright (c)2015,烟台大学计算机学院 *All rights reserved *文件名称:project.cpp *作者:孙春红 *完成日期:2015年6月24日 *版本号:v1.0 * *问题描述:在一个平面打斗游戏中,任何的角色(Role)都有血量(blood)和位置loc (此处loc是Location类的实例)属性。有了Role类,可以派生出不同的角色,如人、

yantaidaxuecjj的专栏 874

面向对象之英雄对战游戏

一、模块 1. 对决台 (对象有英雄和怪物) 2、商城 3、充值 4、查看信息 二、定义类和方法 1、定义角色类,英雄类和怪物类继承角色类的方法和属性 import random,time#引入包一个随机函数,一个时间 #定义一个角色类 class Role: def __init__(self, name, hp, atk, ): self.name = name#类的成员属性 姓名、血量、伤害 self.hp = hp self.

qq_44850339的博客 1611

2015-06-28 15:08:41 OJ期末模考I

Problem I: P4 游戏中的Human角色 Time Limit: 1 SecMemory Limit: 128 MBSubmit: 417Solved: 245 [Submit][Status][Web Board] Description 在一个平面打斗游戏中,任何的角色(Role)都有血量(blood)和位置loc(此处loc是Location类的实例)属性。有了Rol...

个人专栏 642

7-28 格斗吧(20) (10分)

7-28 格斗吧(20) (10分) 小李闲着无聊设计了一个平面打斗游戏中,在这个游戏里面任何的角色(Role)都有血量(blood)和位置loc(此处loc是Location类的实例)属性。 有了Role类,可以派生出不同的角色,如人、神仙、怪兽等。首先,定义了Location类和Role类,人类(Human)中新增了姓名和攻击力数据成员,请为Human类设计成员函数,并实现Role类中的moveTo和addBlood两个成员函数。 class Location { private: int x, y;

olssa的博客 271

c语言游戏 人物素材,C语言打造——游戏场景里面的人物行走

今天带来一个游戏场景的人物行走。用的是C语言写的,用到的编译器是vs2015,2013或者(vc)也行的,自然要记得安装图形库文件。涉及到的知识点不多:图形库 鼠标和键盘操作 图片 贴图C语言 if swicth分支 函数 循环for while do while星城下面就把代码发出来一下,代码如下:#include//图形库头文件#include#include//getch 获取键盘消息 kb...

weixin_39540271的博客 894

c语言角色游戏,VC++角色游戏中的人物初始化模块代码实例

本文以一个实例讲述VC++游戏中的人物角色动画初始化实现代码,本代码只是实现人物角色动画的初始化,不包括其它功能,并不是完整的一个游戏应用,现在将这个角色初始化代码与大家分享。希望能够对大家学习VC++有所帮助。#include "StdAfx.h"#include "Character.h"CCharacter::CCharacter(void){}CCharacter::~CCharacter...

weixin_29831325的博客 690

c++编程练习 023:看上去像多态

北大程序设计与算法(三)测验题汇总(2020春季) 描述 程序填空产生指定输出 #include <iostream> using namespace std; class B { private: int nBVal; public: void Print() { cout << "nBVal="<< nBVal << ...

计算机科学与技术专业学生的成长之路 950

【热血传奇】 脚本开发之变量详解

标识 [001]-[499](各引擎不同标识的上限值不能。正常的是499个),这不是变量,这是标识 标识的初始值是关闭的,它不会因为人物下线或服务器重启而重置 标识和变量不同的是只有0和1,标识是私有的,不共享。 一般适用于游戏内的个人任务系统 相关命令格式: Check [001] 0 的意思是检测你的标识[001]是否关闭 SET [001] 1 的意思是设置你的标识[001]为开的状态 reset [100] 7 意思是将从100开始的7个变量回复到原始值0,就是把100 101 102 103

qq_39078783的博客 8892
上一篇: OJ第三批——Problem S: E3 继承了,成员函数却不可访问
下一篇: OJ第三批——Problem U:编程题:运算符重载---矩阵求和
Timor7hao
博客等级 码龄12年 22粉丝 264原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值