广告
返回顶部
首页 > 资讯 > 后端开发 > Python >炸弹人小游戏代码开源(python)
  • 766
分享到

炸弹人小游戏代码开源(python)

pythonpygame开发语言 2023-09-02 07:09:00 766人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️夕阳下,是最美的绽放,当遵从一心,踏浪而往,纵千山万水, 也要抵达。 目录 一

♥️作者:小刘在C站

♥️个人主页:小刘主页

♥️每天分享云计算网络运维课堂笔记,努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生!

♥️夕阳下,是最美的绽放,当遵从一心,踏浪而往,纵千山万水, 也要抵达。

目录

一.什么是python

二.游戏代码效果呈现

  三.游戏主代码

四.cfg

五.README

六.requirements


一.什么是python

Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。   Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言, [ 随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。

Python解释器易于扩展,可以使用C语言或c++(或者其他可以通过C调用的语言)扩展新的功能和数据类型。Python也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器码

二.游戏代码效果呈现

  三.游戏主代码

'''
Function:
    炸弹人小游戏
'''
import sys
import cfg
import random
import pygame
from modules import *


'''游戏主程序'''
def main(cfg):
    # 初始化
    pygame.init()
    pygame.mixer.init()
    pygame.mixer.music.load(cfg.BGMPATH)
    pygame.mixer.music.play(-1, 0.0)
    screen = pygame.display.set_mode(cfg.SCREENSIZE)
    pygame.display.set_caption('炸弹人')
    # 开始界面
    Interface(screen, cfg, mode='game_start')
    # 游戏主循环
    font = pygame.font.SysFont('Consolas', 15)
    for gamemap_path in cfg.GAMEMAPPATHS:
        # -地图
        map_parser = mapParser(gamemap_path, bg_paths=cfg.BACKGROUNDPATHS, wall_paths=cfg.WALLPATHS, blocksize=cfg.BLOCKSIZE)
        # -水果
        fruit_sprite_group = pygame.sprite.Group()
        used_spaces = []
        for i in range(5):
            coordinate = map_parser.randomGetSpace(used_spaces)
            used_spaces.append(coordinate)
            fruit_sprite_group.add(Fruit(random.choice(cfg.FRUITPATHS), coordinate=coordinate, blocksize=cfg.BLOCKSIZE))
        # -我方Hero
        coordinate = map_parser.randomGetSpace(used_spaces)
        used_spaces.append(coordinate)
        ourhero = Hero(imagepaths=cfg.HEROZELDAPATHS, coordinate=coordinate, blocksize=cfg.BLOCKSIZE, map_parser=map_parser, hero_name='ZELDA')
        # -电脑Hero
        aihero_sprite_group = pygame.sprite.Group()
        coordinate = map_parser.randomGetSpace(used_spaces)
        aihero_sprite_group.add(Hero(imagepaths=cfg.HEROBATMANPATHS, coordinate=coordinate, blocksize=cfg.BLOCKSIZE, map_parser=map_parser, hero_name='BATMAN'))
        used_spaces.append(coordinate)
        coordinate = map_parser.randomGetSpace(used_spaces)
        aihero_sprite_group.add(Hero(imagepaths=cfg.HERODKPATHS, coordinate=coordinate, blocksize=cfg.BLOCKSIZE, map_parser=map_parser, hero_name='DK'))
        used_spaces.append(coordinate)
        # -炸弹bomb
        bomb_sprite_group = pygame.sprite.Group()
        # -用于判断游戏胜利或者失败的flag
        is_win_flag = False
        # -主循环
        screen = pygame.display.set_mode(map_parser.screen_size)
        clock = pygame.time.Clock()
        while True:
            dt = clock.tick(cfg.FPS)
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    pygame.quit()
                    sys.exit(-1)
                # --↑↓←→键控制上下左右, 空格键丢炸弹
                elif event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_UP:
                        ourhero.move('up')
                    elif event.key == pygame.K_DOWN:
                        ourhero.move('down')
                    elif event.key == pygame.K_LEFT:
                        ourhero.move('left')
                    elif event.key == pygame.K_RIGHT:
                        ourhero.move('right')
                    elif event.key == pygame.K_SPACE:
                        if ourhero.bomb_cooling_count <= 0:
                            bomb_sprite_group.add(ourhero.generateBomb(imagepath=cfg.BOMBPATH, digitalcolor=cfg.YELLOW, explode_imagepath=cfg.FIREPATH))
            screen.fill(cfg.WHITE)
            # --电脑Hero随机行动
            for hero in aihero_sprite_group:
                action, flag = hero.randoMaction(dt)
                if flag and action == 'dropbomb':
                    bomb_sprite_group.add(hero.generateBomb(imagepath=cfg.BOMBPATH, digitalcolor=cfg.YELLOW, explode_imagepath=cfg.FIREPATH))
            # --吃到水果加生命值(只要是Hero, 都能加)
            ourhero.eatFruit(fruit_sprite_group)
            for hero in aihero_sprite_group:
                hero.eatFruit(fruit_sprite_group)
            # --游戏元素都绑定到屏幕上
            map_parser.draw(screen)
            for bomb in bomb_sprite_group:
                if not bomb.is_being:
                    bomb_sprite_group.remove(bomb)
                explode_area = bomb.draw(screen, dt, map_parser)
                if explode_area:
                    # --爆炸火焰范围内的Hero生命值将持续下降
                    if ourhero.coordinate in explode_area:
                        ourhero.health_value -= bomb.harm_value
                    for hero in aihero_sprite_group:
                        if hero.coordinate in explode_area:
                            hero.health_value -= bomb.harm_value
            fruit_sprite_group.draw(screen)
            for hero in aihero_sprite_group:
                hero.draw(screen, dt)
            ourhero.draw(screen, dt)
            # --左上角显示生命值
            pos_x = showText(screen, font, text=ourhero.hero_name+'(our):'+str(ourhero.health_value), color=cfg.YELLOW, position=[5, 5])
            for hero in aihero_sprite_group:
                pos_x, pos_y = pos_x+15, 5
                pos_x = showText(screen, font, text=hero.hero_name+'(ai):'+str(hero.health_value), color=cfg.YELLOW, position=[pos_x, pos_y])
            # --我方玩家生命值小于等于0/电脑方玩家生命值均小于等于0则判断游戏结束
            if ourhero.health_value <= 0:
                is_win_flag = False
                break
            for hero in aihero_sprite_group:
                if hero.health_value <= 0:
                    aihero_sprite_group.remove(hero)
            if len(aihero_sprite_group) == 0:
                is_win_flag = True
                break
            pygame.display.update()
            clock.tick(cfg.FPS)
        if is_win_flag:
            Interface(screen, cfg, mode='game_switch')
        else:
            break
    Interface(screen, cfg, mode='game_end')


'''run'''
if __name__ == '__main__':
    while True:
        main(cfg)

四.cfg

'''配置文件'''
import os


'''屏幕大小'''
SCREENSIZE = (640, 480)
'''块大小'''
BLOCKSIZE = 30
'''FPS'''
FPS = 30
'''游戏地图路径'''
GAMEMAPPATHS = [os.path.join(os.getcwd(), path) for path in \
    ['resources/maps/1.map', 'resources/maps/2.map']]
'''墙路径'''
WALLPATHS = [os.path.join(os.getcwd(), path) for path in \
    ['resources/images/misc/wall0.png', 'resources/images/misc/wall1.png', 'resources/images/misc/wall2.png']]
'''英雄路径'''
HERODKPATHS = [os.path.join(os.getcwd(), path) for path in \
    ['resources/images/dk/left.png', 'resources/images/dk/right.png', 'resources/images/dk/up.png', 'resources/images/dk/down.png']]
HEROZELDAPATHS = [os.path.join(os.getcwd(), path) for path in \
    ['resources/images/zelda/left.png', 'resources/images/zelda/right.png', 'resources/images/zelda/up.png', 'resources/images/zelda/down.png']]
HEROBATMANPATHS = [os.path.join(os.getcwd(), path) for path in \
    ['resources/images/batman/left.png', 'resources/images/batman/right.png', 'resources/images/batman/up.png', 'resources/images/batman/down.png']]
'''水果路径'''
FRUITPATHS = [os.path.join(os.getcwd(), path) for path in \
    ['resources/images/misc/banana.png', 'resources/images/misc/cherry.png']]
'''背景路径'''
BACKGROUNDPATHS = [os.path.join(os.getcwd(), path) for path in \
    ['resources/images/misc/bg0.png', 'resources/images/misc/bg1.png', 'resources/images/misc/bg2.png']]
'''爆炸和发射路径'''
BOMBPATH = os.path.join(os.getcwd(), 'resources/images/misc/bomb.png')
FIREPATH = os.path.join(os.getcwd(), 'resources/images/misc/fire.png')
'''背景音乐'''
BGMPATH = os.path.join(os.getcwd(), 'resources/audio/bgm.mp3')
'''一些颜色'''
YELLOW = (255, 255, 0)
BLUE = (0, 0, 255)
RED = (255, 0, 0)
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)

