跳至正文
View Categories

1 min read

植物大战僵尸3 #

  1. 地图的初始化与加载
  2. 地图坐标的初始化
  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()

小结 #

本节主要介绍了植物大战游戏中地图类的初始化及窗口加载