当前位置: 首页 > news >正文

Python游戏嗷大喵快跑设计

全套资源下载地址:https://download.csdn.net/download/sheziqiong/86774416
全套资源下载地址:https://download.csdn.net/download/sheziqiong/86774416
目 录
1 引言 1
1.1 选题背景及意义 1
1.2 国内外研究现状 1
1.3 开发目标 2
2 技术简介 2
2.1 开发环境 2
2.2 Python 2
3 需求分析 2
3.1 可行性分析 2
3.1.1 硬件以及技术的可行性 2
3.1.2 运行可行性分析 2
3.2 功能性需求分析 2
3.2.1 功能描述 2
4 系统设计 3
4.1 总体设计 3
4.2 详细设计 3
5 系统实现 3
5.1 创建精灵 3
5.2 创建滚动地图 5
5.3 加载音频 5
6 系统测试 7
6.1 测试目的 7
6.2 测试技术 7
6.3 测试模块 7
6.4 测试结果 7
结束语 8
致谢 10
3 需求分析
3.1 可行性分析
3.1.1 硬件以及技术的可行性
装有pycharm软件的电脑,直观的游戏图形界面,技术不是很复杂,所以技术上没问题是可行的。
3.1.2 运行可行性分析
玩家操作简单,对于玩家的游戏体验没有的问题。
3.2 功能性需求分析
3.2.1 功能描述
本节通过对于用户的需求进行分析,首先思考到用户在使用这款游戏的时候,会想到这款应用的操作性,所以,在开发的时候我们把操作写的很简单
4 系统设计
4.1 总体设计
游戏中一共有嗷大喵,恶龙,火焰,爆炸动画和果实(就是上方蓝色的矩形块)这几种精灵。这里我们使用到MyLibrary.py。上述这几个精灵都是 MySprite类实例化的对象。
为了方便管理。我们建立了几个精灵组,本文转载自http://www.biyezuopin.vip/onews.asp?id=9642并且将一些精灵塞到了里面。

4.2 详细设计
创建精灵:
创建精灵组
创建怪物精灵
创建爆炸动画
创建玩家精灵
创建子弹精灵
创建滚动地图:
定义一个滚动地图类
创建地图对象
加载音频:
初始化音频模块
加载音频文件
播放音乐
人物的跳跃
跳跃函数

# MyLibrary.py

import sys, time, random, math, pygame
from pygame.locals import *


# 使用所提供字体打印文本
def print_text(font, x, y, text, color=(255,255,255)):
    imgText = font.render(text, True, color)
    screen = pygame.display.get_surface() #req'd when function moved into MyLibrary
    screen.blit(imgText, (x,y))

# MySprite class extends  pygame.sprite.Sprite
#继承了sprite
class MySprite(pygame.sprite.Sprite):
    
    def __init__(self):
        pygame.sprite.Sprite.__init__(self) # extend the base Sprite class
        self.master_image = None
        self.frame = 0
        self.old_frame = -1
        self.frame_width = 1
        self.frame_height = 1
        self.first_frame = 0
        self.last_frame = 0
        self.columns = 1
        self.last_time = 0
        self.direction = 0
        self.velocity = Point(0.0,0.0) 

    # X property
    def _getx(self): return self.rect.x
    def _setx(self,value): self.rect.x = value
    X = property(_getx,_setx)

    # Y property
    def _gety(self): return self.rect.y
    def _sety(self,value): self.rect.y = value
    Y = property(_gety,_sety)

    # position property
    def _getpos(self): return self.rect.topleft
    def _setpos(self,pos): self.rect.topleft = pos
    position = property(_getpos,_setpos)


    # load方法中定义了图片位置 长宽和帧的列数,由此来将素材切成一帧一帧
    def load(self, filename, width, height, columns):
        self.master_image = pygame.image.load(filename).convert_alpha()
        self.frame_width = width
        self.frame_height = height
        self.rect = Rect(0,0,width,height)
        self.columns = columns
        # try to auto-calculate total frames
        # 尝试自动计算总帧数
        rect = self.master_image.get_rect()
        self.last_frame = (rect.width // width) * (rect.height // height) - 1

    def update(self, current_time, rate=30):
        # update animation frame number
        # 更新帧数
        if current_time > self.last_time + rate:
            self.frame += 1
            if self.frame > self.last_frame:
                self.frame = self.first_frame
            self.last_time = current_time

        # build current frame only if it changed
        if self.frame != self.old_frame:
            frame_x = (self.frame % self.columns) * self.frame_width
            frame_y = (self.frame // self.columns) * self.frame_height
            rect = Rect(frame_x, frame_y, self.frame_width, self.frame_height)
            self.image = self.master_image.subsurface(rect)
            self.old_frame = self.frame

    def __str__(self):
        return str(self.frame) + "," + str(self.first_frame) + \
               "," + str(self.last_frame) + "," + str(self.frame_width) + \
               "," + str(self.frame_height) + "," + str(self.columns) + \
               "," + str(self.rect)

# Point class
class Point(object):
    def __init__(self, x, y):
        self.__x = x
        self.__y = y

    # X property
    def getx(self): return self.__x
    def setx(self, x): self.__x = x
    x = property(getx, setx)

    # Y property
    def gety(self): return self.__y
    def sety(self, y): self.__y = y
    y = property(gety, sety)

    def __str__(self):
        return "{X:" + "{:.0f}".format(self.__x) + \
            ",Y:" + "{:.0f}".format(self.__y) + "}"

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
全套资源下载地址:https://download.csdn.net/download/sheziqiong/86774416
全套资源下载地址:https://download.csdn.net/download/sheziqiong/86774416

相关文章:

  • 平衡二叉树、红黑树、B树、B+树
  • 安全运营之通行字管理
  • 花粉过敏人群或超2亿?约克VRF中央空调助你健康鲜呼吸
  • 异步并发怎么做?
  • CPP线程管理类实现
  • 国产系统注意事项
  • [蓝桥杯 2021 省 AB2] 小平方
  • spring-boot-starter-validation - 实际开发常见使用归纳
  • [ai笔记12] chatGPT技术体系梳理+本质探寻
  • LVS-DR实验.
  • 云端技术驾驭DAY13——Pod污点、容忍策略、Pod优先级与抢占、容器安全
  • 黑马程序员——接口测试——day03——Postman断言、关联、参数化
  • nginx负载均衡高可用部署
  • 【附源码】计算机毕业设计SSM怦然心动网上服装商城
  • YOLOv5实现佩戴安全帽检测和识别(含佩戴安全帽数据集+训练代码)
  • 【以太网硬件十六】双绞线有哪些种类?
  • 从零开始配置tensorflow深度学习环境(含cuda以及其他依赖)
  • 模型机的组合逻辑控制器
  • 私域流量和公域流量有何区别?为什么要打造自己的私域流量?
  • Python中的图像调整和裁剪工具
  • 基于单片机的智能照明系统
  • Visual Studio扩展插件
  • 12.MongoDB系列之副本集管理
  • 【初学者入门C语言】之编译预处理(十)
  • 【JavaWeb】之Maven
  • 牛客网专项练习30天Pytnon篇第25天
  • 【RPA前置知识】 整理并总结 Assign 和 AssignT 类
  • SpringBoot整合RabbitMq实现ACK机制--消息回退机制--消息确认机制
  • 关于“八音盒自定义弹奏”的一些想法
  • linux学习(青少年学Linux)
  • 从此刻开始走进HTML的大门!!!
  • TCP通信相关函数