import random
import pygame,sys
from day08.Bao import Bao
from day08.Bomb import Bomb
from day08.Destory import Destory
from day08.Hai import Hai
from day08.Pao import Pao
from day08.Prop import Prop
from day08.SetImage import SetImage
class NexonGame:
def __init__(self):
self.screen = pygame.display.set_mode((925, 700))
self.setImg = SetImage()
self.floorMap = [
[0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0],
]
self.builderMap = [
[7, 2, 1, 2, 1, 0, 7, 7, 6, 0, 5, 3, 5, 7, 5],
[7, 3, 6, 3, 7, 0, 6, 7, 7, 0, 1, 2, 7, 7, 7],
[7, 7, 2, 1, 2, 0, 7, 6, 6, 1, 5, 6, 5, 6, 5],
[6, 5, 6, 5, 6, 0, 6, 7, 7, 0, 2, 1, 2, 1, 2],
[1, 2, 1, 2, 1, 1, 7, 7, 6, 0, 5, 6, 5, 6, 5],
[2, 3, 2, 3, 2, 3, 6, 6, 7, 7, 1, 2, 1, 2, 1],
[0, 0, 0, 0, 0, 0, 7, 7, 6, 0, 0, 0, 0, 0, 0],
[1, 2, 1, 2, 1, 7, 6, 7, 7, 2, 1, 3, 1, 3, 7],
[4, 6, 4, 6, 4, 0, 6, 6, 7, 0, 2, 1, 2, 7, 7],
[2, 1, 2, 1, 2, 0, 7, 7, 7, 0, 6, 3, 6, 3, 7],
[4, 7, 4, 6, 4, 0, 7, 6, 7, 0, 1, 2, 1, 2, 7],
[7, 7, 1, 2, 1, 0, 6, 7, 7, 0, 6, 3, 7, 3, 7],
[4, 7, 4, 1, 4, 0, 7, 6, 7, 0, 2, 7, 7, 7, 7]
]
self.bao = Bao(self.screen,self.setImg.baoImgs)
self.hai = Hai(self.screen,self.setImg.haiImgs)
self.paos = []
self.bombs = []
self.destorys = []
self.props = []
self.state = 0
def menu(self):
while True:
pygame.display.set_caption("泡泡堂")
self.action()
self.paint()
pygame.time.delay(10)
pygame.display.update()
def action(self):
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_w and not self.bao.die:
self.stepBao(0,self.bao)
elif event.key == pygame.K_s and not self.bao.die:
self.stepBao(1, self.bao)
elif event.key == pygame.K_a and not self.bao.die:
self.stepBao(2, self.bao)
elif event.key == pygame.K_d and not self.bao.die:
self.stepBao(3, self.bao)
elif event.key == pygame.K_j and not self.bao.die:
if self.bao.number > 0:
self.paos.append(
Pao(self.screen,self.setImg.paoImgs,self.bao.row,self.bao.col)
)
self.bao.number -= 1
if event.key == pygame.K_UP and not self.hai.die:
self.stephai(0, self.hai)
elif event.key == pygame.K_DOWN and not self.hai.die:
self.stephai(1, self.hai)
elif event.key == pygame.K_LEFT and not self.hai.die:
self.stephai(2, self.hai)
elif event.key == pygame.K_RIGHT and not self.hai.die:
self.stephai(3, self.hai)
elif event.key == pygame.K_KP0 and not self.hai.die:
if self.hai.number > 0:
self.paos.append(
Pao(self.screen, self.setImg.paoImgs, self.hai.row, self.hai.col)
)
self.hai.number -= 1
self.coincode()
if event.type == pygame.MOUSEBUTTONDOWN:
leftFlag = pygame.mouse.get_pressed()
mx, my = pygame.mouse.get_pos()
if leftFlag and self.state == 0 and 85 < mx < 85 + 300 and 560< my < 560 + 85:
self.state = 1
self.stepAction()
def coincode(self):
for prop in self.props:
pRow = prop.row
pCol = prop.col
if self.bao.col == pCol and self.bao.row == pRow:
if prop.type == 0:
self.bao.power += 1
print("power", self.bao.power)
elif prop.type == 1:
self.bao.number += 1
print("num", self.bao.number)
elif prop.type == 2:
self.bao.speed += 1
print("speed", self.bao.speed)
self.props.remove(prop)
if self.hai.col == pCol and self.hai.row == pRow:
if prop.type == 0:
self.hai.power += 1
print("power", self.hai.power)
elif prop.type == 1:
self.hai.number += 1
print("num", self.hai.number)
elif prop.type == 2:
self.hai.speed += 1
print("speed", self.hai.speed)
self.props.remove(prop)
def stepAction(self):
for pao in self.paos:
pao.step()
if pao.life < 0:
self.createBomb(pao)
self.paos.remove(pao)
self.bao.number += 1
self.hai.number += 1
for bomb in self.bombs:
bomb.step()
if bomb.life < 0:
if bomb.row == self.bao.row and bomb.col == self.bao.col:
self.bao.die = True
self.bao.image = self.setImg.baoDie
if bomb.row == self.hai.row and bomb.col == self.hai.col:
self.hai.die = True
self.hai.image = self.setImg.haiDie
self.bombs.remove(bomb)
if self.builderMap[bomb.row][bomb.col] in [1, 2, 6]:
self.destorys.append(Destory(self.screen, self.setImg.destoryImg, bomb.row, bomb.col))
self.builderMap[bomb.row][bomb.col] = 7
for destory in self.destorys:
destory.step()
if destory.life < 0:
if random.randint(0,10) < 5 :
self.props.append(Prop(self.screen, self.setImg.propImg, destory.row, destory.col))
self.destorys.remove(destory)
def createprops(self,destory):
pRow = destory.row
pCol = destory.col
# if self.builderMap[pRow][pCol] in [1, 2, 6]:
leftprop = Prop(self.screen, self.setImg.propImg, pRow, pCol)
self.props.append(leftprop)
rightprop = Prop(self.screen, self.setImg.propImg, pRow, pCol)
self.props.append(rightprop)
upprop = Prop(self.screen, self.setImg.propImg, pRow, pCol)
self.props.append(upprop)
downprop = Prop(self.screen, self.setImg.propImg, pRow, pCol)
self.props.append(downprop)
def createdestory(self,bomb):
pRow = bomb.row
pCol = bomb.col
# if self.builderMap[pRow][pCol] in [1, 2, 6]:
leftdestory = Destory(self.screen, self.setImg.destoryImg, pRow, pCol)
self.destorys.append(leftdestory)
rightdestory = Destory(self.screen, self.setImg.destoryImg, pRow, pCol)
self.destorys.append(rightdestory)
updestpry = Destory(self.sc
评论0