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 (超级人工智能)出售。