lua+love2d实现的pc版2048游戏

       前一段时间迷恋玩手游2048,周末无聊,就想着自己实现一个。源代码在“我分享的代码”中。下面是游戏的设计思路。

       在设计的时候将整个程序分为两个部分,游戏模型部分和界面展示交互部分。
       游戏模型部分主要是处理整个游戏的执行逻辑,首先介绍一下2048的游戏规则,根据用户滑动的方向,界面上的所有数字块会向那个方向靠边,并且将相同的数字合并,合并的数字越大,分数越高。例如向上滑动,所有数字块都会向上滑动合并直到不能上移为止。

        根据游戏规则,游戏模型部分做以下处理,用一个table(数组)存储所有数字块,key(下标)作为数字块所在的位置(1-16),value(数组值)作为数字块上记录的值。
        根据滑动的方向,首先需要做一次移动,然后做一次数字块的合并,最后再做一次移动。移动操作是一行一行的向所给方向移动,且移动到无法移动为止。合并从最靠边的倒数第二排向前一排合并,直到离边最远的一排。

21215150_MMGn.jpg
21215150_0L3t.jpg
21215150_a5Is.jpg
21215150_S8T8.jpg


        经过这些步骤,完成用户的一次操作达到的效果。

        如果第一次操作所有数字块均不能够移动并且没有能够合并的块,那么认为用户这次操作是无效的,不产生新的数字块。否则产生一个新的数字块。
        产生新的数字块的方法是:将所有空闲的位置插入一个table中,然后在该table中随机选择一个位置作为新块的位置。然后产生该新块的值,即一个2或者一个4。我设定的产生概率是4:1。
        产生新块后,检查是否所有位置都被占用,如果都被占用则检查向所有方向是否有能够合并的块,如果有,则继续等待用户的下一步操作,否则标记游戏结束。
        计分方式:产生一个新块+1分,合并出一个新块,分数等于原来的分数+新块的值。
展示与交互
        不断重绘数字块所在的table就可以获得需要的展示效果。
        通过鼠标的拖动来确定移动的方向,那么按下时记录一个位置信息,放开时记录一个位置信息,根据两个位置信息确定拖动的方向,调用相应的操作。

可运行的程序可以在百度网盘上下载:http://pan.baidu.com/s/1gdJwDAN

转载于:https://my.oschina.net/u/1451903/blog/224883

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值