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

两句话,ChatGPT帮我写一个打飞机的游戏

大家好,我是全村的希望

今天的主题是让 chatGPT 来帮我们写一个打飞机的游戏

记得我刚学 Python 的时候,看的那本很经典的入门书《Python 编程:从入门到实践》,里面就有小项目就是教你编写一个打飞机的游戏

我那时候是对着书一个一个敲的代码,花了大半天的时间

现在有了 ChatGPT,让他来帮我们写一个,一起来看下效果怎么样

8b46214cbcae4a44690af3ac463180b4.png

代码如下:

import sys
import random
import pygame
from pygame.locals import QUIT, KEYDOWN, K_ESCAPE, K_SPACE

pygame.init()

FPS = 60  # 游戏帧率
fps_clock = pygame.time.Clock()

WINDOW_SIZE = (400, 600)  # 游戏窗口大小
WINDOW = pygame.display.set_mode(WINDOW_SIZE)
pygame.display.set_caption('Space Shooter')

PLAYER_IMG = pygame.image.load('player_ship.png')  # 玩家飞船图片
ENEMY_IMG = pygame.image.load('enemy_ship.png')  # 敌人飞船图片
BULLET_IMG = pygame.image.load('bullet.png')  # 子弹图片

class Enemy:
    def __init__(self):
        self.x = random.randint(0, WINDOW_SIZE[0] - ENEMY_IMG.get_width())
        self.y = -ENEMY_IMG.get_height()
        self.speed = random.randint(2, 5)

    def update(self):
        self.y += self.speed  # 更新敌人位置

    def draw(self):
        WINDOW.blit(ENEMY_IMG, (self.x, self.y))  # 绘制敌人

class Bullet:
    def __init__(self, x, y):
        self.x = x
        self.y = y
        self.speed = 10

    def update(self):
        self.y -= self.speed  # 更新子弹位置

    def draw(self):
        WINDOW.blit(BULLET_IMG, (self.x, self.y))  # 绘制子弹

