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

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

大家好,我是全村的希望

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

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

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

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

8b46214cbcae4a44690af3ac463180b4.png

代码如下:

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 的回答有长度限制,超过限制部分,直接和他说继续,他就能继续上面的回答

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 += 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

2df048af053843e0282467c08a6a92bf.png

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

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

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

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

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

52b8ff1a4ccbeacdb4c86f95609bbe10.jpeg

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

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

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

9a760508bacd850f5d83f6ef6022c52a.png

25fa92c15973b3261d380757bc8145ee.png

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

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

http://www.lryc.cn/news/45001.html

相关文章:

  • 计算机图形学14:三维图形的投影变换
  • 【ChatGPT4】王老师零基础《NLP》(自然语言处理)第二课
  • 设计模式之中介者模式在前端的应用
  • 2023年还能入行程序员吗?工作3年以上的黑马老学员怎么说?
  • 接收机的噪声来源与噪声分析
  • Android FrameWork——SystemServer
  • 婴儿推车ASTMF883测试
  • 射频接收机概述
  • 实验三Numpy知识点总结
  • Code Review时学到的技巧之isAssignableFrom
  • IP协议以及相关技术
  • SpringBoot 项目使用 Sa-Token 完成登录认证
  • javaScript 蓝桥杯----梅楼封的一天
  • 谷粒商城笔记+踩坑(18)——购物车
  • 进阶C语言:指针笔试题
  • 基于SSM(jsp)的宿舍管理系统
  • Java Web应用开发——作业四
  • 基于ASP的反垃圾邮件管理系统的设计与实现
  • 2010年9月计算机二级JAVA笔试试题及答案
  • 博客让谷歌或是百度收录
  • 机器学习分类算法评价指标
  • Socks5代理服务器示例详解
  • 使用 Docker 和 Nginx 反向代理访问 ChatGPT API
  • [前端笔记038]vue2之vueRouter、elementUI
  • ChatGPT使用案例之操作Excel
  • 【算法基础】(二)数据结构 --- 单链表
  • STL容器之<multiset>
  • python实战应用讲解-【numpy专题篇】numpy常见函数使用示例(三)(附python示例代码)
  • 【Android笔记89】Android之全局加载框Gloading的使用
  • php微信小程序java+Vue高校课程课后辅导在线教育系统nodejs+python