实现僵尸坐标随机生成

This commit is contained in:
星外之神 2022-04-08 13:22:06 +08:00
parent e64762dc35
commit dc02965354
6 changed files with 109 additions and 93 deletions

View File

@ -3,18 +3,18 @@
"init_sun_value": 50,
"shovel": 1,
"zombie_list": [
{ "time": 20000, "map_y": 0, "name": "Zombie" },
{ "time": 40000, "map_y": 2, "name": "FlagZombie" },
{ "time": 50000, "map_y": 4, "name": "Zombie" },
{ "time": 70000, "map_y": 3, "name": "Zombie" },
{ "time": 72000, "map_y": 1, "name": "FlagZombie" },
{ "time": 74000, "map_y": 2, "name": "Zombie" },
{ "time": 90000, "map_y": 0, "name": "Zombie" },
{ "time": 91000, "map_y": 1, "name": "FlagZombie" },
{ "time": 92000, "map_y": 2, "name": "Zombie" },
{ "time": 93000, "map_y": 3, "name": "FlagZombie" },
{ "time": 94000, "map_y": 0, "name": "Zombie" },
{ "time": 95000, "map_y": 4, "name": "FlagZombie" },
{ "time": 96000, "map_y": 1, "name": "Zombie" }
{ "time": 20000, "name": "Zombie" },
{ "time": 40000, "name": "FlagZombie" },
{ "time": 50000, "name": "Zombie" },
{ "time": 70000, "name": "Zombie" },
{ "time": 72000, "name": "FlagZombie" },
{ "time": 74000, "name": "Zombie" },
{ "time": 90000, "name": "Zombie" },
{ "time": 91000, "name": "FlagZombie" },
{ "time": 92000, "name": "Zombie" },
{ "time": 93000, "name": "FlagZombie" },
{ "time": 94000, "name": "Zombie" },
{ "time": 95000, "name": "FlagZombie" },
{ "time": 96000, "name": "Zombie" }
]
}

View File

@ -3,18 +3,18 @@
"init_sun_value":50,
"shovel":1,
"zombie_list":[
{"time":20000, "map_y":0, "name":"Zombie"},
{"time":40000, "map_y":2, "name":"FlagZombie"},
{"time":50000, "map_y":4, "name":"ConeheadZombie"},
{"time":70000, "map_y":3, "name":"ConeheadZombie"},
{"time":72000, "map_y":1, "name":"FlagZombie"},
{"time":74000, "map_y":2, "name":"ConeheadZombie"},
{"time":90000, "map_y":0, "name":"FlagZombie"},
{"time":91000, "map_y":1, "name":"ConeheadZombie"},
{"time":92000, "map_y":2, "name":"Zombie"},
{"time":93000, "map_y":3, "name":"ConeheadZombie"},
{"time":94000, "map_y":0, "name":"Zombie"},
{"time":95000, "map_y":4, "name":"FlagZombie"},
{"time":96000, "map_y":1, "name":"ConeheadZombie"}
{"time":20000, "name":"Zombie"},
{"time":40000, "name":"FlagZombie"},
{"time":50000, "name":"ConeheadZombie"},
{"time":70000, "name":"ConeheadZombie"},
{"time":72000, "name":"FlagZombie"},
{"time":74000, "name":"ConeheadZombie"},
{"time":90000, "name":"FlagZombie"},
{"time":91000, "name":"ConeheadZombie"},
{"time":92000, "name":"Zombie"},
{"time":93000, "name":"ConeheadZombie"},
{"time":94000, "name":"Zombie"},
{"time":95000, "name":"FlagZombie"},
{"time":96000, "name":"ConeheadZombie"}
]
}

View File

@ -3,19 +3,19 @@
"init_sun_value":50,
"shovel":1,
"zombie_list":[
{"time":20000, "map_y":0, "name":"Zombie"},
{"time":40000, "map_y":2, "name":"ConeheadZombie"},
{"time":50000, "map_y":4, "name":"BucketheadZombie"},
{"time":70000, "map_y":3, "name":"BucketheadZombie"},
{"time":72000, "map_y":1, "name":"FlagZombie"},
{"time":74000, "map_y":2, "name":"ConeheadZombie"},
{"time":90000, "map_y":0, "name":"BucketheadZombie"},
{"time":91000, "map_y":1, "name":"ConeheadZombie"},
{"time":92000, "map_y":2, "name":"Zombie"},
{"time":93000, "map_y":3, "name":"BucketheadZombie"},
{"time":94000, "map_y":0, "name":"Zombie"},
{"time":95000, "map_y":4, "name":"FlagZombie"},
{"time":96000, "map_y":1, "name":"BucketheadZombie"},
{"time":97000, "map_y":1, "name":"FlagZombie"}
{"time":20000, "name":"Zombie"},
{"time":40000, "name":"ConeheadZombie"},
{"time":50000, "name":"BucketheadZombie"},
{"time":70000, "name":"BucketheadZombie"},
{"time":72000, "name":"FlagZombie"},
{"time":74000, "name":"ConeheadZombie"},
{"time":90000, "name":"BucketheadZombie"},
{"time":91000, "name":"ConeheadZombie"},
{"time":92000, "name":"Zombie"},
{"time":93000, "name":"BucketheadZombie"},
{"time":94000, "name":"Zombie"},
{"time":95000, "name":"FlagZombie"},
{"time":96000, "name":"BucketheadZombie"},
{"time":97000, "name":"FlagZombie"}
]
}

