本篇文章給大家談談炸彈人2代碼,以及炸彈人2美版金手指代碼的知識點,希望對各位有所幫助,不要忘了收藏本站喔。
文章詳情介紹:
炸裂全場、超級炸彈人“爆炸”登場,這是你的童年嘛?
前言如今的玩家們在無聊的時候會玩些什么游戲呢?
?
王者還是吃雞是最多的選擇。但在80、90年代的時候多是一些很簡單的游戲:《超級瑪麗》、
《蜘蛛紙牌》、《魂斗羅》......
不知道還有人記得《炸彈人》這款懷舊的產品嘛?
?
啊這,不對不對,放錯圖片了下面這才是童年的正確打開方式
?
今天小編就帶大家懷舊一波,來給大家用代碼仿制一下童年大家玩兒過的《炸彈人》小游戲!
喜歡的點點關注啦!源碼也是文末免費拿滴 謝謝啦開工~
正文一、環境安裝1)素材(圖片)?
?
2)環境安裝本文是由Pygame寫的小游戲。
涉及運行環境:Python3.7、Pycharm社區版、Pygame模塊。
pip install +模塊名 或pip install -i https://pypi.douban.com/simple/ +模塊名
二、代碼演示
1)配置文件
'''配置文件'''
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)
2)主程序
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)
三、效果展示
1)游戲界面
都是有音樂背景的啦!
?
2)游戲開始
?
3)游戲結束
?
總結嘻嘻,炸彈人到這里就正式結束啦~有沒有喚醒你的童年啦!
完整的素材等:滴滴我吖!私信小編06即可得!
還有更多更多源碼等你來領區啦!文章匯總——匯總: Python文章合集 | (入門到實戰、游戲、Turtle、案例等)
(文章匯總還有更多你案例等你來學習啦~源碼找我即可免費!)
?