背包格子的物品交换加移动的实现

 

背景嘛~ QQ群有人提起,自己又刚好需要一个,于是写下了这篇.

--main.lua

require "MAIN_BOX"
--最好把背包格子写成类

----------------------------
--MAIN_BOX.lua
box={}
--初始化格子的数据 总共6*4格
for n=1,6 do
   for i=1,4 do
    box[n][m]={
    id=0             --物品id
    boxline=70,      --我用的是边长为70xp的正方形格子
    light=false      --高亮边框
  end
end

-- boxin是一个放入的函数
function boxin(id)

local full=true
   for n=1,6 do
      for i=1,4 do
         if(box[n][m].id==0)then
           box[n][m].id=id
           full=false
         end
      end
   end
if(full)then
--满了给出的代码
end

end
--放入物品
boxin(1)
boxin(2)

 


然后问题就是QQ群有人问:"怎么实现交换物品啊?"
首先写个物品的"操纵杆",什么意思?
就是光标(或鼠标)选择物品时 记录选择的物品数据的那个东西.

ub={}--物品的"操纵杆"usebox

if(首先要光标确定,或鼠标点击后是否在包裹区域内)
  and(这里检测光标的位置,或判断鼠标在包裹区域内的位置)then

local x,y = 这里返回光标取整后的位置,或鼠标取整后的位置
ub.out=box[x],box[x],box[x][y].id --电脑知道你选的什么了
box[x][y].light=true     --选定的物品高亮

--[[
如果是鼠标操作则可以加上个缓存
用来在鼠标位置显示正在移动的物品
并且可以让被移动的物品图片隐藏显示]]


接下来就是放置或交换物品了
在光标在新位置确定时,或鼠标在新位置松开左键时
即可以调用确定位置的函数
*注意 要加上是否和原来位置相同的判断

 

 

--光标确定的瞬间,或鼠标松开左键的瞬间 实现物品交换或放置
if(......)then
-- newX,newY表示新位置
  ub.ID=newX,newY,box[newX][newY].id --拿到物品的ID
  box[newX][newY].id=ub.id  --新旧交替
  box[ub.x][ub.y].id=ub.ID  --如果新的是空的 那么相当于移动位置
  ub.x,ub.y,ub.id=newX,newY,ub.ID --选择的格子发生变化
--还有一些光标位置的改变啊
--高亮边框什么的东东我就不写了
...
...
...

end

嗯 就是这样
感觉讲这么多很废话,不过鉴于自己打字不累 心情好就算了~

反正硬是不懂或者有什么 简-单-的-奇思妙想不会写代码再来@我吧.

 

posted @ 2013-02-02 19:13  朱大仙  阅读(710)  评论(3编辑  收藏  举报