看了上一节的朋友有可能会大呼上当,因为无论添加多少个角色状态,游戏角色都还会保持一开始的图片显示,这是因为我们需要改变角色状态的条件。
改变的条件往往有两个,一是用户输入,一是根据其他数据(时间、其他角色的情况)来改变。
先说用户输入,我喜欢把键盘输入放在一个地方单独管理。
因为不论是程序员还是玩家,都有可能自定义按键,所以我用一个哈希表来存储按键对应关系。按键分为游戏控制中的按键和实际键盘上的按键,举个例子,比如小霸王模拟器,A、B、连A、连B这些是游戏中的按键,而实际上可能会对应键盘中的K、J、I、U,这个哈希表存储的就是这两种按键的对应关系。而程序员和玩家如果希望修改按键设置,只要改这个哈希表就可以了。
另外,我又用一个类,这个类里边有很多布尔型变量,每个分别表示A、B、连A、连B的按下情况,并有专门的Update方法来检查这些按键对应的K、J、I、U的情况。
代码大概如下:
private InputConfiguration ic;
这是字段中定义的哈希表管理类“输入配置”。
KeyboardState keyboardState = Keyboard.GetState(); if (keyboardState.IsKeyDown(ic.KeyboardStateHashtable("Start"))) isStartKeyDown = true; if (keyboardState.IsKeyUp(ic.KeyboardStateHashtable("Start"))) isStartKeyDown = false;
这是Update方法中检测按键按下的代码。
但是游戏中除了玩家控制的那个角色外,还会有很多由程序代码控制的角色,也就是所说的“人工智能AI”,不过往往游戏中的人工智能不是科学研究中的人工智能,而只是一种简单的程序。科学研究中的人工智能,读者们可以Google一下,包含有遗传算法等内容。
棋牌类游戏的人工智能,这个算法深了去,我现在真的没能力提,我就提其他游戏的一个简单的人工智能吧。
FC上的《超级马里奥》,绿乌龟和红乌龟的智能是不一样的,绿乌龟遇到悬崖只会没头脑地往前走,而红乌龟,会在遇到悬崖时转头。
有的时候开发者可能不希望电脑控制的角色那么容易让玩家发现规律,这时可以使用一些随机来产生概率,让自动控制角色随机选择一个行为。