当前位置:   article > 正文

【Python毕业设计】Python期末作业,Python基于pygame实现的坦克大战,可以选择关卡,可以自定义关卡 | 源码可提供_python期末作业设计游戏

python期末作业设计游戏

前言

郑重承诺,我不是机构号,大家不用但是我会让大家报班啥的!
Python期末大作业,基于pygame的坦克大战小游戏
需要源码的可以直接后台联系我

完成功能

  • 菜单选择:用户可以根据菜单进行选择,提高了程序的交互性。
  • 多种模式:提供了关卡模式、无尽模式、单挑模式、建造模式。
  • 地图编辑:用户可以用键盘自由编辑地图,增加玩家趣味性。
  • 简单敌人AI:敌人有简单的AI行为,如:发射子弹、漫步等。
  • 动画效果:坦克在受到攻击时的爆破效果;敌方坦克复活的简单动画。
  • 游戏循环:同一般软件不同,游戏需要采用主循环来更新场景状态并重绘屏幕。本程序以60FPS的帧率刷新屏幕。
  • 墙体:不同墙体元素有不同的特性。
  • 道具:不同的道具会触发不同的效果
  • 多种关卡:关卡模式和无尽模式都有35种不同的关卡
  • 双人对战:可以进行双人当成队友一起游戏,也可以当成敌人进行单挑

玩法介绍

菜单:
上下键选择、回车键进入或者鼠标点击删除键返回

游戏中:
玩家一: WASD移动 j攻击
玩家二:上下左右移动 o攻击
F1:复活玩家一
F2:复活玩家二
F3:关闭音效
Esc:退出
暂停:鼠标点击

游戏效果

打开界面

在这里插入图片描述

模式选择

level mode 关卡模式
endless mode 无尽模式
heads up mode 单挑
custom mode 自定义模式
set up 设置
在这里插入图片描述

level mode 关卡模式

总共有35个关卡可以供选择玩耍

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

endless mode 无尽模式

在这里插入图片描述

heads up mode 单挑

在这里插入图片描述
在这里插入图片描述

custom mode 自定义模式

自定义模式中也有三种关卡可供选择使用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

部分代码实现过程

主函数代码

import pygame
import pygame_menu
import game_loader
import sys
"""
模块描述:
此模块是游戏的入口文件也是游戏的菜单实现模块
模块包括主菜单、关卡模式选择菜单、无尽模式选择菜单、单挑模式选择菜单、建造模式选择菜单
点击相应按钮调用相应下面相应函数进行实现,详情请看下面
"""
# 关卡模式
def Level_mode(i):
    game = game_loader.Game()
    game.game_running(i,False)
# 无尽模式
def endless_mode(i):
    game = game_loader.Game()
    game.game_running(i,True)
# 单挑模式
def heads_up_mode(i):
    game = game_loader.Game()
    game.game_running_singled_out(i)
# 设置 未实现
def set_up():
    pass

def main():
    # ------------------------------------
    # 创建window
    # -----------------------------------

    pygame.init()
    surface = pygame.display.set_mode((750, 630))

    # 创建加载界面的图片
    init_image_all = [None]*107
    for i in range(1,106):
        init_image_all[i] = pygame.image.load(r"image\init\init"+str(i)+".png")

    # 显示加载界面(其中一张图片)
    surface.blit(init_image_all[1], (10, 20))
    pygame.display.flip()
    now_i = 1

    # -------------------------------------------------------------
    # 创建关卡模式菜单和无尽模式菜单
    # -------------------------------------------------------------
    # 创建选择关卡菜单的“主题”
    checkpoint_theme = pygame_menu.themes.THEME_DARK.copy()
    # 背景颜色
    checkpoint_theme.background_color = (0, 0, 0, 0)
    # 字体样式
    checkpoint_theme.widget_font = pygame_menu.font.FONT_8BIT
    # 标题栏背景颜色
    checkpoint_theme.title_background_color = (0, 0, 0, 0)
    checkpoint_theme.widget_font_size = 25

    # 关卡模式“菜单”的创建
    level_mode_menu = pygame_menu.Menu('Level Mode Menu:Choose a level', 750, 630, theme=checkpoint_theme)
    # 无尽模式“菜单”的创建
    endless_mode_menu = pygame_menu.Menu('Endless Mode Menu:Choose a level', 750, 630, theme=checkpoint_theme)

    # 此循环是将35关的图片加载到按钮里 并将按钮加入菜单中
    for i in range(1,36):
        # 事件检测 保证可以随时退出
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
        # 显示加载界面
        surface.blit(init_image_all[now_i], (10, 25)) # 显示图片
        now_i += 1 # 将图片的索引换位下一张
        pygame.display.flip() # 刷新界面
        # 将图片初始化为默认背景图片
        background_image = pygame_menu.BaseImage(
            image_path=r"image\maps\Battle-City-"+str(i)+".png"
        )
        # 关卡模式菜单添加标签、间隔、按钮
        level_mode_menu.add.label(str(i)+"  Checkpoint")
        level_mode_menu.add.vertical_margin(20)
        level_mode_menu.add.button('',Level_mode,i,background_color = background_image,
                                   padding = (80,80,80,80),margin = (10,10),border_inflate = (10,10),border_width = (10))
        # 显示加载界面
        surface.blit(init_image_all[now_i], (10, 25))
        now_i += 1
        pygame.display.flip()
        # 无尽模式菜单添加标签、间隔、按钮
        endless_mode_menu.add.label(str(i) + "  Checkpoint")
        endless_mode_menu.add.vertical_margin(20)
        endless_mode_menu.add.button('', endless_mode, i, background_color=background_image,
                                   padding=(80, 80, 80, 80), margin=(10, 10), 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/573040
推荐阅读
相关标签
  

闽ICP备14008679号