From dc0296535428144d64d6018dd9457c0c76ea0f12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=9F=E5=A4=96=E4=B9=8B=E7=A5=9E?= Date: Fri, 8 Apr 2022 13:22:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E5=83=B5=E5=B0=B8=E5=9D=90?= =?UTF-8?q?=E6=A0=87=E9=9A=8F=E6=9C=BA=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/data/map/level_1.json | 26 +++++++------- resources/data/map/level_2.json | 26 +++++++------- resources/data/map/level_3.json | 28 +++++++-------- resources/data/map/littleGame_1.json | 52 ++++++++++++++-------------- resources/data/map/littleGame_2.json | 46 ++++++++++++------------ source/state/level.py | 24 ++++++++++--- 6 files changed, 109 insertions(+), 93 deletions(-) diff --git a/resources/data/map/level_1.json b/resources/data/map/level_1.json index 575c4e2..359abec 100644 --- a/resources/data/map/level_1.json +++ b/resources/data/map/level_1.json @@ -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" } ] } \ No newline at end of file diff --git a/resources/data/map/level_2.json b/resources/data/map/level_2.json index f3c452d..eb21058 100644 --- a/resources/data/map/level_2.json +++ b/resources/data/map/level_2.json @@ -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"} ] } \ No newline at end of file diff --git a/resources/data/map/level_3.json b/resources/data/map/level_3.json index 4fd8d99..02bf49a 100644 --- a/resources/data/map/level_3.json +++ b/resources/data/map/level_3.json @@ -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"} ] } diff --git a/resources/data/map/littleGame_1.json b/resources/data/map/littleGame_1.json index d03ece5..7b58813 100644 --- a/resources/data/map/littleGame_1.json +++ b/resources/data/map/littleGame_1.json @@ -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"} ] } \ No newline at end of file diff --git a/resources/data/map/littleGame_2.json b/resources/data/map/littleGame_2.json index ac4bbf8..c5ae769 100644 --- a/resources/data/map/littleGame_2.json +++ b/resources/data/map/littleGame_2.json @@ -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"} ] } \ No newline at end of file diff --git a/source/state/level.py b/source/state/level.py index ad0f962..4962dbe 100644 --- a/source/state/level.py +++ b/source/state/level.py @@ -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: