掌握pygame基础框架的N个小目标

1.一个可以关闭的空白窗体:

import sys
import pygame
pygame.init()
screen = pygame.display.set_mode((400, 500))
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    pygame.display.flip()

    2.使用精灵显示背景, 背景的循环展示:

class BackgroundSprite(pygame.sprite.Sprite):
    def __init__(self, name, center):
        super().__init__()
        self.image = pygame.image.load(name)
        self.rect = self.image.get_rect()
        self.rect.topleft = top_left

    def update(self):
        self.rect.top += 3
        if self.rect.top == 600:
            self.rect.bottom = 0


class Background:
    def __init__(self, gm):
        self.bg = None
        self.gm = gm
        self.bg_group = pygame.sprite.Group()
        BackgroundSprite("image/background2.png", (0, 0)).add(self.bg_group)
        BackgroundSprite("image/background2.png", (0, -600)).add(self.bg_group)

    def update(self):
        # self.bg.rect += 1
        self.bg_group.update()
        self.bg_group.draw(self.gm.screen)

    3.使用精灵玩家,玩家可以移动:

class PlayerSprite(pygame.sprite.Sprite):
    def __init__(self, name, center):
        super().__init__()
        self.image = pygame.image.load(name)
        self.rect = self.image.get_rect()
        self.rect.center = center

    def update(self):
        pressed = pygame.key.get_pressed()
        if pressed[pygame.K_LEFT] and self.rect.centerx >= 50:
            self.rect.centerx -= 15
        if pressed[pygame.K_RIGHT] and self.rect.centerx < 420:
            self.rect.centerx += 15
        if pressed[pygame.K_UP] and self.rect.centery > 50:
            self.rect.centery -= 15
        if pressed[pygame.K_DOWN] and self.rect.centery < 620:
            self.rect.centery += 15

4.使用精灵显示道具,玩家与道具碰撞检测

import sys
import pygame


class PropSprite(pygame.sprite.Sprite):
    def __init__(self, name, center):
        super().__init__()
        self.image = pygame.image.load(name)
        self.rect = self.image.get_rect()
        self.rect.center = center


class PlayerSprite(pygame.sprite.Sprite):
    def __init__(self, name, center):
        super().__init__()
        self.image = pygame.image.load(name)
        self.rect = self.image.get_rect()
        self.rect.center = center

    def update(self):
        pressed = pygame.key.get_pressed()
        if pressed[pygame.K_LEFT] and self.rect.centerx >= 50:
            self.rect.centerx -= 15
        if pressed[pygame.K_RIGHT] and self.rect.centerx < 350:
            self.rect.centerx += 15
        if pressed[pygame.K_UP] and self.rect.centery > 50:
            self.rect.centery -= 15
        if pressed[pygame.K_DOWN] and self.rect.centery < 550:
            self.rect.centery += 15


class BGSprite(pygame.sprite.Sprite):
    def __init__(self, name, center):
        super().__init__()
        self.image = pygame.image.load(name)
        self.rect = self.image.get_rect()
        self.rect.center = center

    def update(self):
        self.rect.top += 10
        if self.rect.top == 400:
            self.rect.bottom = 0


pygame.init()
screen = pygame.display.set_mode((400, 600))

prop_group = pygame.sprite.Group()
prop = PropSprite("img.png", (100, 100))
prop.add(prop_group)

player_group = pygame.sprite.Group()
player = PlayerSprite("player.jpg", (200, 400))
player.add(player_group)

bg_group = pygame.sprite.Group()
bg = BGSprite("background.png", (200, 300))
bg2 = BGSprite("background.png", (200, -300))
bg.add(bg_group)
bg2.add(bg_group)

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

        pygame.sprite.groupcollide(player_group, prop_group, False, True)

    bg_group.draw(screen)
    bg_group.update()
    prop_group.draw(screen)
    player_group.draw(screen)
    player_group.update()
    pygame.display.flip()

5.UI的使用 (字体,鼠标点击检测)

font = pygame.font.Font("font/simkai.ttf", 45)
font_surface = font.render("font", True, (0, 0, 0))

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

        pygame.sprite.groupcollide(player_group, prop_group, False, True)
        if pygame.mouse.get_pressed()[0]:
            if player.rect.collidepoint(pygame.mouse.get_pos()):
                print("点击了玩家")
            if prop.rect.collidepoint(pygame.mouse.get_pos()):
                print("点击了道具")


    bg_group.draw(screen)
    bg_group.update()
    screen.blit(font_surface, (220, 220))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值