速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

Amazon Q Developer 实践:零基础创建贪吃蛇游戏

  • 2024-11-01
    北京
  • 本文字数:4705 字

    阅读完需:约 15 分钟

大小:2.30M时长:13:22
Amazon Q Developer 实践:零基础创建贪吃蛇游戏

本文探讨了如何使用 Amazon Q Developer 根据结构化的提示词,直接生成一个贪吃蛇游戏原型,并剖析了其背后人工智能的思考和迭代完善过程,展示了人工智能能快速进行游戏原型创作的巨大潜力。


原文出处来自作者于 2024 年 9 月在 community.aws 发表的技术文章:


“From Concept to Playable in Seconds: Creating the Greedy Snake Game with Amazon Q Developer”


概述


在我之前的“Amazon Bedrock 实践:零基础创建贪吃蛇游戏”的文章中,我展示了如何使用 Amazon Bedrock 和结构化的文本提示词,直接生成贪吃蛇游戏原型的完整过程。文章发表后,许多开发人员反馈说深受这篇文章的启发,并好奇地询问 Amazon Q Developer 是否也能够类似这样来直接生成贪吃蛇游戏原型。这就是我将在本文中具体和各位开发者探讨的内容。


贪吃蛇是一款风靡了几代人的老式游戏。游戏目标很简单:


通过控制一条不断增长的小蛇,引导它吃下食物,同时避免撞到游戏界面的边界或蛇身。小蛇吃下越多食物,身体就会越长,游戏难度也就越大,需要玩家迅速反应和具备全局策略思维。


接下来,让我们看看 Amazon Q Developer 通过结构化的自然语言提示词,来直接生成完整贪吃蛇游戏原型代码的非凡能力。


提示词


我将使用之前那篇关于 Amazon Bedrock 生成贪吃蛇原型代码的博客文章中,相同的结构化提示词,来与 Amazon Q Developer 进行交互;这样各位读者将可以观察到:Amazon Q Developer 和 Amazon Bedrock 在整个代码生成过程中的具体差异和区别。


以下是我用于生成贪吃蛇游戏原型代码的提示词:


“Write a short and high-quality python script for the following task, something a very skilled python expert would write. You are writing code for an experienced developer so only add comments for things that are non-obvious. Make sure to include any imports required. 


NEVER write anything before the ```python``` block. After you are done generating the code and after the ```python``` block, check your work carefully to make sure there are no mistakes, errors, or inconsistencies. 


If there are errors, list those errors in tags, then generate a new version with those errors fixed. If there are no errors, write "CHECKED: NO ERRORS" in tags. 


Here is the task: write a greedy snake game.

Double check your work to ensure no errors or inconsistencies.”


如上所述,整段结构化的提示词提供了对游戏的主要功能、需使用的库、以及其他实现细节的详细要求。在提示词中提供这种程度的具体细节描述,对于获得高质量的代码输出至关重要。


开发特性 /dev


如下图所示,在 Amazon Q Developer 聊天对话框中,我在输入提示词描述之前,先输入了 "/dev"。



在 Amazon Q Developer 的上下文中,"/dev" 是一个特殊命令,用于调用 Amazon Q Developer Agent 进行软件开发,而不是指 Linux 系统中的目录。


您可以参考 Amazon Q Developer Agent 文档,以了解详细信息。


与 Amazon Q Developer 互动


以下截图展示了与 Amazon Q Developer 的聊天互动界面。我要求其为贪吃蛇游戏原型生成高质量的 Python 脚本,其确认了该请求,并告知我生成代码可能需要的时间(几分钟)。



数分钟后,Amazon Q Developer 以思考过程汇总的形式作出了回应,这其实也体现了其背后大型语言模型的思考过程,如下图所示。



让我们来一起梳理 Amazon Q Developer 的思考过程。


根据 Amazon Q Developer 的以上汇总摘要,其创建一款贪食蛇游戏原型经历了以下步骤:


