手搓游戏 —— 生成式 AI 助手 Amazon Q Developer 初体验

news2024/12/23 2:13:29

文章目录

    • 一、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 下载项目安装包

点击下载实验项目包

image-20240929112051659

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

image-20240929112413411

2.3 安装Amazon Q扩展

image-20240929113007909

2.4 授权Builder ID

image-20240929113412556

image-20240929113828826

image-20240929113936641

image-20240929114138345

image-20240929114218679

三、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吗?这个程序是做什么的?

image-20240929150513493

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		

image-20240929152432371

操作方式:

按下 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)?

image-20240929161922875

image-20240929161852996

image-20240929162713998

image-20240929162950947

七、定位并修复代码漏洞

在游玩中我们发现,当玩家传送到最近的地面方块时并没有正确传送到地面上,而是卡在了方块中。 我们让 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.

image-20240929165159504

image-20240929165332287

八、总结

本章实验主要是引导大家如何在控制台中使用 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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2183533.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【无人机设计与技术】自抗扰控制(ADRC)的建模与仿真研究

摘要 本文针对四旋翼无人机姿态控制系统进行了基于自抗扰控制(ADRC)的建模与仿真研究。通过MATLAB/Simulink仿真平台,实现了无人机的姿态控制模型,并采用自抗扰控制器(ADRC)对无人机的姿态进行控制。本文详细介绍了自抗扰控制器的设计方法和应用&#x…

机器学习模型评估

前言 承接上篇讲述了机器学习有哪些常见的模型算法,以及适用的场景,本篇将继续讲述如何评估模型。模型评估的目的是选出泛化能力强的模型。泛化能力强表示模型能很好地适用于未知的样本,模型的错误率低、精度高。本文将从评估方法和评估指标…

【开源鸿蒙】OpenHarmony 5.0.0 发布了,速来下载最新代码

【开源鸿蒙】OpenHarmony 5.0.0 发布了,速来下载最新代码 一、写在前面二、准备命令工具三、配置用户信息四、下载OpenHarmony源码4.1 使用ssh协议下载(推荐)4.2 使用https协议下载 五、下载编译工具链六、参考链接 今天是9月30号&#xff0c…

20道面试题001

常考语法就是指针,指针与数组、指针与字符串、指针与结构体、指针与函数之间的关系与使用, 以上课为准,辅助《深度理解C指针》这本书。 1. 指针与数组 定义: 数组名在表达式中通常被视为指向数组首元素的指针。 访问元素: 可以通过指针访问数…

计算机网络:计算机网络概述:网络、互联网与因特网的区别

文章目录 网络、互联网与因特网的区别网络分类 互联网因特网基于 ISP 的多层次结构的互连网络因特网的标准化工作因特网管理机构因特网的组成 网络、互联网与因特网的区别 若干节点和链路互连形成网络,若干网络通过路由器互连形成互联网 互联网是全球范围内的网络…

PWM驱动LED呼吸灯

背景知识:TIM输出比较-CSDN博客 stm32f10x_tim.h函数 // *** OC是Output Compare输出比较函数 void TIM_OC1Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct); void TIM_OC2Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct); void TI…

给Windows系统设置代理的操作方法

一、什么是代理 网络代理是一种特殊的网络服务,允许一个网络终端通过这个服务与另一个网络终端进行非直接的连接,而提供代理服务的电脑系统或其它类型的网络终端被称为代理服务器。 代理服务器是网络信息的中转站,代理服务器就像是一个很大的…

56. QTreeWidget的基本使用

1. 说明 在软件开发中会遇到将数据信息制作成一种树目录的形式进行展示,那么此时就可以借助QT提供的QTreeWidget控件来实现这种需求,本篇博客会做一个案例简要说明这个控件的基本使用方法,博客中代码能够实现的功能是将此项目代码所在文件夹中的内容展示出来,如下图所示:…

模式识别编程实践1:身高和/或体重数据进行性别分类

🌞欢迎莅临我的个人主页👈🏻这里是我专注于深度学习领域、用心分享知识精粹与智慧火花的独特角落!🍉 🌈如果大家喜欢文章,欢迎:关注🍷点赞👍🏻评论…

