面试题目回顾12

标签: 面试题目回顾 面试题目总结 面试题目反思 面试题目复习
28人阅读 评论(0) 收藏 举报
分类:

面试题目回顾12

面试题目

游戏背景:
古代,有一个英雄,生活在布满农田、洞穴的世界中,他为了生存不断的采集、打怪。

世界元素:
三种点:家(唯一)、农田(若干)、洞穴(若干),数据由pointList定义、一个角色(初始位置在家);

角色属性: HP(生命:最大值和初始值为100)、Exp(初始值:0,升级需要100);

游戏逻辑(代码实现):
1、将pointList中的数据与角色的距离排序;
2、根据pointList创建地图;
3、点击家、角色移动到家,HP=100;
点击洞穴、角色移动到洞穴,HP-20,Exp+10,洞穴消失;

游戏判定: 角色升级胜利,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;
};
var std::vector<PointInfo> pointList;

参考答案

不过要求比较多 设计模式和可扩展性 就体现不了了
1.写一个排序算法,这个很多 快速排序之类写一个

2.直接使用循环遍历pointList中的点,然后根据地图类型,位置,等属性进行生成。

3.

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;
            }
        }
    }
}
查看评论

面试题目回顾10

面试题目回顾10 面试题目 1.如何解决Unity中UI和场景中物体的,射线点击穿透问题? https://blog.csdn.net/OnafioO/article/details/485...
  • wwlcsdn000
  • wwlcsdn000
  • 2018-04-11 11:37:54
  • 35

剑指offer面试题12 (二)

从今天起,每天理解一道剑指offer面试题,加油!
  • qq_34328833
  • qq_34328833
  • 2016-05-15 14:55:40
  • 1121

面试题目回顾3

面试题目回顾3 面试题目 问题网上很多暂时找不到原题目,先做记录,后续逐步完善。 简述一下3D渲染流水管线?如何从顶点到像素。 设计一个简单的AI框架。FSM和行为树均可。 有序数组的二...
  • wwlcsdn000
  • wwlcsdn000
  • 2018-03-18 23:18:54
  • 66

面试题目回顾9

面试题目回顾9 面试题目 1.简述struct和class类的区别 https://www.cnblogs.com/xielong/p/6690244.html 2.在C# 中equals...
  • wwlcsdn000
  • wwlcsdn000
  • 2018-04-10 22:33:50
  • 24

面试题目回顾8

面试题目回顾8 面试题目 一些智力测试题目,自从面试了这么多智力题目感觉自己像个傻子 除了以前见过的一些题目 新题目很少能做出来 1 五个洞排成一排,其中一个洞里藏有一只狐狸。每个夜晚,狐狸...
  • wwlcsdn000
  • wwlcsdn000
  • 2018-04-09 14:27:13
  • 46

面试题目回顾11

面试题目回顾11 面试题目 算法题目 1.单链表的翻转 个人觉得讲解的比较好的 https://blog.csdn.net/autumn20080101/article/details/...
  • wwlcsdn000
  • wwlcsdn000
  • 2018-04-13 09:57:21
  • 10

面试题目回顾6

面试题目回顾6 面试题目 设计类的时候如果违反单一职责原则会有什么后果?代码之间耦合度过高 会有什么影响? https://baike.baidu.com/item/%E5%8D%95%E4...
  • wwlcsdn000
  • wwlcsdn000
  • 2018-04-01 21:53:58
  • 48

面试题目回顾4

面试题目回顾4 面试题目 先写题目,答案陆续收集再做更新 抽象类和接口的区别是什么?为什么要设计出接口? 简单工厂模式 工厂方法模式 抽象工厂模式三者的区别是什么? UI扩展如何做? ...
  • wwlcsdn000
  • wwlcsdn000
  • 2018-04-01 21:41:31
  • 66

面试题目回顾5

面试题目回顾5 面试题目 问题网上很多暂时找不到原题目,先做记录,后续逐步完善。 什么是值类型什么是引用类型,值类型和引用类型的内存分配是怎么样的? https://blog.csdn...
  • wwlcsdn000
  • wwlcsdn000
  • 2018-04-01 21:52:56
  • 82

面试题目回顾2

面试题目回顾2 面试题目 逻辑题目部分 6、8、10、11、14、14、?(请讲清到底是什么规律) https://www.zybang.com/question/fa412b70bc...
  • wwlcsdn000
  • wwlcsdn000
  • 2018-03-15 10:23:14
  • 145
    个人资料
    持之以恒
    等级:
    访问量: 13万+
    积分: 3569
    排名: 1万+
    文章存档
    最新评论