首先,它计划打开与编写贪食蛇游戏的问题陈述相关的现有本地代码,以探索工作空间并确定是否有可以重用或修改的代码。


接着,它发现因为工作区是空的,没有与贪吃蛇游戏相关的代码文件,需要自己重新编写。为了解决这个问题,它决定创建一个名为 "snake_game.py" 的 Python 新文件,并准备从头开始实现贪食蛇游戏原型代码。


贪食蛇游戏原型代码,随后在 "snake_game.py" 的 Python 文件中被它实现了,它还声明:代码已经完成并能正常运行了。


然后,它对代码进行了仔细地审阅。审阅完成后,它确认了贪食蛇游戏原型的代码已经完整实现,并已经能够正常运行了。它还特别提及:代码已经包括了所有必需的组件,例如游戏初始化、主游戏循环、蛇形移动、食物生成、碰撞检测和得分显示等等。


图中底部的 "Files used" 部分,总结了代码生成过程中执行的文件操作,供我们参考。


输出完整的贪吃蛇游戏原型代码


以下代码即由 Amazon Q Developer 完整生成的游戏原型代码。


import pygame

import random

# Initialize Pygame

pygame.init()

# Set up the game window

width, height = 640, 480

window = pygame.display.set_mode((width, height))

pygame.display.set_caption("Greedy Snake")

# Colors

BLACK = (0, 0, 0)

WHITE = (255, 255, 255)

RED = (255, 0, 0)

GREEN = (0, 255, 0)

# Snake properties

snake_block = 20

snake_speed = 15

# Initialize clock

clock = pygame.time.Clock()

# Font for score display

font = pygame.font.SysFont(None, 50)

def draw_snake(snake_list):

for block in snake_list:

pygame.draw.rect(window, GREEN, [block[0], block[1], snake_block, snake_block])

def game_loop():

game_over = False

game_close = False

# Starting position of the snake

x1 = width // 2

y1 = height // 2

# Initial movement

x1_change = 0

y1_change = 0

# Initialize snake

snake_list = []

length_of_snake = 1

# Generate first food

foodx = round(random.randrange(0, width - snake_block) / snake_block) * snake_block

foody = round(random.randrange(0, height - snake_block) / snake_block) * snake_block

while not game_over:

while game_close:

window.fill(BLACK)

message = font.render("You Lost! Press Q-Quit or C-Play Again", True, RED)