回溯大总结

目录 0、基础什么是回溯?回溯法解决的问题回溯模板 1、组合问题77. 组合216.组合总和III17. 电话号码的字母组合39. 组合总和:40.组合总和II 0、基础 什么是回溯? 回溯是一种穷举的搜索算法,并不是一个高效的算法,当…

高并发内存池(五):ThreadCache、CentralCache和PageCache的内存回收机制、阶段性代码展示和释放内存过程的调试

目录 ThreadCache的内存回收机制 补充内容1 补充内容2 补充内容3 补充内容4 ListTooLong函数的实现 CentralCache的内存回收机制 MapObjectToSpan函数的实现 ReleaseListToSpans函数的实现 PageCache的内存回收机制 补充内容1 补充内容2 ReleaseSpanToPageCache函…

【Spine】引入PhotoshopToSpine脚本

引入 右键Photoshop图标,选择属性 打开文件所在位置 找到目录下的\Presets\Scripts文件夹。 找到Spine目录下的\scripts\photoshop文件夹下的PhotoshopToSpine.jsx 复制它,丢到Photoshop刚才找的那个目录下。 使用 打开.psd文件,检查不要…

二叉树:总结篇!【需要掌握的二叉树技能都在这里啦】

文章目录 前言二叉树理论基础二叉树理论基础二叉树的遍历方式深度优先遍历广度优先遍历 N叉树的遍历方式求二叉树的属性二叉树:是否对称二叉树:求最大深度二叉树:求最小深度二叉树:求有多少个节点二叉树:是否平衡二叉树…

外贸财务软件精选,提升管理效率与精准度

ZohoBooks、QuickBooks等六款会计软件各具特色,支持多币种、国际化等功能,适合不同规模外贸企业。其中,ZohoBooks功能全面,QuickBooks操作简便,SageIntacct适合复杂业务,用友U8和金蝶K/3面向中大型企业&…

CommandLineRunner 和 ApplicationRunner

CommandLineRunner 和 ApplicationRunner 背景: 项目启动之前,预先加载数据。比如,权限容器、特殊用户数据等。通常我们可以使用监听器、事件来操作。但是,springboot提供了一个简单的方式来实现此类需求,即&#xf…

《Linux从小白到高手》理论篇(九):Linux的资源监控管理

本篇介绍Linux的资源监控管理。 1、CPU 资源管理 进程调度: Linux 采用公平的进程调度算法,确保每个进程都能获得合理的 CPU 时间。调度算法会根据进程的优先级、等待时间等因素来决定哪个进程获得 CPU 使用权。 可以通过调整进程的优先级来影响其获得…

C++继承实例讲解

C类继承的基本概念 base class,基类、父类 derived class,派生类、子类 C中的类可以扩展,创建保留基类特征的新类,这个过程称之为继承。类继承也可以描述为:派生类继承基类的成员,并在其上添加自己的成员…

【hot100-java】【单词搜索】

回溯 回溯可以使用DFS剪枝解决 class Solution {public boolean exist(char[][] board, String word) {char[] wordsword.toCharArray();for(int i0;i<board.length;i){for(int j0;j<board[0].length;j){if(dfs(board,words,i,j,0)) return true;}}return false;}boolean…

关于Elastic Search与MySQL之间的数据同步

目录 前言 思路分析 同步调用 异步通知 监听binlog 选择 实现数据同步 思路 运行项目 声明交换机、队列 1&#xff09;引入依赖 2&#xff09;声明队列交换机名称 3&#xff09;声明队列交换机 发送MQ消息 接收MQ消息 前言 Elastic Search中的酒店数据来自于MyS…

TypeScript 算法手册【插入排序】

文章目录 TypeScript 算法手册 - 插入排序1. 插入排序简介1.1 插入排序定义1.2 插入排序特点 2. 插入排序步骤过程拆解2.1 选择当前元素2.2 寻找插入位置2.3 插入元素 3. 插入排序的优化3.1 二分查找插入排序案例代码和动态图 4. 插入排序的优点5. 插入排序的缺点总结 【 已更新…