------------------------------------------------ GameMap.lua -----------------------------------------------------
module("GameMap", package.seeall) -- "GameMap"为用户定义的包名,包名需与其所在的文件名同名。 调用本文件里语法: packMap = require"GameMap"
function newBaseMap(mapName, mapID)
local objMap =
{
m_pMap = mapName, --创建地图
m_ID = mapID --记录地图ID
}
function objMap:deleteMap() --消毁地图
self.m_pMap = nil
self.m_ID = nil
end
function objMap:showMap()
if nil ~= self.m_pMap and nil ~= self.m_ID then
print(self.m_pMap, self.m_ID)
end
end
return objMap
end
-- 怪物地图类
function newMonsterMap(mapName, mapID)
local objMap = newBaseMap(mapName, mapID)
objMap.m_Monsters = {}
function objMap:buildMonster(monsterName, posX, posY) --创建怪物
self.m_Monsters[#self.m_Monsters+1] = { m_Name = monsterName, m_posX = posX, m_posY = posY }
end
function objMap:deleteMonsterMap() --消毁地图
self:deleteMap()
objMap.m_Monsters = nil
end
local funTemp = objMap.showMap --多态函数
function objMap:showMap()
funTemp(self)
if nil ~= self.m_Monsters then
for i=1, #self.m_Monsters do
print(self.m_Monsters[i].m_Name, self.m_Monsters[i].m_posX, self.m_Monsters[i].m_posY)
end
end
end
return objMap
end
------------------------------------------------ GameMain.lua -----------------------------------------------------
packMap = require"GameMap"
print("----------------------------------Game Main-----------------------------------")
map = packMap.newMonsterMap("无魇洞",009)
map:buildMonster("哥斯拉",1,1)
map:buildMonster("小强",2,2)
map:buildMonster("史锐克",3,3)
map:showMap()
map:deleteMonsterMap()
map:showMap()