大家好,我是全村的希望
今天的主题是让 chatGPT 来帮我们写一个打飞机的游戏
记得我刚学 Python 的时候,看的那本很经典的入门书《Python 编程:从入门到实践》,里面就有小项目就是教你编写一个打飞机的游戏
我那时候是对着书一个一个敲的代码,花了大半天的时间
现在有了 ChatGPT,让他来帮我们写一个,一起来看下效果怎么样
代码如下:
import sys
import random
import pygame
from pygame.locals import QUIT, KEYDOWN, K_ESCAPE, K_SPACEpygame.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 = xself.y = yself.speed = 10def 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() // 2bullet_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] -= 5if keys[pygame.K_RIGHT]:player_pos[0] += 5if keys[pygame.K_UP]:player_pos[1] -= 5if 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 += 1if enemy_spawn_counter >= 60:enemy_spawn_counter = 0enemies.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.xand bullet.x <= enemy.x + ENEMY_IMG.get_width()and bullet.y >= enemy.yand 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那部分人
chatGPT 每个人都应该掌握的技能
ChatGPT插件系统正式开放,不用写代码,人人都是程序员