View File

@ -12,31 +12,31 @@
{"name":"PotatoMine"}
],
"zombie_list":[
{"time": 1000, "map_y":1, "name":"Zombie"},
{"time": 6000, "map_y":3, "name":"FlagZombie"},
{"time":10000, "map_y":0, "name":"ConeheadZombie"},
{"time":14000, "map_y":2, "name":"NewspaperZombie"},
{"time":18000, "map_y":4, "name":"BucketheadZombie"},
{"time":22000, "map_y":0, "name":"Zombie"},
{"time":26000, "map_y":3, "name":"BucketheadZombie"},
{"time":30000, "map_y":4, "name":"Zombie"},
{"time":32000, "map_y":3, "name":"NewspaperZombie"},
{"time":34000, "map_y":1, "name":"FlagZombie"},
{"time":36000, "map_y":2, "name":"ConeheadZombie"},
{"time":38000, "map_y":0, "name":"BucketheadZombie"},
{"time":40000, "map_y":1, "name":"ConeheadZombie"},
{"time":42000, "map_y":1, "name":"NewspaperZombie"},
{"time":60000, "map_y":4, "name":"Zombie"},
{"time":61000, "map_y":3, "name":"NewspaperZombie"},
{"time":62000, "map_y":1, "name":"FlagZombie"},
{"time":63000, "map_y":2, "name":"Zombie"},
{"time":64000, "map_y":0, "name":"BucketheadZombie"},
{"time":65000, "map_y":1, "name":"ConeheadZombie"},
{"time":66000, "map_y":2, "name":"Zombie"},
{"time":67000, "map_y":4, "name":"BucketheadZombie"},
{"time":68000, "map_y":3, "name":"NewspaperZombie"},
{"time":69000, "map_y":1, "name":"FlagZombie"},
{"time":70000, "map_y":4, "name":"BucketheadZombie"},
{"time":71000, "map_y":0, "name":"FlagZombie"}
{"time": 1000, "name":"Zombie"},
{"time": 6000, "name":"FlagZombie"},
{"time":10000, "name":"ConeheadZombie"},
{"time":14000, "name":"NewspaperZombie"},
{"time":18000, "name":"BucketheadZombie"},
{"time":22000, "name":"Zombie"},
{"time":26000, "name":"BucketheadZombie"},
{"time":30000, "name":"Zombie"},
{"time":32000, "name":"NewspaperZombie"},
{"time":34000, "name":"FlagZombie"},
{"time":36000, "name":"ConeheadZombie"},
{"time":38000, "name":"BucketheadZombie"},
{"time":40000, "name":"ConeheadZombie"},
{"time":42000, "name":"NewspaperZombie"},
{"time":60000, "name":"Zombie"},
{"time":61000, "name":"NewspaperZombie"},
{"time":62000, "name":"FlagZombie"},
{"time":63000, "name":"Zombie"},
{"time":64000, "name":"BucketheadZombie"},
{"time":65000, "name":"ConeheadZombie"},
{"time":66000, "name":"Zombie"},
{"time":67000, "name":"BucketheadZombie"},
{"time":68000, "name":"NewspaperZombie"},
{"time":69000, "name":"FlagZombie"},
{"time":70000, "name":"BucketheadZombie"},
{"time":71000, "name":"FlagZombie"}
]
}

View File

