个英雄,生活在布满农田、洞穴的世界中,他为了生存不断的采集、打怪

2 篇文章 0 订阅
2 篇文章 0 订阅

面试题:
游戏背景: 古代,有一个英雄,生活在布满农田、洞穴的世界中,他为了生存不断的采集、打怪。世界元素: 三种点:家(唯一)、农田(若干)、洞穴(若干),数据由pointList定义、一个角色(初始位置在家);角色属性: HP(生命:最大值和初始值为1... 展开
1、根据pointList创建地图; 
2、点击家、角色移动到家,HP=100;点击洞穴、角色移动到洞穴,HP-20,Exp+10,洞穴消失;点击农田,角色移动到农田,HP-10,Exp+5,农田消失;游戏判定: 角色升级胜利,HP不足则失败

public enum PointType{ Home, Hole, Farm,}/// <summary>public class PosNode{ public int id; public PointType pointType; public Vector2 postion; List<PosNode> childNode = new List<PosNode>(); public void addChild(PosNode node) { childNode.Add(node); } private Action<PosNode> clickUI; public Action<PosNode> ClickUI { set { clickUI = value; } }}/// 点的信息/// </summary>public struct PointInfo{ public int id; public PointType pointType; public Vector2 position;};public class Player{ int maxHp = 100; int maxExp = 100; int hp = 100; int exp = 0; public Action<PosNode> MoveEnd; public void Move(PosNode node) { //移动 if (MoveEnd!=null) { MoveEnd(node); } } public void AddHP(int _hp) { hp = Mathf.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<> List<PointInfo> pointList; Player player; public GameRoot() { player = new global::Player(); pointList = new List<global::PointInfo>(); } public void Start() { foreach (var item in pointList) { PosNode node = new PosNode(); node.postion = item.position; node.pointType = item.pointType; node.id = item.id; node.addChild(node); node.ClickUI = OnClickFunc; } } public void OnClickFunc(PosNode posNode) { player.Move(posNode); player.MoveEnd = MoveEndFunc; } void MoveEndFunc(PosNode posNode) { switch (posNode.pointType) { case PointType.Home: player.AddHP(100); break; case PointType.Hole: player.AddHP(-20); player.AddExp(10); destroy(posNode); break; case PointType.Farm: player.AddHP(-10); player.AddExp(5); destroy(posNode); break; } } public void destroy(PosNode node) { for (int i = 0; i < pointList.Count; i++) { if (node.id == pointList[i].id) { pointList.Remove(pointList[i]); break; } } }}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值