A Basket-Ball Demo

最近闲暇时间用C++写了个小Demo,一个小小的篮球模拟。在学校的时候看过《人工智能编程精粹》,里面有个足球模拟,看起来还比较逼真。我这个篮球模拟是比较类似的,主要好玩的地方是在于状态机。图形方面做得很简单,还是用OpenGL来实现的,另外用了一个库glui,这个东西很好,把GUI方面琐碎的事情就简化了。整个效果图如下,这可是湖人对火箭噢。

调试状态机是个很有趣的过程,每一个球队有自己的状态机,分为进攻状态、防守状态、准备发球状态,每个球员也有自己的状态机,如下图所示。这里使用的是状态模式,把复杂的转移逻辑分散到各个状态节点,这正是状态模式的精华啊。现在这个还只是个粗糙的版本,虽然看得出来有那么点意思,规则都出来了,但是每个球员的跑位不逼真,没有多少智能的感觉。当篮球碰到边界的时候自动反弹,这点有点假,不过这也简化了不少比较繁琐的捡球和发球动作。当然现在的规则都比较简单,连三分和两分都没有分出来,罚球也没有,哈哈。现在的状态机看起来大部分时间还可以,很少的时候会出现一些比较反常规的现象。把每个状态转移过程在画面中显示出来能比较直观的去调试。

下面这个是球员的状态转移图,也就是FieldPlayerStates.cpp实现的。球队的状态机要简单一些,只有三个。

程序在这里GitHub:BasketBall,感兴趣的可以看一下,也有7000行的代码了,也有点乱:). 后面有时间再调试一下,慢慢细化,球员的站位和防守动作做到更智能些。

相关文章

Tags: ,

8 Responses to “A Basket-Ball Demo”

  1. C瓜哥 Says:

    不错啊,业余时间还可以做出这么庞大的一个东东…
    你的工作具体是做哪方面的呢?有点感兴趣

    [回复]

    moorekang 回复:

    @C瓜哥, 做EDA行业软件的,一些验证工具, http://www.nextopsoftware.com
    你工作找在哪里?

    [回复]

    C瓜哥 回复:

    @moorekang,
    华为,在成都研究所,软件开发,6k,
    本科,我们学院大概有十几个人进去了,今年面向本科招得多,题目比较水,感觉他们公司不太重视算法的

    [回复]

    C瓜哥 回复:

    @moorekang,
    感觉你们公司和硬件接轨,而且还是个外企,不错…
    就是在上海物价太高了……
    你以后准备在上海定居??

    [回复]

    moorekang 回复:

    还是打算回成都的啊 哈哈

    [回复]

    C瓜哥 回复:

    @moorekang, 回去创业么?

  2. C瓜哥 Says:

    今天我才了解到华为的软研主要是以下几种岗位:
    1. Web开发工程师(C#/JAVA/ASP.Net)(不考虑这种哈)
    2. 仿真工具开发工程师(C/C++/MFC/ACE/STL/PYTHON/Delphi/VB)
    3. 嵌入式开发工程师(C/C++/Linux/QNX/Vxworks)
    4. 底软开发工程师(C/C++/芯片驱动开发/PLC开发)
    仿真工具主要是做什么?做这个能力会有提升不?我以后想跳槽做PC、或者移动平台应用软件…
    还有,嵌入式开发是不是更好一些?我说的是发展空间,and 以后的收入…

    [回复]

  3. C瓜哥 Says:

    恕我直白
    我对IT、CT行业确实不了解…

    [回复]

围观完了 留个脚印