unity游戏开发一道面试题,麻烦大神提示一下两个问题的代码
游戏背景:古代,有一个英雄,生活在布满农田、洞穴的世界中,他为了生存不断的采集、打怪。世界元素:三种点:家(唯一)、农田(若干)、洞穴(若干),数据由pointList定...
游戏背景: 古代,有一个英雄,生活在布满农田、洞穴的世界中,他为了生存不断的采集、打怪。世界元素: 三种点:家(唯一)、农田(若干)、洞穴(若干),数据由pointList定义、一个角色(初始位置在家);角色属性: HP(生命:最大值和初始值为100)、Exp(初始值:0,升级需要100);游戏逻辑(代码实现): 1、根据pointList创建地图; 2、点击家、角色移动到家,HP=100;点击洞穴、角色移动到洞穴,HP-20,Exp+10,洞穴消失;点击农田,角色移动到农田,HP-10,Exp+5,农田消失;游戏判定: 角色升级胜利,HP不足则失败。请用自己熟悉的语言(C++、C#,或其他语言皆可),需要有完整的类定义、函数定义、变量定义、注释来实现完整的游戏逻辑,主要考察逻辑,代码习惯及设计模式;模拟API,仅供参考:添加点: Node::addChild(Node* node)删除点: Node::removeChild(Node* node)点击事件: Node::OnClick = OnClickFunc(Node* node) // 事件用法如: TheNode.OnClick = OnClickFunc;角色移动:bool Player::move(Node* node)移动完成事件: Player::moveEnd = MoveEndFunc(Node* node);参考代码:enum PointType{ PointType_Home, PointType_Hole, PointType_Farm,};struct PointInfo{ int id; PointType pointType; Vector2D position;};
1、根据pointList创建地图;
2、点击家、角色移动到家,HP=100;点击洞穴、角色移动到洞穴,HP-20,Exp+10,洞穴消失;点击农田,角色移动到农田,HP-10,Exp+5,农田消失;游戏判定: 角色升级胜利,HP不足则失败
以上两个问题需要写出代码,并做好注释,可是没做出来,麻烦大神指教一下 展开
1、根据pointList创建地图;
2、点击家、角色移动到家,HP=100;点击洞穴、角色移动到洞穴,HP-20,Exp+10,洞穴消失;点击农田,角色移动到农田,HP-10,Exp+5,农田消失;游戏判定: 角色升级胜利,HP不足则失败
以上两个问题需要写出代码,并做好注释,可是没做出来,麻烦大神指教一下 展开
2个回答
展开全部
enum PointType
{
Home,
Hole,
Farm,
}
struct PointInfo
{
int id;
PointType pointType;
vector2D position;
};
public class PosNode : Node
{
int id;
PointType pointType;
}
public class Player
{
int maxHp=100;
int maxExp=100;
int hp=100;
int exp=0;
public Delegate MoveEnd;
public void Move(PosNode* node)
{
//移动
if(moveEnd)
{
MoveEnd(node);
}
}
public void AddHP(int _hp)
{
hp=math.clamp(hp+_hp,0,maxHp);
if(hp<=0)
{
//失败
}
}
public void AddExp(int _exp)
{
exp+=_exp;
if(exp>maxExp)
{
//升级
}
}
}
public class GameRoot
{
//c++中std::vector<>就是C#中的List<>
var std::vector<PointInfo> pointList;
Player player;
void Start()
{
foreach(var item in pointList)
{
Node node=new Node();
node->setPosition(item.position);
node->setPointTye(item.pointType);
node->setID(item.id);
Node::addChild(node);
node::OnClick=OnClickFunc;
}
}
void OnClickFunc(PosNode* posNode)
{
player::Move(posNode);
player::MoveEnd=MoveEndFunc;
}
void MoveEndFunc(PosNode* posNode)
{
switch(posNode.pointType)
{
case Home:
player::AddHP(100);
break;
case Hole:
player::AddHP(-20);
player::AddExp(10);
destroy(posNode);
break;
case Farm:
player::AddHP(-10);
player::AddExp(5);
destroy(posNode);
break;
}
}
}
展开全部
using UnityEngine;
using System.Collections;
public class clock : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update ()
{
//在游戏下面的提示栏显示
print("Current time is: " + System.DateTime.Now);
}
void OnGUI()
{
//在游戏界面中显示
GUI.Box(new Rect(Screen.width/2,Screen.height/2-50,150f,100f),"简易时钟");
GUI.Label(new Rect(Screen.width/2+25,Screen.height/2-10,150f,50f),"Current time is: \n"+" "+System.DateTime.Now.ToLongTimeString());
}
完整的C#代码,给满意哦,亲
说明:text代表需要转换文本型字符串数值。 应用举例:如
using System.Collections;
public class clock : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update ()
{
//在游戏下面的提示栏显示
print("Current time is: " + System.DateTime.Now);
}
void OnGUI()
{
//在游戏界面中显示
GUI.Box(new Rect(Screen.width/2,Screen.height/2-50,150f,100f),"简易时钟");
GUI.Label(new Rect(Screen.width/2+25,Screen.height/2-10,150f,50f),"Current time is: \n"+" "+System.DateTime.Now.ToLongTimeString());
}
完整的C#代码,给满意哦,亲
说明:text代表需要转换文本型字符串数值。 应用举例:如
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询