pygame基础框架的基础代码与实践

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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值