Lua包(代码文件的组织和调用)_类_继承_多态

 

------------------------------------------------ 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()


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值