flutter_ai_asteroids
使用 ChatGPT (GPT-4) 构建的 Flutter 小行星游戏。
下面包含了用于生成应用程序代码的提示。我只包括了对话的第一部分(最有趣的),因为最后一部分更多的是关于细节和调试。然而,对话的结尾处有一些调试内容,了解 ChatGPT 在这类任务中有多大帮助是很有趣的。
在对话结束时,我为游戏添加了一个背景图片。这张图片是使用 DreamStudio from stability.ai 生成的。以下是使用的提示(使用了“数字艺术”风格)
An image of outer space, including mostly lots of distant stars and some small galaxies and colourful nebulae. Viewed from the surface of an alien moon.
下面是 ChatGPT 对话。
用户
你好。你能帮我用 Flutter 构建一个 Asteroids 游戏应用吗?
用户
你能先帮我创建第 3 步中提到的所需类和数据结构吗?让它们尽可能简单,以便能够实现游戏的基本版本。
用户
太好了!同样,你能帮我创建第 4 步中提到的游戏逻辑吗?
用户
太棒了!现在,你能帮我编写 UI 代码,如第 5 步所述吗?
用户
太好了!你能也为以下操作添加逻辑和按钮吗?
- “右”——将飞船向右旋转
- “左”——将飞船向左旋转
- “+”——增加飞船速度
- “-”——减小飞船速度
也请使用三角形作为飞船的形状。
用户
太好了!你能也帮我编写游戏结束逻辑吗?
- 当所有小行星都被摧毁时——显示一个大的绿色文本“游戏结束”以及总分数。
- 如果与小行星碰撞,则显示一个大的红色文本“你撞毁了!”以及总分数。
对于这两种情况,首先移除或隐藏游戏 UI,并包含一个“重玩”按钮,该按钮会重新启动游戏。
用户
你能让游戏 UI 全屏吗?也将按钮放在底部的单行中,并留有间距。你能将键盘按键事件连接到按钮上吗?例如,使用箭头键进行转向或控制速度,使用空格键进行射击?
用户
我收到一个 RawKeyDownEvent 的错误。此应用程序需要哪些导入?
用户
按键事件似乎不起作用。按键代码是否正确?
用户
好的,谢谢!你能让游戏对象离开屏幕时,它们能在另一侧重新出现吗?
用户
我不确定这是否有效,屏幕尺寸是否应该传递给 GameController 的 update 方法?在 GameObject 基类中实现屏幕边缘环绕的逻辑是否足够?并将屏幕尺寸作为参数传递给 move 方法?
用户
谢谢,但是 move 和 update 方法的命名似乎存在差异。
用户
CustomPaint 的尺寸似乎有问题。
用户
请使用此背景图片用于整个应用程序:https://prototyingstorage.blob.core.windows.net/files/space-background.png
要使用背景图片,可以将 `Image.network` 添加为 `Stack` 小部件的第一个子项。
Stack(
children: <Widget>[
Image.network(
'https://prototyingstorage.blob.core.windows.net/files/space-background.png',
width: screenSize.width,
height: screenSize.height,
fit: BoxFit.cover,
),
//...
],
);
