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不足则失败
以上两个问题需要写出代码,并做好注释,可是没做出来,麻烦大神指教一下
展开
 我来答
l龙的传人l
2018-03-07
知道答主
回答量:11
采纳率:100%
帮助的人:5.6万
展开全部
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;
}
}
}
大派遥666
2017-11-23 · 超过80用户采纳过TA的回答
知道小有建树答主
回答量:161
采纳率:0%
帮助的人:22.8万
展开全部
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代表需要转换文本型字符串数值。 应用举例:如
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式