五.README

# Introduction
https://mp.weixin.qq.com/s/XzB_cJMFEtz6p_MvqiaCrA

# Environment
```
OS: windows10
Python: python3.5+(have installed necessary dependencies)
```

# Usage
```
Step1:
pip install -r requirements.txt
Step2:
run "python Game19.py"
```

# Game Display
![giphy](demonstration/running.gif)

六.requirements

pygame

来源地址:https://blog.csdn.net/lzl10211345/article/details/128989934

--结束END--

本文标题: 炸弹人小游戏代码开源(python)

本文链接: https://www.lsjlt.com/news/390128.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 炸弹人小游戏代码开源(python)
    ♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️夕阳下,是最美的绽放,当遵从一心,踏浪而往,纵千山万水, 也要抵达。 目录 一...
    99+
    2023-09-02
    python pygame 开发语言
  • 基于Python实现炸弹人小游戏
    目录前言效果展示开发工具环境搭建原理简介主要代码前言 今天用Python实现的是一个炸弹人小游戏,废话不多说,让我们愉快地开始吧~ 效果展示 开发工具 Python版本: 3.6....
    99+
    2022-11-12
  • 如何用Python实现炸弹人小游戏
    本篇内容主要讲解“如何用Python实现炸弹人小游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何用Python实现炸弹人小游戏”吧!效果展示开发工具Python版本: 3.6.4相关模块:...
    99+
    2023-06-22
  • Unity游戏开发之炸弹人游戏的实现
    目录前言制作思路开始制作第一步:游戏场景制作第二步:墙体代码第三步:炸弹人制作第四步:炸弹处理第五步:敌人制作第六步:游戏控制器第七步:UI控制器前言 大家小时候肯定玩过这款游戏,炸...
    99+
    2022-11-13
  • Python Pygame如何实现超级炸弹人游戏
    这篇文章给大家分享的是有关Python Pygame如何实现超级炸弹人游戏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、环境安装1.素材(图片)2.环境安装本文是由Pygame写的小游戏。涉及运行环...
    99+
    2023-06-29
  • c/c++小游戏源代码
    翻到开学之初写的一些小游戏,陆续给大家发出来,也便提高新手们的编程兴趣。(已详细注释) 几个对应头文件需要注意一下,但不必太过恐慌,因为,,,很多,用的时候找需要的即可 (在Dev,...
    99+
    2022-11-12
  • Python实现小游戏的源代码示例
    这篇文章将为大家详细讲解有关Python实现小游戏的源代码示例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、21点数字小游戏展示:首先配置文件的源码:'''配置文件'&...
    99+
    2023-06-14
  • python简单小游戏代码100行,python小游戏代码大全
    大家好,给大家分享一下python简单小游戏代码100行,很多人还不知道这一点。下面详细解释一下。现在让我们来看看! 1、python 编写一个彩票游戏? 按照题目要求编写燃悔中的Python程序如下 import random num...
    99+
    2023-09-20
    人工智能
  • python小游戏代码200行左右,python编程小游戏代码
    大家好,本文将围绕python小游戏代码200行左右展开说明,小游戏程序代码python是一个很多人都想弄明白的事情,想搞清楚python编程小游戏代码需要先了解以下几个事情。 1、python简单小游戏代码 怎么用Python制作简单...
    99+
    2023-10-02
    开发语言 爬虫
  • Python实现炸金花游戏的示例代码
    今天的第二个作品,哈哈哈哈,搞起来感觉还挺有意思的,不过代码里纸牌J,Q,K,A几个数字被我替换成了11,12,13,14......主要是没有想到简单的办法让其比较,索性都用数字了...
    99+
    2022-11-12
  • python小球游戏代码
    #python tkinter #python version 3.3.2 from tkinter import * ''' 判断 两个小球 { 圆心:A(x1,y1) 半径:r X轴速度:V...
    99+
    2023-01-31
    小球 代码 游戏
  • python简单小游戏代码10行,python超简单小游戏代码
    大家好,小编为大家解答python编写的入门简单小游戏代码大全的问题。很多人还不知道python编写的入门简单小游戏代码,现在让我们一起来看看吧! 1、小恐龙 玩法:上下控制起跳躲避 import cfgimport sysi...
    99+
    2023-10-24
    pygame python 开发语言 人工智能
  • python小游戏实现代码
    早上逛CSDN首页就见到这么一篇教程。看了一下很有意思,就马上动手实现了一下。看看效果吧: 完整代码: # -*- coding: utf-8 -*- # 1 - Import library import pygame from ...
    99+
    2023-01-31
    小游戏 代码 python
  • 【小程序】低代码+小游戏=小游戏可视化开发
    🥳 作者:伯子南 😎 坚信: 好记性不如乱笔头,独乐乐不如众乐乐 💪 个人主页:https://blog.csdn.net/qq_34577234s...
    99+
    2023-10-02
    小程序
  • python编程游戏代码大全,python简单的小游戏代码
    大家好,本文将围绕python编程一个最简单游戏代码展开说明,20行python代码的入门级小游戏是一个很多人都想弄明白的事情,想搞清楚python游戏编程入门游戏代码需要先了解以下几个事情。 一、石头剪刀布游戏 目...
    99+
    2023-09-05
    python
  • 14 个Python小游戏 源码分享
    目录1、吃金币2、打乒乓3、滑雪4、并夕夕版飞机大战5、打地鼠6、小恐龙7、消消乐8、俄罗斯方块9、贪吃蛇10、24点小游戏11、平衡木12、外星人入侵13、贪心鸟14、井字棋888...
    99+
    2022-11-12
  • java实现小游戏编程源代码
    这是一个简单的猜数字游戏的 Java 源代码:```import java.util.Scanner;public class Gu...
    99+
    2023-09-22
    java
  • c语言扫雷小游戏源代码
    这期内容当中小编将会给大家带来有关c语言扫雷小游戏源代码,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。说明:该游戏的实现需要建立三个文件test2.c:整个游戏,开始游戏/退出游戏的大体执行流程game2...
    99+
    2023-06-06
  • 用Python写几个小游戏(附源码)
    1、小恐龙 玩法:上下控制起跳躲避 import cfgimport sysimport randomimport pygamefrom modules import *'''main'''def main(highest_score): ...
    99+
    2023-08-31
    python 游戏程序
  • 二十种Python代码游戏源代码分享
    学Python中,自我感觉学的还不错的亚子~想做点什么来练练手,然后我疯狂的找各种小游戏的教程源码什么的,于是我就疯狂的找呀找呀,就找到了一大堆,哈哈哈 毕竟我是从小就有一个游戏梦,...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作