Python之pygame基础


一、下载

pip install pygame

在这里插入图片描述


二、基础应用

2.1 生成窗口

代码如下(示例):

import pygame

#游戏初始化
pygame.init()

#pygame有两个窗口,一个当前显示的,一个隐藏的
#生成游戏窗口 先黑再白
screen = pygame.display.set_mode((800,600))
screen.fill((255,255,255))#改变颜色
pygame.display.flip()#相当于把之前的动作显示出
 
#游戏帧循环
gRunning = True
while gRunning:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            gRunning = False

#退出游戏
pygame.quit()

这是一个渐变过程由黑变白(没有放GIF图)
在这里插入图片描述

2.2 加入图片

代码如下(示例):

# 图片显示  先黑再图片
# 我使用的是绝对路径   一定要加r
image = pygame.image.load(r'F:\python\python2021\python_gui\cdsc.jpg')

screen.blit(image,(0, 0))#起始点位置坐标 (0,0)

在这里插入图片描述

2.2 加入声音

代码如下(示例):

#播放声音
voice = pygame.mixer.music.load(r'F:\MP3音乐\千年之恋.mp3')
pygame.mixer.music.play()

2.3 改变颜色

代码如下(示例):

from pygame.color import THECOLORS

screen.fill(THECOLORS['red'])

在这里插入图片描述

2.4 加入图形

代码如下(示例):

#画形状 末0 线条宽度
pygame.draw.rect(screen,THECOLORS['blue'],[0,0,200,400],0)
pygame.draw.circle(screen,THECOLORS['green'],[400,300],100,10)

在这里插入图片描述


三、Pygame飞机

3.1 飞机跳跃

代码如下(示例):

gRunning = True
while gRunning:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            gRunning = False
    pygame.time.delay(1000)#延迟1s
    pygame.bilt(img,(400,300))#screen中心位置
    # 当飞机跳跃到新位置时,擦去旧位置飞机
    # img.get_rect()得到图片的坐标以及长宽  
    pygame.draw.rect(screen,THECOLORS['white'],img.get_rect(),0) 
    pygame.display.flip()

在这里插入图片描述

3.2 飞机碰壁回弹

代码如下(示例):

# 坐标
plane_x = 0
plane_y = 0
# 位置
plane_speed_x = 5
plane_speed_y = 5
......
gRunning = True
while gRunning:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            gRunning = False
    pygame.time.delay(20)
	pygame.draw.rect(screen,THECOLORS['white'],[plane_x,plane_y,img.get_width(),img.get_height()],0)
	plane_x = plane_x+plane_speed_x
	plane_y = plane_y+plane_speed_y
	if plane_x > 800-img.get_width() or plane_x < 0:
	plane_speed_x = - plane_speed_x#取反
	if plane_y > 600-img.get_height() or plane_y < 0:
	plane_speed_y = - plane_speed_y#取反
	screen.blit(img,(plane_x,plane_y))
	pygame.display.flip()

在这里插入图片描述

3.3 模拟飞机

代码如下(示例):

class Plane:

	def __init__(self,img,position,speed,MaxWindow):
		self.img = img
		self.rect = img.get_rect()
		self.rect.left,self.rect.top = position
		self.speed = speed
		self.MaxWindow = MaxWindow
		
	def move(self):
		self.rect = self.rect.move(self.speed)
		if self.rect.left < 0 or self.rect.right >self.MaxWindow[0]:
			self.speed[0] = -self.speed[0]
		if self.rect.top< 0 or self.rect.bottom>self.MaxWindow[1]:
			self.speed[1] = -self.speed[1]

pygame = init()		

W_size = (800,600)

screen = pygame.display.set_mode(W_size)
screen.fill(THECOLORES['white'])
# 飞机图片
planeImg = pygame.image.load('plane.png')
# 多架飞机
planes = []
for i in range(5)
	position = [random.randint(0,W_size[0]-planeImg.get_width(),random.randint(0,W_size[1]-planeImg.get_hright())]
	speed = [random.randint(-5,5),random.randint(-5,5)]
	planes.append(Plane(planeImg,position,speed,W_size))	

pygame.display.flip()

gRunning = True
while gRunning:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            gRunning = False
    pygame.time.delay(20)
	#清楚上一架飞机位置
	screen.fill(THECOLORES['white'])
	#更新飞机的下一帧位置
	for plane in planes:
		plane.move()
		screen.blit(plane.img,plane.rect)
	#把刚才刷新的帧显示出来
	pygame.display.flip()

pygame.quit()

在这里插入图片描述


总结

问题1:使用相对路径加载图片出错

在这里插入图片描述
PS F:\python\python2021> python -u “f:\python\python2021\python_gui\pygame1.py”
pygame 2.0.1 (SDL 2.0.14, Python 3.7.0)
Hello from the pygame community. https://www.pygame.org/contribute.html
Traceback (most recent call last):
File “f:\python\python2021\python_gui\pygame1.py”, line 14, in
image = pygame.image.load(img)
FileNotFoundError: No such file or directory.

猜你喜欢

转载自blog.csdn.net/HG0724/article/details/113003094