def main():
    player_pos = [WINDOW_SIZE[0] // 2, WINDOW_SIZE[1] - 60]  # 玩家初始位置
    enemies = []  # 敌人列表
    bullets = []  # 子弹列表

    enemy_spawn_counter = 0  # 敌人生成计数器

    while True:
        WINDOW.fill((0, 0, 0))

        for event in pygame.event.get():
            if event.type == QUIT:  # 退出事件
                pygame.quit()
                sys.exit()

            if event.type == KEYDOWN:  # 按键事件
                if event.key == K_ESCAPE:
                    pygame.quit()
                    sys.exit()

                if event.key == K_SPACE:  # 空格键发射子弹
                    bullet_x = player_pos[0] + PLAYER_IMG.get_width() // 2 - BULLET_IMG.get_width() // 2
                    bullet_y = player_pos[1] - BULLET_IMG.get_height()
                    bullets.append(Bullet(bullet_x, bullet_y))

        keys = pygame.key.get_pressed()

        # 控制玩家移动
        if keys[pygame.K_LEFT]:
            player_pos[0] -= 5
        if keys[pygame.K_RIGHT]:
            player_pos[0] += 5
        if keys[pygame.K_UP]:
            player_pos[1] -= 5
        if keys[pygame.K_DOWN]:
            player_pos[1] += 5

        # 限制玩家飞船在窗口内移动

因为 chatGPT 的回答有长度限制,超过限制部分,直接和他说继续,他就能继续上面的回答

76ad14054ff124b3f1310e6530697a58.png
player_pos[0] = max(min(player_pos[0], WINDOW_SIZE[0] - PLAYER_IMG.get_width()), 0)
    player_pos[1] = max(min(player_pos[1], WINDOW_SIZE[1] - PLAYER_IMG.get_height()), 0)

    # 添加敌人
    enemy_spawn_counter += 1
    if enemy_spawn_counter >= 60:
        enemy_spawn_counter = 0
        enemies.append(Enemy())

    # 更新敌人
    for enemy in enemies:
        enemy.update()

    # 更新子弹
    for bullet in bullets:
        bullet.update()

    # 检查碰撞
    bullets[:] = [bullet for bullet in bullets if bullet.y > 0]  # 移除离开屏幕的子弹
    enemies[:] = [enemy for enemy in enemies if enemy.y < WINDOW_SIZE[1]]  # 移除离开屏幕的敌人

    for bullet in bullets:
        for enemy in enemies:
            if (
                bullet.x >= enemy.x
                and bullet.x <= enemy.x + ENEMY_IMG.get_width()
                and bullet.y >= enemy.y
                and bullet.y <= enemy.y + ENEMY_IMG.get_height()
            ):
                enemies.remove(enemy)
                bullets.remove(bullet)
                break

    # 绘制玩家飞船
    WINDOW.blit(PLAYER_IMG, player_pos)

    # 绘制敌人飞船
    for enemy in enemies:
        enemy.draw()

    # 绘制子弹
    for bullet in bullets:
        bullet.draw()

    pygame.display.update()  # 更新显示
    fps_clock.tick(FPS)  # 控制游戏帧率

这段代码是一个简单的打飞机游戏,添加了敌人的生成、移动和碰撞检测。当子弹与敌人碰撞时,敌人和子弹都会消失

两句话,整个代码已经生成了!!

可以看到代码注释还挺完整的,这里我故意对他做个了小小的测试,我故意没有放玩家飞船图片,子弹图片。然后将运行报错的提示发给chatGPT

2df048af053843e0282467c08a6a92bf.png

哈哈😄 他还挺不好意思的,然后告诉我要自己去提供图片,放到项目中

我随便在网上找了三个图片放进去,然后运行,来看下效果

哈哈哈😂效果还不错,图片我是随便找的,所以看着有点大...

可以看到ChatGPT是一个很强大的工具,很多行业将被重塑,也会出现很多新的行业职业,这是我们普通人最大的机会,希望每个人都能抓住。

而且ChatGPT的发展速度非常之快,最后的短板已经补上了,ChatGPT已经可以联网了

52b8ff1a4ccbeacdb4c86f95609bbe10.jpeg

你能想象这是过去一周发生的时候吗?!

我最近也一直在熟悉ChatGPT,还建了一个自己的圈子

抓住这次变革,让自己成为最早入局,最早驾驭ChatGPT那部分人

9a760508bacd850f5d83f6ef6022c52a.png

25fa92c15973b3261d380757bc8145ee.png

chatGPT 每个人都应该掌握的技能

ChatGPT插件系统正式开放,不用写代码,人人都是程序员


http://www.kler.cn/a/5792.html

相关文章:

  • 选择正确优化器,加速深度学习模型训练
  • 谈谈面向对象编程和面向过程编程
  • 容器、虚拟机和 Docker
  • 基于PHP的英语四六级在线模拟考试平台(论文+源码)_kaic
  • Python3 File flush() 方法、 Python3 File write() 方法
  • Chapter9.1:线性系统状态空间基础(上)
  • Java 8 中需要知道的4个函数式接口-Function、Consumer、Supplier、Predicate
  • 吉时利源表出现数据不准怎么办?
  • 通道流量设计
  • 自动驾驶路径规划与控制:讨论自动驾驶车辆的路径规划算法,如A*、Dijkstra等,以及控制策略,如PID控制等
  • 【数据结构与算法】线性表--数组
  • 利用json-server快速在本地搭建一个JSON服务
  • leetcode125:验证回文串
  • JavaScript函数及面向对象
  • GPT-4报告解读
  • 【HDR图像处理】HDR图像,HDRI技术的一些基础概念 | GPT对话记录
  • Appium - 自动化测试框架 - 工作原理、环境搭建
  • SpringBoot整合SpringSecurity权限控制(动态拦截url+单点登录)
  • 多机器人集群网络通信协议分析
  • 设计模式-结构型模式-适配器模式