Python学习-1 pygame
为了引导小孩学习编程,选择他喜欢的我的世界素材
1、安装python,目前最新版本python311.exe
https://www.python.org/
https://www.python.org/ftp/python/3.11.2/python-3.11.2-amd64.exe
2、安装完毕后执行
pip3 install pygame
如果本机上有其他版本python3,要进入新安装版本目录,并复制修改python为python311,不然后面会出错。
3、打开vscode,输入以下代码(使用小球展示代码修改的)
import sys import pygame print(pygame) pygame.init() # init() 用来对python进行初始化, 因为pygame是跨平台的所以需要先根据所在系统与环境初始化 # pygame.display 该对象负责游戏窗口的显示 # set_mode(resolution=(0,0)) -> Surface 表面/图层 # 该方法用来设置游戏窗口的大小,调用该方法,会立即显示一个游戏窗口 # 需要一个元组作为参数,元组中有两个参数 # 第一个 是屏幕的宽度 # 第二个 是屏幕的高度 # 该方法会返回一个surface对象,该对象表示画面中的一个基本元素,游戏中的所有元素都是一个一个图层组成 screen = pygame.display.set_mode((1024, 768)) # print(screen) # <Surface(800x600x32 SW)> 代表整个窗口 # set_caption 用来设置游戏窗口的标题 pygame.display.set_caption('小球丝滑移动') # 设置窗口的背景颜色 给screen设置颜色,设置颜色值,使用的是RGB值【光的三原色】 0-255 表示一个字节 screen.fill((220, 220, 220)) # 使用fill,来为surface设置背景颜色 # image 对象专门用来加载图片 # pygame.image.load(img_path) -> surface ball = pygame.image.load('intro_ball.gif') ball1 = pygame.image.load('intro_ball1.gif') # print(ball) # <Surface(111x111x8 SW)> # Rect 表示矩形,即每一个图层在窗口中,所占的位置实际上都是一个矩形 ball_rect = ball.get_rect() ball1_rect = ball1.get_rect() screen_rect = screen.get_rect() # print(ball_rect) # <rect(0, 0, 111, 111)> # 【坐标与我们数学中的,在y轴方向是向下的,x轴一样】 通过改变矩形对象的x 和 y来影响 矩形的位置 # ball_rect.x = 100 # ball_rect.y = 100 # centerx 和 centery 用来设置图层中心位置坐标 --> 去到窗口的中心位置 ball_rect.centerx = screen_rect.centerx ball_rect.centery = screen_rect.centery ball1_rect.centerx = screen_rect.centerx ball1_rect.centery = screen_rect.centery # blit(source, dest, area=None, special_flags = 0) -> Rect # 这是surface的方法,可以将一个其他的图层绘制到当前图层中 # 参数: # 1.要绘制的图层 # 2.绘制图层的位置 <rect(0, 0, 111, 111)> screen.blit(ball, ball_rect) screen.blit(ball1, ball1_rect) # flip 对整个窗口进行渲染 # Update the full display Surface to the screen pygame.display.flip() # 创建一个存储小球移动方向的变量 ball_dir = 0 # 创建一个存储小球移动速度的变量 ball_speed = 1 font1=pygame.font.SysFont("幼圆",48) text1_0=font1.render("哈哈哈啊",True,(255,0,0)) # 创建一个游戏主循环【任何一个游戏都有一个无限循环在运行着】 while 1: # event 是pygame中的事件对象,通过event可以获取事件信息 # lst = pygame.event.get() # 列表中都是当前所发生的事件对象 for event in pygame.event.get(): # 判断用户是否点击关闭 if event.type == pygame.QUIT: sys.exit() # 检查用户是否敲击键盘 elif event.type == pygame.KEYDOWN: # 获取用户按下的按键, key 用来在键盘按下时,会获取按键的编号 # print(event.key) ball_dir = event.key # 只控制方向 elif event.type == pygame.KEYUP: # 按键松开停止移动 【这里注意有个按住多个方向键问题】 # 注意 这里要解决一个问题:即我们按住左键球向左移动,但是我们同时按住右键,再松开左键就停止了 if ball_dir == event.key: ball_dir = 0 if ball_dir == pygame.K_UP: # 小球向上移动,y值减小 ball_rect.y -= ball_speed elif ball_dir == pygame.K_DOWN: ball_rect.y += ball_speed elif ball_dir == pygame.K_LEFT: ball_rect.x -= ball_speed elif ball_dir == pygame.K_RIGHT: ball_rect.x += ball_speed # else: # # 回到初始位置 # ball_rect.centerx = screen_rect.centerx # ball_rect.centery = screen_rect.centery # 控制小球的位置是否超过左右边界 if ball_rect.left < 0: # 也可以是 ball_rect.x ball_rect.left = 0 elif ball_rect.right > screen_rect.width: ball_rect.right = screen_rect.width # 控制小球的位置是否超过上下边界 if ball_rect.top < 0: # 也可以是 ball_rect.y ball_rect.top = 0 elif ball_rect.bottom > screen_rect.height: ball_rect.bottom = screen_rect.height # 需要先盖一层,防止画完小球一直存在无法体现移动 screen.fill((220, 220, 220)) screen.blit(ball1, ball1_rect) screen.blit(ball, ball_rect) screen.blit(text1_0,(100,100)) pygame.display.flip()
4、下载图片到当前目录
本博客是个人工作中记录,更深层次的问题可以提供有偿技术支持。
另外建了几个QQ技术群:
2、全栈技术群:616945527
2、硬件嵌入式开发: 75764412
3、Go语言交流群:9924600
闲置域名WWW.EXAI.CN (超级人工智能)出售。
另外建了几个QQ技术群:
2、全栈技术群:616945527
2、硬件嵌入式开发: 75764412
3、Go语言交流群:9924600
闲置域名WWW.EXAI.CN (超级人工智能)出售。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2022-02-24 查看容器占用磁盘大小
2020-02-24 vue自学入门-8(vue slot-scope)
2020-02-24 vue自学入门-7(vue style scope)
2020-02-24 vue自学入门-6(vue jsx)
2020-02-24 Angular8入门-4 状态管理
2018-02-24 STM32固件库下载地址
2018-02-24 C#实现虚拟控件列表显示100w个控件方法