面向对象版本小游戏(大鱼吃小鱼,)

本文详细介绍了如何用Python的Pygame库编写大鱼吃小鱼游戏,涵盖背景精灵、玩家精灵及管理类、食物精灵和道具精灵的创建与管理,最后整合到游戏管理类中。
摘要由CSDN通过智能技术生成

首先编写大鱼吃小鱼游戏,首先分为几大部分,背景精灵,背景组;玩家精灵玩家组,食物精灵,食物组;道具精灵道具组,最后汇总到游戏管理类中提示:以下是本篇文章正文内容,下面案例可供参考

文章目录

目录

前言

一、绘制背景精灵

二、引入基础精灵,背景精灵类

三、引入玩家精灵和玩家管理类

四、食物精灵和食物管理类

五.炸弹精灵和炸弹管理类

总结



前言

编写大鱼吃小鱼游戏,首先分为几大部分,背景精灵,背景组;玩家精灵玩家组,食物精灵,食物组;道具精灵道具组,最后汇总到游戏管理类中


提示:以下是本篇文章正文内容,下面案例可供参考

一、绘制背景精灵

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
大鱼吃小鱼》是一款休闲类游戏,玩家需要控制一条大鱼在海底世界中捕食小鱼并不断增长体积。这个游戏的核心算法括实现移动和捕食功能。 以下是一个简单的Java小游戏大鱼吃小鱼》的示例代码: ```java import java.awt.*; import java.awt.event.*; import javax.swing.*; public class FishGame extends JFrame { private int fishSize; private int fishX, fishY; private int smallFishX, smallFishY; public FishGame() { fishSize = 50; fishX = 200; fishY = 200; smallFishX = 100; smallFishY = 100; addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e) { moveFish(e); } }); setFocusable(true); setSize(500, 500); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } public void paint(Graphics g) { super.paint(g); g.setColor(Color.BLUE); g.fillOval(fishX, fishY, fishSize, fishSize); g.setColor(Color.RED); g.fillOval(smallFishX, smallFishY, 20, 20); } public void moveFish(KeyEvent e) { int keyCode = e.getKeyCode(); switch (keyCode) { case KeyEvent.VK_UP: fishY -= 10; break; case KeyEvent.VK_DOWN: fishY += 10; break; case KeyEvent.VK_LEFT: fishX -= 10; break; case KeyEvent.VK_RIGHT: fishX += 10; break; } repaint(); } public static void main(String[] args) { new FishGame(); } } ``` 这个示例代码使用了Java的Swing库来创建窗口和绘制图形。玩家可以通过键盘的上下左右键来控制大鱼的移动。大鱼的初始位置是(200, 200),小鱼的初始位置是(100, 100)。当大鱼与小鱼重叠时,大鱼的体积会增大。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值