植物大战僵尸3 #
- 地图的初始化与加载
- 地图坐标的初始化
- 加载地图到窗口
游戏创建 #
本小节主要介绍地图类class Map()的创建,初始化与加载
#3 创建地图类 class Map(): #3 存储两张不同颜色的图片名称 map_names_list = [IMAGE_PATH + 'map1.png', IMAGE_PATH + 'map2.png'] #3 初始化地图 def __init__(self, x, y, img_index): self.image = pygame.image.load(Map.map_names_list[img_index]) self.position = (x, y) # 是否能够种植 self.can_grow = True #3 加载地图 def load_map(self): MainGame.window.blit(self.image,self.position)
地图坐标的初始化 #
本小节主要介绍地图坐标的初始化,用来创建10×6的网格。在主程序类class MainGame()中添加变量初始化和初始化坐标点的函数init_plant_points()
#class MainGame(): #3 存储所有地图坐标点 map_points_list = [] #3 存储所有的地图块 map_list = [] #3 初始化坐标点 def init_plant_points(self): for y in range(1, 7): points = [] for x in range(10): point = (x, y) points.append(point) MainGame.map_points_list.append(points) print("MainGame.map_points_list", MainGame.map_points_list)
加载地图到窗口 #
本小节主要介绍如何把初始化好的坐标加载到可视化游戏窗口中。在在主程序类class MainGame()中添加地图初始化函数init_map()和地图加载函数load_map()。并且在主程序类class MainGame()中的开始游戏函数def start_game()中添加并调用初始化坐标点的函数init_plant_points()和地图初始化函数init_map()。
同时,由于游戏界面需要不断更新,需在主程序类class MainGame()中的开始游戏函数def start_game()中的循环while not GAMEOVER:中添加地图加载函数load_map()以实现地图的反复加载。
#class MainGame(): #3 初始化地图 def init_map(self): for points in MainGame.map_points_list: temp_map_list = list() for point in points: # map = None if (point[0] + point[1]) % 2 == 0: map = Map(point[0] * 80, point[1] * 80, 0) else: map = Map(point[0] * 80, point[1] * 80, 1) # 将地图块加入到窗口中 temp_map_list.append(map) print("temp_map_list", temp_map_list) MainGame.map_list.append(temp_map_list) print("MainGame.map_list", MainGame.map_list) #3 将地图加载到窗口中 def load_map(self): for temp_map_list in MainGame.map_list: for map in temp_map_list: map.load_map() def start_game(self): #3 调用初始化坐标和地图 self.init_plant_points() self.init_map() while not GAMEOVER: #3 需要反复加载地图 self.load_map()
小结 #
本节主要介绍了植物大战游戏中地图类的初始化及窗口加载