大家好,我是全村的希望
今天的主题是让 chatGPT 来帮我们写一个打飞机的游戏
记得我刚学 Python 的时候,看的那本很经典的入门书《Python 编程:从入门到实践》,里面就有小项目就是教你编写一个打飞机的游戏
我那时候是对着书一个一个敲的代码,花了大半天的时间
现在有了 ChatGPT,让他来帮我们写一个,一起来看下效果怎么样
代码如下:
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 的回答有长度限制,超过限制部分,直接和他说继续,他就能继续上面的回答
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
哈哈😄 他还挺不好意思的,然后告诉我要自己去提供图片,放到项目中
我随便在网上找了三个图片放进去,然后运行,来看下效果
哈哈哈😂效果还不错,图片我是随便找的,所以看着有点大...
可以看到ChatGPT是一个很强大的工具,很多行业将被重塑,也会出现很多新的行业职业,这是我们普通人最大的机会,希望每个人都能抓住。
而且ChatGPT的发展速度非常之快,最后的短板已经补上了,ChatGPT已经可以联网了
你能想象这是过去一周发生的时候吗?!
我最近也一直在熟悉ChatGPT,还建了一个自己的圈子
抓住这次变革,让自己成为最早入局,最早驾驭ChatGPT那部分人