将植物在选择菜单种的顺序改为与原版相同
This commit is contained in:
parent
bb9dbe3604
commit
9305a347d1
@ -4,93 +4,96 @@ import pygame as pg
|
|||||||
from .. import tool
|
from .. import tool
|
||||||
from .. import constants as c
|
from .. import constants as c
|
||||||
|
|
||||||
PANEL_Y_START = 87
|
plantInfo = (#元组 (植物名称, 卡片名称, 阳光, 冷却时间)
|
||||||
PANEL_X_START = 22
|
(c.PEASHOOTER,
|
||||||
PANEL_Y_INTERNAL = 73
|
c.CARD_PEASHOOTER,
|
||||||
PANEL_X_INTERNAL = 53
|
|
||||||
BAR_CARD_X_INTERNAL = 51
|
|
||||||
# 以后可以增加解锁功能
|
|
||||||
CARD_MAX_NUM = 10
|
|
||||||
CARD_LIST_NUM = CARD_MAX_NUM
|
|
||||||
|
|
||||||
'''
|
|
||||||
plantDict = {# 字典 植物名称:(卡片名称, 阳光, 冷却时间)
|
|
||||||
c.SUNFLOWER:(c.CARD_SUNFLOWER,
|
|
||||||
50,
|
|
||||||
7500),
|
|
||||||
c.PEASHOOTER:(c.CARD_PEASHOOTER,
|
|
||||||
100,
|
100,
|
||||||
7500),
|
7500),
|
||||||
c.SNOWPEASHOOTER:(c.CARD_SNOWPEASHOOTER,
|
(c.SUNFLOWER,
|
||||||
|
c.CARD_SUNFLOWER,
|
||||||
|
50,
|
||||||
|
7500),
|
||||||
|
(c.CHERRYBOMB,
|
||||||
|
c.CARD_CHERRYBOMB,
|
||||||
|
150,
|
||||||
|
50000),
|
||||||
|
(c.WALLNUT,
|
||||||
|
c.CARD_WALLNUT,
|
||||||
|
50,
|
||||||
|
30000),
|
||||||
|
(c.POTATOMINE,
|
||||||
|
c.CARD_POTATOMINE,
|
||||||
|
25,
|
||||||
|
30000),
|
||||||
|
(c.SNOWPEASHOOTER,
|
||||||
|
c.CARD_SNOWPEASHOOTER,
|
||||||
175,
|
175,
|
||||||
7500),
|
7500),
|
||||||
c.WALLNUT:(c.CARD_WALLNUT,
|
(c.CHOMPER,
|
||||||
50,
|
c.CARD_CHOMPER,
|
||||||
30000),
|
|
||||||
c.CHERRYBOMB:(c.CARD_CHERRYBOMB,
|
|
||||||
150,
|
150,
|
||||||
50000),
|
|
||||||
c.THREEPEASHOOTER:(c.CARD_THREEPEASHOOTER,
|
|
||||||
325,
|
|
||||||
7500),
|
7500),
|
||||||
c.REPEATERPEA:(c.CARD_REPEATERPEA,
|
(c.REPEATERPEA,
|
||||||
|
c.CARD_REPEATERPEA,
|
||||||
200,
|
200,
|
||||||
7500),
|
7500),
|
||||||
c.CHOMPER:(c.CARD_CHOMPER,
|
(c.PUFFSHROOM,
|
||||||
150,
|
c.CARD_PUFFSHROOM,
|
||||||
7500),
|
|
||||||
c.PUFFSHROOM:(c.CARD_PUFFSHROOM,
|
|
||||||
0,
|
0,
|
||||||
7500),
|
7500),
|
||||||
c.POTATOMINE:(c.CARD_POTATOMINE,
|
(c.SUNSHROOM,
|
||||||
25,
|
c.CARD_SUNSHROOM,
|
||||||
30000),
|
|
||||||
c.SQUASH:(c.CARD_SQUASH,
|
|
||||||
50,
|
|
||||||
30000),
|
|
||||||
c.SPIKEWEED:(c.CARD_SPIKEWEED,
|
|
||||||
100,
|
|
||||||
7500),
|
|
||||||
c.JALAPENO:(c.CARD_JALAPENO,
|
|
||||||
125,
|
|
||||||
30000),
|
|
||||||
c.SCAREDYSHROOM:(c.CARD_SCAREDYSHROOM,
|
|
||||||
25,
|
25,
|
||||||
7500),
|
7500),
|
||||||
c.SUNSHROOM:(c.CARD_SUNSHROOM,
|
(c.HYPNOSHROOM,
|
||||||
|
c.CARD_HYPNOSHROOM,
|
||||||
|
75,
|
||||||
|
30000),
|
||||||
|
(c.SCAREDYSHROOM,
|
||||||
|
c.CARD_SCAREDYSHROOM,
|
||||||
25,
|
25,
|
||||||
7500),
|
7500),
|
||||||
c.ICESHROOM:(c.CARD_ICESHROOM,
|
(c.ICESHROOM,
|
||||||
|
c.CARD_ICESHROOM,
|
||||||
75,
|
75,
|
||||||
50000),
|
50000),
|
||||||
c.HYPNOSHROOM:(c.CARD_HYPNOSHROOM,
|
(c.LILYPAD,
|
||||||
75,
|
c.CARD_LILYPAD,
|
||||||
30000),
|
|
||||||
c.WALLNUTBOWLING:(c.CARD_WALLNUT,
|
|
||||||
0,
|
|
||||||
0),
|
|
||||||
c.REDWALLNUTBOWLING:(c.CARD_REDWALLNUT,
|
|
||||||
0,
|
|
||||||
0),
|
|
||||||
c.LILYPAD:(c.CARD_LILYPAD,
|
|
||||||
25,
|
25,
|
||||||
7500)}
|
7500),
|
||||||
'''
|
(c.SQUASH,
|
||||||
|
c.CARD_SQUASH,
|
||||||
|
50,
|
||||||
|
30000),
|
||||||
|
(c.THREEPEASHOOTER,
|
||||||
|
c.CARD_THREEPEASHOOTER,
|
||||||
|
325,
|
||||||
|
7500),
|
||||||
|
(c.JALAPENO,
|
||||||
|
c.CARD_JALAPENO,
|
||||||
|
125,
|
||||||
|
30000),
|
||||||
|
(c.SPIKEWEED,
|
||||||
|
c.CARD_SPIKEWEED,
|
||||||
|
100,
|
||||||
|
7500),
|
||||||
|
(c.TORCHWOOD,
|
||||||
|
c.CARD_TORCHWOOD,
|
||||||
|
175,
|
||||||
|
7500),
|
||||||
|
# 应当保证这两个在一般模式下不可选的特殊植物恒在最后
|
||||||
|
(c.WALLNUTBOWLING,
|
||||||
|
c.CARD_WALLNUT,
|
||||||
|
0,
|
||||||
|
0),
|
||||||
|
(c.REDWALLNUTBOWLING,
|
||||||
|
c.CARD_REDWALLNUT,
|
||||||
|
0,
|
||||||
|
0),
|
||||||
|
)
|
||||||
|
|
||||||
card_name_list = (c.CARD_SUNFLOWER, c.CARD_PEASHOOTER, c.CARD_SNOWPEASHOOTER, c.CARD_WALLNUT,
|
# 指定了哪些卡可选
|
||||||
c.CARD_CHERRYBOMB, c.CARD_THREEPEASHOOTER, c.CARD_REPEATERPEA, c.CARD_CHOMPER,
|
cards_to_choose = range(len(plantInfo) - 2)
|
||||||
c.CARD_PUFFSHROOM, c.CARD_POTATOMINE, c.CARD_SQUASH, c.CARD_SPIKEWEED,
|
|
||||||
c.CARD_JALAPENO, c.CARD_SCAREDYSHROOM, c.CARD_SUNSHROOM, c.CARD_ICESHROOM,
|
|
||||||
c.CARD_HYPNOSHROOM, c.CARD_LILYPAD, c.CARD_TORCHWOOD, c.CARD_WALLNUT, c.CARD_REDWALLNUT)
|
|
||||||
plant_name_list = (c.SUNFLOWER, c.PEASHOOTER, c.SNOWPEASHOOTER, c.WALLNUT,
|
|
||||||
c.CHERRYBOMB, c.THREEPEASHOOTER, c.REPEATERPEA, c.CHOMPER,
|
|
||||||
c.PUFFSHROOM, c.POTATOMINE, c.SQUASH, c.SPIKEWEED,
|
|
||||||
c.JALAPENO, c.SCAREDYSHROOM, c.SUNSHROOM, c.ICESHROOM,
|
|
||||||
c.HYPNOSHROOM, c.LILYPAD, c.TORCHWOOD, c.WALLNUTBOWLING, c.REDWALLNUTBOWLING)
|
|
||||||
plant_sun_list = (50, 100, 175, 50, 150, 325, 200, 150, 0, 25, 50, 100, 125, 25, 25, 75, 75, 25, 175,0, 0)
|
|
||||||
plant_frozen_time_list = (7500, 7500, 7500, 30000, 50000, 7500, 7500, 7500, 7500, 30000,
|
|
||||||
30000, 7500, 50000, 7500, 7500, 50000, 30000, 7500, 7500, 0, 0)
|
|
||||||
all_card_list = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)
|
|
||||||
|
|
||||||
|
|
||||||
def getSunValueImage(sun_value):
|
def getSunValueImage(sun_value):
|
||||||
@ -114,22 +117,22 @@ def getCardPool(data):
|
|||||||
card_pool = []
|
card_pool = []
|
||||||
for card in data:
|
for card in data:
|
||||||
tmp = card['name']
|
tmp = card['name']
|
||||||
for i,name in enumerate(plant_name_list):
|
for i,name in enumerate(plantInfo):
|
||||||
if name == tmp:
|
if name[c.PLANT_NAME_INDEX] == tmp:
|
||||||
card_pool.append(i)
|
card_pool.append(i)
|
||||||
break
|
break
|
||||||
return card_pool
|
return card_pool
|
||||||
|
|
||||||
class Card():
|
class Card():
|
||||||
def __init__(self, x, y, name_index, scale=0.5):
|
def __init__(self, x, y, index, scale=0.5):
|
||||||
self.loadFrame(card_name_list[name_index], scale)
|
self.loadFrame(plantInfo[index][c.CARD_INDEX], scale)
|
||||||
self.rect = self.orig_image.get_rect()
|
self.rect = self.orig_image.get_rect()
|
||||||
self.rect.x = x
|
self.rect.x = x
|
||||||
self.rect.y = y
|
self.rect.y = y
|
||||||
|
|
||||||
self.name_index = name_index
|
self.index = index
|
||||||
self.sun_cost = plant_sun_list[name_index]
|
self.sun_cost = plantInfo[index][c.SUN_INDEX]
|
||||||
self.frozen_time = plant_frozen_time_list[name_index]
|
self.frozen_time = plantInfo[index][c.FROZEN_INDEX]
|
||||||
self.frozen_timer = -self.frozen_time
|
self.frozen_timer = -self.frozen_time
|
||||||
self.refresh_timer = 0
|
self.refresh_timer = 0
|
||||||
self.select = True
|
self.select = True
|
||||||
@ -240,7 +243,7 @@ class MenuBar():
|
|||||||
x = self.card_offset_x
|
x = self.card_offset_x
|
||||||
y = 8
|
y = 8
|
||||||
for index in card_list:
|
for index in card_list:
|
||||||
x += BAR_CARD_X_INTERNAL
|
x += c.BAR_CARD_X_INTERNAL
|
||||||
self.card_list.append(Card(x, y, index))
|
self.card_list.append(Card(x, y, index))
|
||||||
|
|
||||||
def checkCardClick(self, mouse_pos):
|
def checkCardClick(self, mouse_pos):
|
||||||
@ -248,7 +251,7 @@ class MenuBar():
|
|||||||
for card in self.card_list:
|
for card in self.card_list:
|
||||||
if card.checkMouseClick(mouse_pos):
|
if card.checkMouseClick(mouse_pos):
|
||||||
if card.canClick(self.sun_value, self.current_time):
|
if card.canClick(self.sun_value, self.current_time):
|
||||||
result = (plant_name_list[card.name_index], card)
|
result = (plantInfo[card.index][c.PLANT_NAME_INDEX], card)
|
||||||
break
|
break
|
||||||
return result
|
return result
|
||||||
|
|
||||||
@ -267,7 +270,7 @@ class MenuBar():
|
|||||||
|
|
||||||
def setCardFrozenTime(self, plant_name):
|
def setCardFrozenTime(self, plant_name):
|
||||||
for card in self.card_list:
|
for card in self.card_list:
|
||||||
if plant_name_list[card.name_index] == plant_name:
|
if plantInfo[card.index][c.PLANT_NAME_INDEX] == plant_name:
|
||||||
card.setFrozenTime(self.current_time)
|
card.setFrozenTime(self.current_time)
|
||||||
break
|
break
|
||||||
|
|
||||||
@ -309,7 +312,7 @@ class Panel():
|
|||||||
self.panel_image = self.loadFrame(c.PANEL_BACKGROUND)
|
self.panel_image = self.loadFrame(c.PANEL_BACKGROUND)
|
||||||
self.panel_rect = self.panel_image.get_rect()
|
self.panel_rect = self.panel_image.get_rect()
|
||||||
self.panel_rect.x = 0
|
self.panel_rect.x = 0
|
||||||
self.panel_rect.y = PANEL_Y_START
|
self.panel_rect.y = c.PANEL_Y_START
|
||||||
|
|
||||||
|
|
||||||
self.value_image = getSunValueImage(sun_value)
|
self.value_image = getSunValueImage(sun_value)
|
||||||
@ -324,29 +327,29 @@ class Panel():
|
|||||||
|
|
||||||
def setupCards(self, card_list):
|
def setupCards(self, card_list):
|
||||||
self.card_list = []
|
self.card_list = []
|
||||||
x = PANEL_X_START - PANEL_X_INTERNAL
|
x = c.PANEL_X_START - c.PANEL_X_INTERNAL
|
||||||
y = PANEL_Y_START + 43 - PANEL_Y_INTERNAL
|
y = c.PANEL_Y_START + 43 - c.PANEL_Y_INTERNAL
|
||||||
for i, index in enumerate(card_list):
|
for i, index in enumerate(card_list):
|
||||||
if i % 8 == 0:
|
if i % 8 == 0:
|
||||||
x = PANEL_X_START - PANEL_X_INTERNAL
|
x = c.PANEL_X_START - c.PANEL_X_INTERNAL
|
||||||
y += PANEL_Y_INTERNAL
|
y += c.PANEL_Y_INTERNAL
|
||||||
x += PANEL_X_INTERNAL
|
x += c.PANEL_X_INTERNAL
|
||||||
self.card_list.append(Card(x, y, index, 0.5))
|
self.card_list.append(Card(x, y, index, 0.5))
|
||||||
|
|
||||||
def checkCardClick(self, mouse_pos):
|
def checkCardClick(self, mouse_pos):
|
||||||
delete_card = None
|
delete_card = None
|
||||||
for card in self.selected_cards:
|
for card in self.selected_cards:
|
||||||
if delete_card: # when delete a card, move right cards to left
|
if delete_card: # when delete a card, move right cards to left
|
||||||
card.rect.x -= BAR_CARD_X_INTERNAL
|
card.rect.x -= c.BAR_CARD_X_INTERNAL
|
||||||
elif card.checkMouseClick(mouse_pos):
|
elif card.checkMouseClick(mouse_pos):
|
||||||
self.deleteCard(card.name_index)
|
self.deleteCard(card.index)
|
||||||
delete_card = card
|
delete_card = card
|
||||||
|
|
||||||
if delete_card:
|
if delete_card:
|
||||||
self.selected_cards.remove(delete_card)
|
self.selected_cards.remove(delete_card)
|
||||||
self.selected_num -= 1
|
self.selected_num -= 1
|
||||||
|
|
||||||
if self.selected_num >= CARD_MAX_NUM:
|
if self.selected_num >= c.BAR_CARD_X_INTERNAL:
|
||||||
return
|
return
|
||||||
|
|
||||||
for card in self.card_list:
|
for card in self.card_list:
|
||||||
@ -358,15 +361,15 @@ class Panel():
|
|||||||
def addCard(self, card):
|
def addCard(self, card):
|
||||||
card.setSelect(False)
|
card.setSelect(False)
|
||||||
y = 8
|
y = 8
|
||||||
x = 77 + self.selected_num * BAR_CARD_X_INTERNAL
|
x = 77 + self.selected_num * c.BAR_CARD_X_INTERNAL
|
||||||
self.selected_cards.append(Card(x, y, card.name_index))
|
self.selected_cards.append(Card(x, y, card.index))
|
||||||
self.selected_num += 1
|
self.selected_num += 1
|
||||||
|
|
||||||
def deleteCard(self, index):
|
def deleteCard(self, index):
|
||||||
self.card_list[index].setSelect(True)
|
self.card_list[index].setSelect(True)
|
||||||
|
|
||||||
def checkStartButtonClick(self, mouse_pos):
|
def checkStartButtonClick(self, mouse_pos):
|
||||||
if self.selected_num < CARD_LIST_NUM:
|
if self.selected_num < c.CARD_LIST_NUM:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
x, y = mouse_pos
|
x, y = mouse_pos
|
||||||
@ -378,7 +381,7 @@ class Panel():
|
|||||||
def getSelectedCards(self):
|
def getSelectedCards(self):
|
||||||
card_index_list = []
|
card_index_list = []
|
||||||
for card in self.selected_cards:
|
for card in self.selected_cards:
|
||||||
card_index_list.append(card.name_index)
|
card_index_list.append(card.index)
|
||||||
return card_index_list
|
return card_index_list
|
||||||
|
|
||||||
def draw(self, surface):
|
def draw(self, surface):
|
||||||
@ -390,7 +393,7 @@ class Panel():
|
|||||||
for card in self.selected_cards:
|
for card in self.selected_cards:
|
||||||
card.draw(surface)
|
card.draw(surface)
|
||||||
|
|
||||||
if self.selected_num >= CARD_LIST_NUM:
|
if self.selected_num >= c.CARD_LIST_NUM:
|
||||||
surface.blit(self.button_image, self.button_rect)
|
surface.blit(self.button_image, self.button_rect)
|
||||||
|
|
||||||
# 传送带模式
|
# 传送带模式
|
||||||
@ -473,8 +476,8 @@ class MoveBar():
|
|||||||
y = 6
|
y = 6
|
||||||
index = random.randint(0, len(self.card_pool) - 1)
|
index = random.randint(0, len(self.card_pool) - 1)
|
||||||
card_index = self.card_pool[index]
|
card_index = self.card_pool[index]
|
||||||
card_name = card_name_list[card_index] + '_move'
|
card_name = plantInfo[card_index][c.CARD_INDEX] + '_move'
|
||||||
plant_name = plant_name_list[card_index]
|
plant_name = plantInfo[card_index][c.PLANT_NAME_INDEX]
|
||||||
self.card_list.append(MoveCard(x, y, card_name, plant_name))
|
self.card_list.append(MoveCard(x, y, card_name, plant_name))
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|||||||
@ -122,6 +122,22 @@ PANEL_BACKGROUND = 'PanelBackground'
|
|||||||
START_BUTTON = 'StartButton'
|
START_BUTTON = 'StartButton'
|
||||||
CARD_POOL = 'card_pool'
|
CARD_POOL = 'card_pool'
|
||||||
|
|
||||||
|
# 关于植物栏的像素设置
|
||||||
|
PANEL_Y_START = 87
|
||||||
|
PANEL_X_START = 22
|
||||||
|
PANEL_Y_INTERNAL = 73
|
||||||
|
PANEL_X_INTERNAL = 53
|
||||||
|
BAR_CARD_X_INTERNAL = 51
|
||||||
|
# 这里以后可以增加解锁功能
|
||||||
|
CARD_MAX_NUM = 10
|
||||||
|
CARD_LIST_NUM = CARD_MAX_NUM
|
||||||
|
|
||||||
|
# 所选植物信息索引
|
||||||
|
PLANT_NAME_INDEX = 0
|
||||||
|
CARD_INDEX = 1
|
||||||
|
SUN_INDEX = 2
|
||||||
|
FROZEN_INDEX = 3
|
||||||
|
|
||||||
MOVEBAR_CARD_FRESH_TIME = 6000
|
MOVEBAR_CARD_FRESH_TIME = 6000
|
||||||
CARD_MOVE_TIME = 60
|
CARD_MOVE_TIME = 60
|
||||||
|
|
||||||
|
|||||||
@ -164,7 +164,7 @@ class Level(tool.State):
|
|||||||
|
|
||||||
def initChoose(self):
|
def initChoose(self):
|
||||||
self.state = c.CHOOSE
|
self.state = c.CHOOSE
|
||||||
self.panel = menubar.Panel(menubar.all_card_list, self.map_data[c.INIT_SUN_NAME])
|
self.panel = menubar.Panel(menubar.cards_to_choose, self.map_data[c.INIT_SUN_NAME])
|
||||||
|
|
||||||
def choose(self, mouse_pos, mouse_click):
|
def choose(self, mouse_pos, mouse_click):
|
||||||
if mouse_pos and mouse_click[0]:
|
if mouse_pos and mouse_click[0]:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user