当前位置: 首页 > news >正文

从零开始学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属性进行设置。

相关文章:

  • C++中的next_permutation全排列函数
  • Java学习手册:TCP 协议基础
  • C语言教程(十六): C 语言字符串详解
  • 初识Redis · 主从复制(下)
  • Redis 核心应用场景
  • rsync实现内网两台服务器文件同步
  • 【含文档+PPT+源码】基于SpringBoot+Vue的移动台账管理系统
  • 卷积神经网络:视觉炼金术士的数学魔法
  • 【C++】二叉树进阶面试题
  • 【mongodb】系统保留的数据库名
  • CIFAR10图像分类学习笔记(三)---数据加载load_cifar10
  • 从代码学习深度学习 - 图像增广 PyTorch 版
  • AI工程pytorch小白TorchServe部署模型服务
  • Linux 基础命令入门指南
  • Java函数式编程深度解析:从Lambda到流式操作
  • R-CNN,Fast-R-CNN-Faster-R-CNN个人笔记
  • TiDB 深度解析与 K8S 实战指南
  • PowerBI企业运营分析——全动态帕累托分析
  • JavaScript 的“世界模型”:深入理解对象 (Objects)
  • uniappx 打包配置32位64位x86安装包
  • 《我的后半生》:人生下半场,也有活力重启的可能
  • 民生访谈|马拉松中签率低何解?预付费监管落实得如何?市体育局回应
  • 解放日报:上海一季度GDP同比增长5.1%,两大新动能助推经济“开门红”
  • 内蒙古镶黄旗委原书记好毕斯哈拉图履新锡林郭勒盟民政局局长
  • 对话地铁读书人|中学教师董女士:借来的书更好看
  • 中国建设银行原党委委员、副行长章更生严重违纪违法被开除党籍