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

 

背景嘛~ 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

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

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

 

转载于:https://www.cnblogs.com/makegame/archive/2013/02/02/2890292.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值