@ -7,28 +7,28 @@
{"name":"RedWallNutBowling"}
],
"zombie_list":[
{"time": 1000, "map_y":1, "name":"Zombie"},
{"time":10000, "map_y":3, "name":"FlagZombie"},
{"time":12000, "map_y":0, "name":"ConeheadZombie"},
{"time":14000, "map_y":2, "name":"NewspaperZombie"},
{"time":18000, "map_y":4, "name":"BucketheadZombie"},
{"time":22000, "map_y":3, "name":"Zombie"},
{"time":26000, "map_y":1, "name":"BucketheadZombie"},
{"time":30000, "map_y":4, "name":"Zombie"},
{"time":32000, "map_y":3, "name":"NewspaperZombie"},
{"time":34000, "map_y":1, "name":"FlagZombie"},
{"time":36000, "map_y":2, "name":"ConeheadZombie"},
{"time":40000, "map_y":1, "name":"ConeheadZombie"},
{"time":42000, "map_y":1, "name":"NewspaperZombie"},
{"time":50000, "map_y":4, "name":"Zombie"},
{"time":54000, "map_y":3, "name":"NewspaperZombie"},
{"time":58000, "map_y":1, "name":"FlagZombie"},
{"time":62000, "map_y":2, "name":"Zombie"},
{"time":64000, "map_y":1, "name":"ConeheadZombie"},
{"time":66000, "map_y":2, "name":"Zombie"},
{"time":68000, "map_y":3, "name":"NewspaperZombie"},
{"time":70000, "map_y":1, "name":"FlagZombie"},
{"time":72000, "map_y":4, "name":"BucketheadZombie"},
{"time":74000, "map_y":0, "name":"FlagZombie"}
{"time": 1000, "name":"Zombie"},
{"time":10000, "name":"FlagZombie"},
{"time":12000, "name":"ConeheadZombie"},
{"time":14000, "name":"NewspaperZombie"},
{"time":18000, "name":"BucketheadZombie"},
{"time":22000, "name":"Zombie"},
{"time":26000, "name":"BucketheadZombie"},
{"time":30000, "name":"Zombie"},
{"time":32000, "name":"NewspaperZombie"},
{"time":34000, "name":"FlagZombie"},
{"time":36000, "name":"ConeheadZombie"},
{"time":40000, "name":"ConeheadZombie"},
{"time":42000, "name":"NewspaperZombie"},
{"time":50000, "name":"Zombie"},
{"time":54000, "name":"NewspaperZombie"},
{"time":58000, "name":"FlagZombie"},
{"time":62000, "name":"Zombie"},
{"time":64000, "name":"ConeheadZombie"},
{"time":66000, "name":"Zombie"},
{"time":68000, "name":"NewspaperZombie"},
{"time":70000, "name":"FlagZombie"},
{"time":72000, "name":"BucketheadZombie"},
{"time":74000, "name":"FlagZombie"}
]
}

View File

@ -3,6 +3,7 @@ import os
import json
import sys
import pygame as pg
from random import randint
from .. import tool
from .. import constants as c
from ..component import map, plant, zombie, menubar
@ -104,7 +105,10 @@ class Level(tool.State):
self.zombie_list = []
# 目前设置为从JSON文件中读取僵尸出现的时间、种类、位置信息以后可以将时间设置为模仿原版的机制位置设置为随机数
for data in self.map_data[c.ZOMBIE_LIST]:
self.zombie_list.append((data['time'], data['name'], data['map_y']))
if 'map_y' in data.keys():
self.zombie_list.append((data['time'], data['name'], data['map_y']))
else:
self.zombie_list.append((data['time'], data['name']))
self.zombie_start_time = 0
self.zombie_list.sort(key=takeTime)
@ -322,9 +326,14 @@ class Level(tool.State):
self.zombie_start_time = self.current_time
elif len(self.zombie_list) > 0:
data = self.zombie_list[0] # 因此要求僵尸列表按照时间顺序排列
# data内容排列[0]:时间 [1]:名称 [2]:坐标
if data[0] <= (self.current_time - self.zombie_start_time):
self.createZombie(data[1], data[2])
self.zombie_list.remove(data)
if len(data) == 3:
self.createZombie(data[1], data[2])
self.zombie_list.remove(data)
else: # len(data) == 2 没有指定map_y
self.createZombie(data[1])
self.zombie_list.remove(data)
for i in range(self.map_y_len):
self.bullet_groups[i].update(self.game_info)
@ -402,7 +411,14 @@ class Level(tool.State):
self.checkCarCollisions()
self.checkGameState()
def createZombie(self, name, map_y):
def createZombie(self, name, map_y=None):
# 有指定时按照指定生成,无指定时随机位置生成
# 0:白天 1:夜晚 2:泳池 3:浓雾 4:屋顶 5:月夜
if map_y == None:
if self.map_data[c.BACKGROUND_TYPE] in {0, 1, 4, 5}:
map_y = randint(0, 4)
elif self.map_data[c.BACKGROUND_TYPE] in {2, 3}:
map_y = randint(0, 5)
x, y = self.map.getMapGridPos(0, map_y)
# 新增的僵尸也需要在这里声明
if name == c.NORMAL_ZOMBIE: