A Basket-Ball Demo
最近闲暇时间用C++写了个小Demo,一个小小的篮球模拟。在学校的时候看过《人工智能编程精粹》,里面有个足球模拟,看起来还比较逼真。我这个篮球模拟是比较类似的,主要好玩的地方是在于状态机。图形方面做得很简单,还是用OpenGL来实现的,另外用了一个库glui,这个东西很好,把GUI方面琐碎的事情就简化了。整个效果图如下,这可是湖人对火箭噢。
调试状态机是个很有趣的过程,每一个球队有自己的状态机,分为进攻状态、防守状态、准备发球状态,每个球员也有自己的状态机,如下图所示。这里使用的是状态模式,把复杂的转移逻辑分散到各个状态节点,这正是状态模式的精华啊。现在这个还只是个粗糙的版本,虽然看得出来有那么点意思,规则都出来了,但是每个球员的跑位不逼真,没有多少智能的感觉。当篮球碰到边界的时候自动反弹,这点有点假,不过这也简化了不少比较繁琐的捡球和发球动作。当然现在的规则都比较简单,连三分和两分都没有分出来,罚球也没有,哈哈。现在的状态机看起来大部分时间还可以,很少的时候会出现一些比较反常规的现象。把每个状态转移过程在画面中显示出来能比较直观的去调试。
下面这个是球员的状态转移图,也就是FieldPlayerStates.cpp实现的。球队的状态机要简单一些,只有三个。
程序在这里GitHub:BasketBall,感兴趣的可以看一下,也有7000行的代码了,也有点乱:). 后面有时间再调试一下,慢慢细化,球员的站位和防守动作做到更智能些。








十月 24th, 2011 at 3:13 下午
不错啊,业余时间还可以做出这么庞大的一个东东…
你的工作具体是做哪方面的呢?有点感兴趣
[回复]
moorekang 回复:
十月 24th, 2011 at 10:33 下午
@C瓜哥, 做EDA行业软件的,一些验证工具, http://www.nextopsoftware.com
你工作找在哪里?
[回复]
C瓜哥 回复:
十月 25th, 2011 at 9:35 上午
@moorekang,
华为,在成都研究所,软件开发,6k,
本科,我们学院大概有十几个人进去了,今年面向本科招得多,题目比较水,感觉他们公司不太重视算法的
[回复]
C瓜哥 回复:
十月 25th, 2011 at 9:37 上午
@moorekang,
感觉你们公司和硬件接轨,而且还是个外企,不错…
就是在上海物价太高了……
你以后准备在上海定居??
[回复]
moorekang 回复:
十月 27th, 2011 at 9:57 下午
还是打算回成都的啊 哈哈
[回复]
C瓜哥 回复:
十月 28th, 2011 at 11:56 上午
@moorekang, 回去创业么?
十一月 17th, 2011 at 11:32 下午
今天我才了解到华为的软研主要是以下几种岗位:
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 以后的收入…
[回复]
十一月 17th, 2011 at 11:34 下午
恕我直白
我对IT、CT行业确实不了解…
[回复]