window.blit(message, [width // 6, height // 3])

pygame.display.update()

for event in pygame.event.get():

if event.type == pygame.KEYDOWN:

if event.key == pygame.K_q:

game_over = True

game_close = False

if event.key == pygame.K_c:

game_loop()

for event in pygame.event.get():

if event.type == pygame.QUIT:

game_over = True

if event.type == pygame.KEYDOWN:

if event.key == pygame.K_LEFT:

x1_change = -snake_block

y1_change = 0

elif event.key == pygame.K_RIGHT:

x1_change = snake_block

y1_change = 0

elif event.key == pygame.K_UP:

y1_change = -snake_block

x1_change = 0

elif event.key == pygame.K_DOWN:

y1_change = snake_block

x1_change = 0

# Check if snake hits the boundaries

if x1 >= width or x1 < 0 or y1 >= height or y1 < 0:

game_close = True

x1 += x1_change

y1 += y1_change

window.fill(BLACK)

pygame.draw.rect(window, RED, [foodx, foody, snake_block, snake_block])

snake_head = [x1, y1]

snake_list.append(snake_head)

if len(snake_list) > length_of_snake:

del snake_list[0]

# Check if snake hits itself

for segment in snake_list[:-1]:

if segment == snake_head:

game_close = True

draw_snake(snake_list)

# Display score

score = font.render(f"Score: {length_of_snake - 1}", True, WHITE)

window.blit(score, [0, 0])

pygame.display.update()

# Check if snake eats food

if x1 == foodx and y1 == foody:

foodx = round(random.randrange(0, width - snake_block) / snake_block) * snake_block

foody = round(random.randrange(0, height - snake_block) / snake_block) * snake_block

length_of_snake += 1

clock.tick(snake_speed)

pygame.quit()

quit()

if __name__ == "__main__":

game_loop()


以下截图展示了以 Amazon Q Developer 生成的贪吃蛇游戏原型代码片段为背景,前景为该游戏代码运行时的截图:



在深入了解 Amazon Q Developer 实现的游戏原型代码之前,理解 Pygame 在游戏开发中的作用是非常重要的。Pygame 是一组专门用于编写多媒体应用程序(包括游戏)的 Python 模块。它提供了丰富的功能,从处理图形、声音,到管理用户输入、游戏事件等等。


上述代码是使用 Pygame 库编写的经典贪吃蛇游戏原型的 Python 实现。


其主要功能包括:设置游戏窗口、初始化蛇和位置、生成食物、处理用户输入以控制蛇身移动、检测与边界或蛇身是否发生碰撞、更新游戏状态,以及在屏幕上渲染游戏元素等等。游戏将持续进行,直到蛇与边界或自身发生碰撞,此时玩家可以选择退出或重新启动游戏。


不过,如果你是一个游戏新手,以上 AI 生成的游戏原型代码运行后,蛇移动的速度可能会过快,从而让游戏初级玩家无法掌控。


因此,我接着给 Amazon Q Developer 又安排了一个新任务:


调整蛇奔跑的速度。


调整蛇的奔跑速度


以下是我拟提交给 Amazon Q Developer 的交互对话框,从而可以调整贪吃蛇游戏中蛇奔跑速度的英文提示词:


“The code works, but the speed of the snake is too fast. I'm just a beginner at the game, could you adjust the game's speed for me?”



在提交提示词后,Amazon Q Developer 迅速作出回应,截图如下所示:



以上截图展示了一段我和 Amazon Q Developer 的聊天对话记录。


我要求对贪吃蛇游戏的代码进行调整,并表示当前的速度对于初学者来说太快了。


Amazon Q Developer 的回复,解释了如何将初始值为 15 的 snake_speed 变量修改为较低的 8。这样蛇的移动速度就会减慢,游戏对初级玩家来说会更加易于控制。底部的代码片段显示了将 snake_speed 从 15 改为 8,并添加了注释说明这一调整。


你可以按照上述建议进行操作,只需要修改其中一行代码,如下所示:


snake_speed = 8


把新修改后的代码运行起来。你会发现:蛇奔跑的速度比之前慢多了,即使是游戏初级玩家也可以自由地控制蛇的运行啦!


小结


本文展示了 Amazon Q Developer 在根据自然语言的结构化提示词,生成游戏原型代码方面的卓越潜力。


生成的代码体现了 Amazon Q Developer 以及其背后的大模型,理解复杂需求、利用流行库以及根据用户反馈进行迭代改进的巨大潜力。通过调整蛇的速度,其展现了对个性化游戏体验的适应性探索,而整个思维过程的汇总提供了其宝贵的见解,增强了人类对 AI 系统的透明度和信任度。


随着 AI 技术的不断进步,像 Amazon Q Developer 这样的 AI 工具有可能彻底改变软件开发领域,加速应用程序或游戏的原型制作和迭代周期,并极大地促进创新。虽然本文展示的贪吃蛇游戏只是一个较简单的案例,但 Amazon Q Developer 展示出来的能力,为其在更复杂的应用程序开发方向开辟了令人兴奋的无限可能。

2024-11-01 16:387273

评论

发布
暂无评论
发现更多内容

AI笔刷怎样导入?adobe ai笔刷安装教程

Rose

AI画笔 AI教程 Illustrator 2023 下载 AI中文版

Atlassian Server用户新选择 | 迁移到数据中心版前,您需要做这些准备(1)

龙智—DevSecOps解决方案

Atlassian Atlassian迁移 数据中心版 server版

MQTT 5.0特性Inflight Window&Message Queue

EMQ映云科技

物联网 IoT mqtt emqx 企业号 3 月 PK 榜

CorelDRAW Graphics Suite2023功能介绍

茶色酒

cdr2023

StyleGAN 生成 AI 虚拟人脸,再也不怕侵犯肖像权

极客飞兔

人工智能 AI 图像处理 StyleGAN 人脸生成

GO语言集成开发: GoLand 2022 中文激活版

真大的脸盆

Mac 代码开发 Mac 软件 代码编辑 代码编辑工具

代码实战带你了解深度学习中的混合精度训练

华为云开发者联盟

人工智能 深度学习 华为云 华为云开发者联盟 企业号 3 月 PK 榜

币安欧意交易所合约跟单平台软件开发详情(api对接)

开发微hkkf5566

EMQ&南洋万邦云边一体化方案:激活数据潜力,打造智慧工业园区

EMQ映云科技

物联网 IoT 工业互联网 智能制造 企业号 3 月 PK 榜

TechBits | TCP 使用 WireShark 进行抓包

Java你猿哥

Java 后端 ssm

阿里巴巴灵魂一问:说说触发HashMap死循环根因

Java你猿哥

Java jdk 后端 ssm

PostgreSQL:psql 介绍

天翼云开发者社区

Linux进程学习【进程地址】

Yohifo

Linux 学习 运维 后端 进程

开启一个A/B实验到底有多简单?

字节跳动数据平台

云服务 AB testing实战 ab测试 企业号 3 月 PK 榜

Go Slice 扩容的这些坑你踩过吗?

王中阳Go

Go golang 高效工作 学习方法 面试题

简单小巧的右键助手:MouseBoost for Mac让您的工作效率大幅度提高

Rose

mac效率工具 右键助手 MouseBoost激活版

2023金三银四最新Java面试题大全(整理版)1000+面试题附答案详解

架构师之道

程序员 java面试

Java体系最强干货分享—挑战40天准备Java面试,最快拿到offer!

Java你猿哥

Java 后端 ssm 面经 春招

如何基于 Apache Doris 与 Apache Flink 快速构建极速易用的实时数仓

SelectDB

flink 数据湖 实时数仓 Doris 数据库、

深入理解关键字volatile

小小怪下士

Java 程序员 volatile 关键字

Perforce研讨会回顾 | Helix Core在芯片行业的应用实例:芯片项目的版本控制、持续集成及自动化

龙智—DevSecOps解决方案

ci cicd 版本控制 持续集成 芯片开发

Neural Filters神经滤镜插件如何安装?PS神经滤镜插件安装教程

Rose

mac系统 Neural Filters PS滤镜插件 PS20221下载

如何利用ChatGPT搞科研?

Openlab_cosmoplat

人工智能 开源社区 ChatGPT

通通透透看无服务器计算:由来、场景和问题

天翼云开发者社区

听说火山引擎推出的DataLeap,已经可以支持万级表的数据血缘图谱了!

字节跳动数据平台

大数据 数据治理 数据研发 企业号 3 月 PK 榜

代码质量与安全 | 免费的静态分析工具好吗?

龙智—DevSecOps解决方案

SAST 静态代码扫描 DAST

Portraiture最新版插件新增哪些功能?

茶色酒

Portraiture4

Apache Doris 1.2.3 Release 版本正式发布

SelectDB

数据仓库 数据湖 Doris 数据湖Catalog catalog

大语言模型必将取代一切?暂时不会!

深数

人工智能 科技 AGI GPT LLM

GPT-4:不open的OpenAI,终于不再编造事实

鼎道智联

openai ChatGPT4

Amazon Q Developer 实践:零基础创建贪吃蛇游戏_亚马逊云科技_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章