文章目录
- 一、Amazon Q介绍
- 二、实验环境准备
- 2.1 下载项目安装包
- 2.2 验证 Python 环境
- 2.3 安装Amazon Q扩展
- 2.4 授权Builder ID
- 三、Amazon Q 快速理解main.py
- 四、Amazon Q快速梳理控制器逻辑
- 五、启动像素沙盒开放世界程序
- 六、在 update() 中实现传送功能
- 七、定位并修复代码漏洞
- 八、总结
- 九、参考链接
- 活动上新
一、Amazon Q介绍
近年来,人们对使用人工智能改进软件开发越来越感兴趣。生成式人工智能编码助手和聊天机器人是该领域最有前途的新发展之一。这些工具使用机器学习来生成代码并以自然语言格式回答有关代码的问题。这使得所有技能水平的开发人员都可以轻松使用它们。
Amazon Q Developer 是一款生成式人工智能 (AI) 支持的对话助理,可以帮助您理解、构建、扩展和操作 Amazon 应用程序,您可以询问有关 Amazon 架构、最佳实践、文档、代码等的问题。
在控制台中快速体验和了解 Amazon Q 本地实验环境准备 基于 Amazon Q 协助梳理项目逻辑,快速掌握项目全貌 基于 Amazon Q 解释、调试、优化、构建游戏应用 基于 Amazon Q 修复程序漏洞。
二、实验环境准备
项目运行需要提前准备如下环境:
- Python 3.10.11 或更高级版本
- pyglet 1.5.27
- VS Code IDE
2.1 下载项目安装包
点击下载实验项目包
。
2.2 验证 Python 环境
下载 Python 和 pyglet
本实验使用的 Python 版本是 3.10.11 或更高级版本,pyglet 版本是 1.5.27(此处版本非常重要) Python 环境安装:
C:\Users\xyb>python --version
Python 3.10.0
C:\Users\xyb>pip show pyglet
Name: pyglet
Version: 1.5.27
2.3 安装Amazon Q扩展
2.4 授权Builder ID
三、Amazon Q 快速理解main.py
Amazon Q 可以快速帮助我们梳理项目逻辑,从而快速掌握项目全貌,我们可以打开项目根目录的 main.py 文件,在 Amazon Q Chat 面板中,询问:
Can you summarize main.py for me? What does this program do?
你能给我总结一下main.py吗?这个程序是做什么的?
Amazon Q提供的回答:
Based on the main.py file content you've provided, this program appears to be implementing a simple 3D voxel-based world, similar to Minecraft. Here's a summary of its key components and functionality:
It uses the Pyglet library for graphics rendering.
The program defines constants for game mechanics like walking speed, flying speed, gravity, jump height, and world dimensions.
It includes functions for creating cube vertices, handling textures, and normalizing positions.
The main class is Model, which represents the game world:
It manages the world's blocks, their visibility, and rendering.
It has methods for adding and removing blocks, checking block visibility, and performing hit detection.
The world is initialized with a flat stone base and grass surface, surrounded by stone walls.
It generates random hills using different block types (grass, sand, brick).
The program implements a simple physics system with gravity and collision detection.
It uses a sector system to optimize rendering by only showing blocks in the player's vicinity.
While the file doesn't contain the complete game logic (it's likely split across multiple files), this main.py sets up the core world structure and block manipulation functionality for a voxel-based 3D game environment. The actual game loop, player controls, and rendering would likely be implemented in other parts of the project.
Amazon Q目前不支持中文回答,以下是翻译成中文:
根据您提供的 main.py 文件内容,这个程序似乎在实现一个简单的基于体素(Voxel)的 3D 世界,类似于《我的世界》。以下是其关键组件和功能的摘要:
- 它使用 Pyglet 库进行图形渲染。
- 程序为游戏机制定义了一些常量,例如行走速度、飞行速度、重力、跳跃高度和世界维度。
- 它包含创建立方体顶点、处理纹理和规范化位置的函数。
主要的类是 `Model`,代表游戏世界:
- 它管理世界中的方块、方块的可见性和渲染。
- 包含添加和移除方块、检查方块可见性和执行碰撞检测的方法。
- 世界初始化时有一个平坦的石头地基和草地表面,并由石头墙壁包围。
- 它使用不同类型的方块(草地、沙子、砖块)随机生成小山。
- 程序实现了简单的物理系统,包括重力和碰撞检测。
- 它使用了一个分区系统(Sector System)来优化渲染,只显示玩家附近的方块。
虽然文件不包含完整的游戏逻辑(可能拆分在多个文件中),但此 main.py 文件设置了体素(Voxel)3D 游戏环境的核心世界结构和方块操作功能。实际的游戏循环、玩家控制和渲染可能在项目的其他部分中实现。
四、Amazon Q快速梳理控制器逻辑
在不清除聊天的情况下,我们在 Chat 页面中进行对话,对话内容如下:
Based on the code in main.py, what are the game's controls?
根据 main.py 文件提供的代码,游戏控制并未在此文件中明确定义。main.py 文件主要用于设置游戏世界,定义方块类型,以及处理世界生成和方块操作【1】。
不过,我们可以根据定义的常量和方法推断出一些可能的控制:
- 移动:文件中出现的 `WALKING_SPEED` 和 `FLYING_SPEED` 常量表明玩家可以在游戏中行走,并且可能可以飞行。
- 跳跃:`JUMP_SPEED` 和 `MAX_JUMP_HEIGHT` 常量暗示跳跃是游戏中的一种机制。
- 方块交互:`hit_test` 方法表明玩家可以在一定距离内与方块进行交互(默认最多8个方块的距离)。
- 方块放置/移除:`add_block` 和 `remove_block` 方法暗示玩家可以在世界中添加和移除方块。
实际的按键绑定和控制实现很可能定义在另一个负责处理用户输入和游戏逻辑的文件中。该文件通常会导入 `pyglet.window.key` 模块(在 main.py 中已导入)以设置键盘控制。
为了更完整地了解游戏的控制,我们需要查看处理游戏循环和用户输入处理的文件。该文件可能会使用 Pyglet 的事件处理系统,将键盘和鼠标输入映射到游戏动作。
### 来源
【1】[什么是 __main__.py?](https://stackoverflow.com/questions/4042905)
五、启动像素沙盒开放世界程序
python main.py
操作方式:
按下 wasd 控制角色前后左右移动
按下 空格键 控制角色跳跃
按下 左键 破坏方块
按下 右键 放置方块
按下数字 123 切换即将放置的方块
按下 tab 即可切换飞行模式
按下 esc 释放鼠标后,点击右上角的 X 即可关闭游戏
六、在 update() 中实现传送功能
为了实现掉出世界后传送的功能,我们需要不停地检测角色当前的 y 坐标 。 当 y 坐标 低于某一特定值(例如-10)后,程序应将角色传送到出生点 (0,0,0)。 我们让 Amazon Q 来帮助我们实现这个功能。 在 Amazon Q Chat 面板中,询问:
How can I change the _update() function in main.py so that if the player's y position is below -10, they are returned to the starting point (0,0,0)?
七、定位并修复代码漏洞
在游玩中我们发现,当玩家传送到最近的地面方块时并没有正确传送到地面上,而是卡在了方块中。 我们让 Amazon Q 来帮助我们修复这个漏洞。 在 Amazon Q Chat 面板中,询问:
When the player was teleported, they were stuck inside a block. Can you fix this bug, so the player is always placed on TOP of the closest block? Write new code for _update() in main.py to fix this.
八、总结
本章实验主要是引导大家如何在控制台中使用 Amazon Q 来了解 Amazon 服务的详细内容,通过在 IDE 中安装 Amazon Q 扩展加速软件应用的开发,解决开发全流程中的各种问题;最后也欢迎大家一起探索 Amazon Q 更多的功能,为工作中赋能增效降本!
九、参考链接
https://github.com/fogleman/Minecraft
https://dev.amazoncloud.cn/experience/cloudlab?id=6645af5700cbe054da6e747b
活动上新
Hands-On 动手实验
生成式AI助手 Amazon Q 初体验
活动链接👇
https://dev.amazoncloud.cn/experience/cloudlab?id=6645af5700cbe054da6e747b&visitfrom=AWScloudblogger&sc_medium=owned&sc_campaign=cloudlab&sc_channel=AWScloudblogger
「云上驰骋,考证无忧」五折 + 免费补考,助您职场升级!
活动福利
-
享 50% 折扣优惠报考,并可获得 “一次不过,再考免费” 的机会
-
推荐更多用户来参与报考,赢取限量乐扣保温杯/手冲咖啡壶
-
前 50 位通过考试的首次报考用户,赢取限量筋膜枪的早鸟奖励
活动时间:9月30日前
-
报名申请认证考试「五折特惠」,完成认证备考课观看。
-
完成首次考试,享「一次不过,再考免费」
报名链接👇
https://dev.amazoncloud.cn/cp-retake?visitfrom=yunbozhu