首先编写大鱼吃小鱼游戏,首先分为几大部分,背景精灵,背景组;玩家精灵玩家组,食物精灵,食物组;道具精灵道具组,最后汇总到游戏管理类中提示:以下是本篇文章正文内容,下面案例可供参考
文章目录
目录
前言
编写大鱼吃小鱼游戏,首先分为几大部分,背景精灵,背景组;玩家精灵玩家组,食物精灵,食物组;道具精灵道具组,最后汇总到游戏管理类中
提示:以下是本篇文章正文内容,下面案例可供参考
一、绘制背景精灵
import random
import pygame, 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 BaseSprite(pygame.sprite.Sprite):
def __init__(self, name):
super().__init__()
self.image = pygame.image.load(name)
self.rect = self.image.get_rect()
# 背景精灵
class UISprite(BaseSprite):
def __init__(self, name, center):
super().__init__(name)
self.rect.center = center
# 背景精灵管理
class UIManage:
def __init__(self, gm):
self.gm = gm
pygame.init()
# UI字体
self.font = pygame.font.Font("foot/Deng.ttf", 32)
# 开始前UI元素
self.ready_group = pygame.sprite.Group()
self.begin_btn = UISprite("img/begin_btn.png", (200, 300))
self.begin_btn.add(self.ready_group)
# 游戏中UI元素
self.score_surface = self.font.render(f"Score:{self.gm.player_manage.score}", True, "#FF4500")
# self.hp_surface = self.font.render(f"hp:{self.gm.players.hp}", True, "#FF4500")
# 游戏结束UI元素
self.end_group = pygame.sprite.Group()
self.replay_btn = UISprite("img/replay_btn.png", (200, 300))
self.replay_btn.add(self.end_group)
def update(self):
if self.gm.state == "ready":
# print("更新未开始游戏UI")
self.ready_group.draw(self.gm.screen)
if Util.click_check(self.begin_btn):
AudioManage.play_sound("music/click.mp3")
self.gm.state = "gaming"
self.gm.player_manage.born()
elif self.gm.state == "gaming":
# print("更新游戏中UI")
self.gm.screen.blit(self.score_surface, (0, 50))
self.score_surface = self.font.render(f"Score:{self.gm.player_manage.score}", True, "#FF4500")
elif self.gm.state == "end