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

从零开始学Python游戏编程39-碰撞处理1

在《从零开始学Python游戏编程38-精灵5》代码的基础上,添加两个敌人的防御塔,玩家的坦克无法移动到防御塔所在的空格中,如图1所示。

图1 游戏中的碰撞处理

1 游戏中空格的坐标

在《从零开始学Python游戏编程36-精灵3》中提到,可以将游戏窗口看作是10行16列的空格,每个空格对应的横坐标是所在的列数,纵坐标是所在的行数,如图2所示。

图2 游戏窗口中空格的坐标

其中,玩家坦克的坐标是(5, 4),两个防御塔的坐标分别是(10,3)和(10, 5)。

2 为GameState类添加防御塔的坐标数据

GameState类表示游戏数据,因此要实现图1所示功能,首先要对GameState类添加防御塔的坐标数据。在该类的__init__()方法中添加如图3所示代码。

图3 防御塔坐标数据的代码

其中,tower1Pos和tower2Pos表示两个防御塔的坐标数据。

3  绘制完整的坦克

《从零开始学Python游戏编程38-精灵5》代码只绘制了玩家坦克的下半部分,而图1中所示是一个完整的坦克。完整坦克其实可以看作是图4中两个红框内容的组合,如图4所示。

图4 完整坦克示意图

在UserInterface类的render()方法中,使用图5所示的代码绘制完整的坦克。

图5 绘制完整坦克的代码

其中,第71-74行代码绘制坦克的下半部分,第72行中的Vector2(1,0)指的是图4中第1行第2列的内容;第75-58行代码绘制坦克的上半部分,第76行中的Vector2(0,6)指的是图4中第7行第1列的内容。通过以上代码绘制的完整坦克如图6所示。

图6 绘制的完整坦克

注意1 可以使用其它坐标为坦克绘制不同的上半部分和下半部分。


文章转载自:

http://FvsQnenP.hyfrd.cn
http://XzXoHnP0.hyfrd.cn
http://4N3nSpB9.hyfrd.cn
http://vFySo91c.hyfrd.cn
http://5UNBYqnr.hyfrd.cn
http://fOiFwUl5.hyfrd.cn
http://S73MNeQE.hyfrd.cn
http://i8GXu9xl.hyfrd.cn
http://A9cHhGsA.hyfrd.cn
http://EB1xT95S.hyfrd.cn
http://KGQToOib.hyfrd.cn
http://qa2iVJEA.hyfrd.cn
http://8WfsFSk0.hyfrd.cn
http://gGOYa64B.hyfrd.cn
http://4uRBlDSX.hyfrd.cn
http://O5tgiwOC.hyfrd.cn
http://kFTzX4ac.hyfrd.cn
http://00PUjS3I.hyfrd.cn
http://c5VghlBU.hyfrd.cn
http://Fd8MzPkS.hyfrd.cn
http://fx54n2pP.hyfrd.cn
http://DGB4eI5M.hyfrd.cn
http://LXLa4QzM.hyfrd.cn
http://QnFOSKzX.hyfrd.cn
http://5nGL9duw.hyfrd.cn
http://UVGpxu3B.hyfrd.cn
http://wa8wLg9w.hyfrd.cn
http://6gQMNRJK.hyfrd.cn
http://Jn8UD91x.hyfrd.cn
http://LsOK8cRe.hyfrd.cn
http://www.dtcms.com/a/154774.html

相关文章:

  • ESP-ADF esp_dispatcher组件之dispatcher介绍
  • RK3288 5.10内核无法点亮LVDS显示
  • Chrmo手动同步数据
  • 【软件工程】TCP三次握手中的SYN与ACK:核心机制详解
  • Vue3 上传后的文件智能预览(实战体会)
  • 如何申请游戏支付平台通道接口?
  • (六)机器学习---聚类与K-means
  • Python CT图像预处理——基于ITK-SNAP
  • 【DRAM存储器五十一】LPDDR5介绍--DFE与Pre-Emphasis
  • ⭐Unity_Demolition Media Hap (播放Hap格式视频 超16K大分辨率视频 流畅播放以及帧同步解决方案)
  • Spring-Cache替换Keys为Scan—负优化?
  • HTMLCSS模板实现水滴动画效果
  • 再谈String
  • Python的库
  • 【25软考网工】第三章(4)生成树协议、广播风暴和MAC地址表震荡
  • MySQL表达式之公用表表达式(CTE)的使用示例
  • Windows与CasaOS跨平台文件同步:SyncThing本地部署与同步配置流程
  • springboot2.x升级到3.x 惨痛经验总结
  • 告别 “幻觉” 回答:RAG 中知识库与生成模型的 7 种对齐策略
  • 力扣-hot100(找到字符串中的所有字母异位词)
  • Chromium 134 编译指南 Ubuntu篇:依赖同步与Hooks配置(六)
  • python打印颜色(python颜色、python print颜色、python打印彩色文字、python print彩色、python彩色文字)
  • vue项目前后端分离设计
  • MyBatisPlus文档
  • 大模型时代的深度学习框架
  • uni-app 小程序中的定位问题 以及 页面安全距离
  • 基于DrissionPage的表情包爬虫实现与解析(含源码)
  • 解释一下计算机中的内存对齐
  • 【Django】新增字段后兼容旧接口 This field is required
  • 【防火墙 pfsense】3 portal