当前位置: 首页 > 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属性进行设置。

http://www.dtcms.com/a/153270.html

相关文章:

  • 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安装包
  • UML 活动图深度解析:以在线购物系统为例
  • 游戏开发核心技术全景解析——从引擎架构到网络安全防护体系
  • LeetCode每日一题4.24
  • 微高压氧舱VS高压氧舱:氧气疗法的“双生花”如何重塑健康?
  • 数据逆序隐写
  • 考研英一学习笔记
  • 倚光科技:详解非球面光学元件的加工与检测方法
  • Python并行计算:1.Python多线程编程详解:核心概念、切换流程、GIL锁机制与生产者-消费者模型
  • 探索 CameraCtrl模型:视频生成中的精确摄像机控制技术
  • XS5032芯片,开启视觉新体验