1.一个可以关闭的空白窗体
# 创建一个可关闭的窗体
import sys
import pygame
# 先导入sys pygame模块
# 初始化
pygame.init()
# 使用set_mode 初始化窗体大小 并且返回Surface 面(绘制内容)
screen = pygame.display.set_mode((600, 400))
screen.fill((255, 255, 255))
while True:
# 阻塞获取的事件(停留在这里 直到获取事件 只能获取一次(一旦此处获取事件 其他位置不能再次获取事件) )
for event in pygame.event.get():
# QUIT == 256 关闭事件
if event.type == pygame.QUIT:
# 关闭窗体
pygame.quit()
# 退出系统
sys.exit()
pygame.display.flip()
1.基本框架
import pygame (导库)
pygame.init() (初始化)
screen = pygame.display.set_mode((600,400)) (设置大小)
第一个参数(600, 400)表示画布的大小,600表示画布的宽,400表示画布的高。注意是放在括号里。变量screen代表设置的画布,注意是双扩号,画布大小的单位是像素。
screen.fill((255,255,255)) (设置颜色)
这里使用的是变量screen,而不是pygame库,(255,255,255)是RGB颜色值,需要使用扩号
RGB颜色结构:
(num1,num2,num3)
num1是0-255的整数,代表R(red-红色),数字越大,颜色中红色成分越多
num2是0-255的整数,代表G(green-绿色),数字越大,颜色中绿色成分越多
num3是0-255的整数,代表B(blue-蓝色),数字越大,颜色中蓝色成分越多
while True: (主循环)
#阻塞获取的事件(停留在这里 直到获取事件 只能获取一次(一旦此处获取事件 其他位置不能再次获取事件) )
for event in pygame.event.get():
#QUIT == 256 关闭事件
if event.type == pygame.QUIT:
# 关闭窗体
pygame.quit()
# 退出系统
sys.exit()
pygame.display.flip() (更新画布)
#我们需要让画布一直显示,所以需要放进循环里
2.使用精灵显示背景
import pygame
import sys
# 初始化
pygame.init()
# 设置窗体
screen = pygame.display.set_mode((400, 600))
pygame.display.set_caption("pygame精灵使用")
# 声明一个精灵背景
class BgSprite(pygame.sprite.Sprite):
"""
声明背景精灵类 用于控制背景显示
"""
def __init__(self, name):
# 切记 需要调用初始化函数 需要有image属性 需要有rect属性
super().__init__()
self.image = pygame.image.load(name)
self.rect = self.image.get_rect()
# 精灵组
bg_group = pygame.sprite.Group()
# 生命精灵实例
bg1 = BgSprite("img/bg.png")
# 将精灵实例加入精灵组
bg1.add(bg_group)
while True:
for event in pygame.event.get():
# 退出窗体
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
# 将精灵组绘制到屏幕
bg_group.draw(screen)
# 更新屏幕
pygame.display.flip()
pygame.display.set_caption("pygame精灵使用") (设置窗口名称)
3.背景循环显示
import pygame, sys
class BaseSprite(pygame.sprite.Sprite):
def __init__(self, name):
"""
初始化精灵
"""
super().__init__()
self.image = pygame.image.load(name)
self.rect = self.image.get_rect()
def update(self):
"""
更新精灵
"""
class BGSprite(BaseSprite):
def __init__(self, name, top_left):
super().__init__(name)
self.rect.topleft = top_left
def update(self):
self.rect.top += 10
if self.rect.top >= 700:
self.rect.top = -700
class BGManage:
def __init__(self, gm):
self.gm = gm
self.bg_group = pygame.sprite.Group()
BGSprite("img/bg.png", (0, 0)).add(self.bg_group)
BGSprite("img/bg.png", (0, -700)).add(self.bg_group)
def update(self):
self.bg_group.update()
self.bg_group.draw(self.gm.screen)
class Manage:
def __init__(self):
pygame.init()
self.screen = pygame.display.set_mode((400, 600))
self.bg_manage = BGManage(self)
self.clock = pygame.time.Clock()
def run(self):
while True:
self.clock.tick(20)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
self.bg_manage.update()
pygame.display.flip()
bm = Manage()
bm.run()
4. 使用精灵玩家,玩家可以移动
import pygame, sys
class BaseSprite(pygame.sprite.Sprite):
def __init__(self, name):
"""
初始化精灵
"""
super().__init__()
self.image = pygame.image.load(name)
self.rect = self.image.get_rect()
def update(self):
"""
更新精灵
"""
class PlayerSprite(BaseSprite):
def __init__(self, name, center, gm):
BaseSprite.__init__(self, name)
self.gm = gm
self.rect.center = center
def update(self):
key_pressed = pygame.key.get_pressed()
if key_pressed[pygame.K_LEFT] and self.rect.left > 0:
self.rect.left -= self.speed
if key_pressed[pygame.K_RIGHT] and self.rect.right < 480:
self.rect.left += self.speed
if key_pressed[pygame.K_UP] and self.rect.top > 0:
self.rect.top -= self.speed
if key_pressed[pygame.K_DOWN] and self.rect.bottom < 700:
self.rect.top += self.speed
class PlayerManage:
def __init__(self, gm):
self.gm = gm
self.player_group = pygame.sprite.Group()
self.player = PlayerSprite("images/me1.png", (240, 500), self.gm)
self.player.add(self.player_group)
def update(self):
self.player_group.update()
self.player_group.draw(self.gm.screen)
class GameManage:
def __init__(self):
pygame.init()
self.screen = pygame.display.set_mode((480, 700))
pygame.display.set_caption("飞机飞机")
self.clock = pygame.time.Clock()
def check_event(self):
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
def run(self):
while True:
self.clock.tick(20)
self.check_event()
pygame.display.flip()
gm = GameManage()
gm.run()