从零开始学Python游戏编程37-精灵4

3 用户界面类UserInterface

《从零开始学Python游戏编程33-指令模式2》中,将用户界面类的名字设为了“Game”,在此我们将该类名设置为UserInterface。

3.1 __init__()方法

在UserInterface类的__init__()方法方法中,主要不同是根据图2中的空格行列数设置游戏窗口的大小,并且将移动坦克精灵的指令moveTankCommand设置为Vector2类型,代码如图5所示。

图5 __init__()方法的代码

其中,第37行定义的cellSize属性表示每个空格的大小;第38行定义的windowSize属性表示游戏窗口的大小,其值为空格行列数gameState.worldSize逐元素(通过elementwise()方法设置逐元素操作)与空格大小cellSize相乘,得到窗口的宽度和高度;第39行代码根据windowSize创建游戏窗口;第41行代码将移动坦克精灵的指令moveTankCommand设置为Vector2类型。

3.2 processInput()方法

在processInput()方法中,根据玩家的按键,设置移动坦克精灵的指令moveTankCommand,代码如图6所示。

图6 processInput()方法的代码

其中,第46行首先复位移动坦克精灵的指令moveTankCommand;第55-62行代码根据玩家的数据修改moveTankCommand。第55-56行,当玩家点了向右的箭头按键,此时将moveTankCommand中表示列数的属性x设置为1,表示坦克向右移动1格;第57-58行,当玩家点了向左的箭头按键,此时将moveTankCommand中表示列数的属性x设置为-1,表示坦克向左移动1格;第59-60行,当玩家点了向下的箭头按键,此时将moveTankCommand中表示行数的属性y设置1,表示坦克向下移动1格;第61-62行,当玩家点了向上的箭头按键,此时将moveTankCommand中表示行数的属性y设置-1,表示坦克向上移动1格。

3.3 update()方法

update()方法的主要作用是根据移动坦克指令moveTankCommand,更新坦克精灵的所在行列数,即更新坦克精灵的位置,代码如图7所示。

图7 update()方法的代码

第65行代码,通过属性gameState()调用GameState类的方法update()对tankPos属性进行设置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值