来玩小游戏吧,吃金币,跳跃小球,你绝对没玩过(pygame制作,附源码)

import random
import time

import pygame.sprite
import sys


class Util:
    @staticmethod
    def click_check(sprite):
        if pygame.mouse.get_pressed()[0]:
            if sprite.rect.collidepoint(pygame.mouse.get_pos()):
                return True
        return False

class MusicMange:
    @staticmethod
    def play_bg_music():

        pygame.mixer.music.load("beijing.mp3")
        pygame.mixer.music.play(True)

    @staticmethod
    def play_sound(name):
        sound = pygame.mixer.Sound(name)
        sound.play()
class UiSprice(pygame.sprite.Sprite):
    def __init__(self, name):
        super().__init__()
        self.image = pygame.image.load(name)
        self.rect = self.image.get_rect()

    def update(self):
        pass


class BackSprice(UiSprice):
    def __init__(self, name, center):
        super().__init__(name)
        self.rect.center = center

    def update(self):
        pass


class BackMange:
    def __init__(self, gm):
        self.gm = gm
        self.back_group = pygame.sprite.Group()
        self.background = BackSprice("back1.jpg", (300, 200))
        self.background.add(self.back_group)

    def update(self):
        self.back_group.update()
        self.back_group.draw(self.gm.screen)


class PersonSprice(UiSprice):
    def __init__(self, name, center):
        super().__init__(name)
        self.rect.center = center

    def update(self):
        key_prssed = pygame.key.get_pressed()
        if key_prssed[pygame.K_LEFT] and self.rect.left > 0:
            self.rect.left -= 1
        if key_prssed[pygame.K_RIGHT] and self.rect.right < 600:
            self.rect.right += 1


class PersonManger:
    def __init__(self, gm):
        self.gm = gm
        self.per_group = pygame.sprite.Group()
        self.person = PersonSprice("img/4.jpg", (25, 375))
        self.person.add(self.per_group)

    def update(self):
        self.per_group.update()
        self.per_group.draw(self.gm.screen)


class GoldSprice(UiSprice):
    def __init__(self, name, center):
        super().__init__(name)
        self.rect.center = center

    def update(self):
        self.rect.top += 1
        if self.rect.top > 400:
            self.kill()


class GoldMange:
    def __init__(self, gm):
        self.gm = gm
        self.time_shi = 2
        self.gold_group = pygame.sprite.Group()

    def appear(self):
        self.gold_group = pygame.sprite.Group()
        for i in range(random.randint(3, 10)):
            self.gold = GoldSprice("gold.png", (random.randint(0, 600), random.randint(0, 0)))
            self.gold.add(self.gold_group)

    def update(self):
        self.time_shi -= 0.003
        if self.time_shi <= 0:
            self.time_shi = 2
            self.appear()

        self.gold_group.update()
        self.gold_group.draw(self.gm.screen)


class ExplosiveSprice(UiSprice):
    def __init__(self, name, center):
        super().__init__(name)
        self.rect.center = center

    def update(self):
        self.rect.top += 1
        if self.rect.top > 400:
            self.kill()


class ExplosiveMange:
    def __init__(self, gm):
        self.gm = gm
        self.time_shi = 3
        self.explosive_group = pygame.sprite.Group()

    def grow(self):

        for i in range(6):
            self.explosive = ExplosiveSprice("zhadan.png", (random.randint(0, 600), random.randint(0, 0)))
            self.explosive.add(self.explosive_group)

    def update(self):

        self.time_shi -= 0.003
        if self.time_shi <= 0:
            self.time_shi = 3
            self.grow()

        self.explosive_group.update()
        self.explosive_group.draw(self.gm.screen)


class AppleSprice(UiSprice):
    def __init__(self, name, center):
        super().__init__(name)
        self.rect.center = center

    def update(self):
        self.rect.top += 1
        if self.rect.top > 400:
            self.kill()


class AppleMange:
    def __init__(self, gm):
        self.gm = gm
        self.time_shi = 4
        self.apple_group = pygame.sprite.Group()

    def occur(self):
        for i in range(3):
            self.apple = AppleSprice("pingguo.png", (random.randint(0, 600), random.randint(0, 0)))
            self.apple.add(self.apple_group)

    def update(self):
        self.time_shi -= 0.003
        if self.time_shi <= 0:
            self.time_shi = 4
            self.occur()
        self.apple_group.update()
        self.apple_group.draw(self.gm.screen)


class AuttonSprice(UiSprice):
    def __init__(self, name, center):
        super().__init__(name)
        self.rect.center = center


class AuttonMange:
    def __init__(self, gm):
        self.gm = gm
        self.count = 0
        self.tally = 3
        self.go_group = pygame.sprite.Group()
        self.go = AuttonSprice("agin.jpg", (300, 200))
        self.go.add(self.go_group)
        self.agin_group = pygame.sprite.Group()
        self.argin = AuttonSprice("kaishi.jpg", (25, 25))
        self.argin.add(self.agin_group)

        self.exit_group = pygame.sprite.Group()
        self.exit_jie = AuttonSprice("exit.png", (300, 300))
        self.exit_jie.add(self.exit_group)

        self.zai_group = pygame.sprite.Group()
        self.zai = AuttonSprice("zailai.png", (300, 200))
        self.zai.add(self.zai_group)

    def update(self):
        if self.gm.state == "ready":
            self.go_group.update()
            self.go_group.draw(self.gm.screen)
            if Util.click_check(self.go):
                self.gm.state = "gaming"
        if self.gm.state == "gaming":
            self.agin_group.update()
            self.agin_group.draw(self.gm.screen)
            if Util.click_check(self.argin):
                pygame.time.wait(5000)
            self.gm.persom_mange.update()
            self.gm.gold_mange.update()
            self.gm.explosive_mange.update()
            self.gm.apple_mange.update()
            self.font = pygame.font.Font("font/font.ttf", 32)
            self.score_surface = self.font.render(f"Score:{self.count}", True, "#FF4500")
            self.gm.screen.blit(self.score_surface, (450, 15))

            self.font = pygame.font.Font("font/font.ttf", 32)
            self.score_surface = self.font.render(f"HP:{self.tally}", True, "#FF4500")
            self.gm.screen.blit(self.score_surface, (200, 15))
            if pygame.sprite.groupcollide(self.gm.persom_mange.per_group, self.gm.gold_mange.gold_group, False, True):
                self.count += 1
            if pygame.sprite.groupcollide(self.gm.persom_mange.per_group, self.gm.explosive_mange.explosive_group,
                                          False, True):
                self.tally -= 1
                self.count -= 10
                if self.tally <= 0:
                    pygame.sprite.groupcollide(self.gm.explosive_mange.explosive_group, self.gm.persom_mange.per_group,
                                               False, True)
                    self.gm.state = "end"
            if pygame.sprite.groupcollide(self.gm.persom_mange.per_group, self.gm.apple_mange.apple_group, False, True):
                self.count += 3

        if self.gm.state == "end":
            self.zai_group.update()
            self.zai_group.draw(self.gm.screen)
            self.exit_group.update()
            self.exit_group.draw(self.gm.screen)
            self.font = pygame.font.Font("font/simkai.ttf", 32)
            self.score_surface = self.font.render(f"你的分数为:{self.count}", True, "#FF4500")
            self.gm.screen.blit(self.score_surface, (200, 75))
            if Util.click_check(self.zai):
                self.gm.state = "gaming"
                self.tally += 3
                self.count = 0
            if Util.click_check(self.exit_jie):
                exit()

class GameMange:
    def __init__(self):
        pygame.init()
        self.state = "ready"
        self.clock = pygame.time.Clock()
        self.screen = pygame.display.set_mode((600, 400))
        pygame.display.set_caption("吃金币")
        self.back_mange = BackMange(self)
        self.apple_mange = AppleMange(self)
        self.explosive_mange = ExplosiveMange(self)
        self.gold_mange = GoldMange(self)
        self.persom_mange = PersonManger(self)
        self.autton_mange = AuttonMange(self)

    def chen_chenk(self):
        self.clock.tick(600)
        self.back_mange.update()

    def run(self):
        while True:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    pygame.quit()
                    sys.exit()
            self.chen_chenk()
            self.autton_mange.update()
            pygame.display.flip()


gm = GameMange()
gm.run()

运行截图 

 

import pygame
import random

# 初始化Pygame
pygame.init()

# 游戏窗口尺寸
WIDTH = 800
HEIGHT = 600

# 定义颜色
WHITE = (255, 255, 255)
BLUE = (0, 0, 255)

# 创建窗口
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Jumping Ball Game")

# 加载小球图像
ball_image = pygame.image.load("gold.png")
ball_rect = ball_image.get_rect()
ball_rect.center = (WIDTH // 2, HEIGHT // 2)

# 设置小球的速度和跳跃高度
ball_speed = 5
jump_height = 100
is_jumping = False

# 游戏循环
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # 处理用户输入
    keys = pygame.key.get_pressed()
    if keys[pygame.K_SPACE] and not is_jumping:
        is_jumping = True

    # 更新小球位置
    if is_jumping:
        if ball_rect.y > HEIGHT - jump_height:
            ball_rect.y -= ball_speed
        else:
            is_jumping = False
    else:
        if ball_rect.y < HEIGHT - ball_rect.height:
            ball_rect.y += ball_speed

    # 绘制背景和小球
    screen.fill(WHITE)
    screen.blit(ball_image, ball_rect)

    # 刷新屏幕
    pygame.display.flip()

# 退出游戏
pygame.quit()

按空格键它可以向上跳起,之后落下 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值