最近在开发游戏,用Lua语言。习惯了其它的语言,然后对Lua的一些语法很不习惯。
比如table的元素个数的取值,比switch语句等等。
不过没有办法,还是要运用Lua来写游戏的。看来学C++还真的挺有用的,大学也没算白学啊。回头也得补一下C++才行,还得看cocos2d-x的代码,没办法。啊。
言归正传。
这两天要写个游戏,结果同个名称的游戏,玩法都不一样的。
然后我写的一个算法居然是另外一种玩法的方案,没办法,明天还得继续想解决方法。不过已经有点思路了。特拿出来分享。

原创首发于:
http://www.zzzzy.com/201408063254.html
http://www.oupag.com/bbs/thread-7817-1-1.html

-------自己写的算法开始-------
    --检查横向是否相同的精灵,根据num编码来
    local function checkCols(m_num, m_tag)

        --往左
        local toLeft = m_num % col  --左边余下个数
        for i = 1, toLeft, 1 do
            local toLnum = m_num - i
            local l_star = starObject:objectAtIndex(toLnum)  --取出对象中的精灵     

            if l_star:getTag() == m_tag then
                --clearStars(toRnum, m_tag)
                if isInTable(l_star, deleteStars) == 1 then
                    table.insert(deleteStars, toLnum, l_star)
                end
            else
                break
            end
        end    

        --往右
        local toRight = col - toLeft - 1  --右边余下个数
        for i = 1, toRight, 1 do
            local toRnum = m_num + i
            local r_star = starObject:objectAtIndex(toRnum)  --取出对象中的精灵     

            if r_star:getTag() == m_tag then
                --clearStars(toRnum, m_tag)
                if isInTable(r_star, deleteStars) == 1 then
                    table.insert(deleteStars, toRnum, r_star)
                end
            else
                break
            end
        end    

    end

    --检查纵向是否相同的精灵
    local function checkRows(m_num, m_tag)
        --往下
        local toBottom = math.ceil(m_num / row) - 1  --下边余下个数
        for i = 1, toBottom, 1 do
            local toBnum = m_num - i * col
            local b_star = starObject:objectAtIndex(toBnum)  --取出对象中的精灵     

            if b_star:getTag() == m_tag then
                --clearStars(toBnum, m_tag)
                if deleteStars[toBnum] == nil then
                    table.insert(deleteStars, toBnum, b_star)
                end
            else
                break
            end
        end    

        --往上
        local toTop = row - toBottom - 1 --上边余下个数
        for i = 1, toTop, 1 do
            local toTnum = m_num + i * col
            local t_star = starObject:objectAtIndex(toTnum)  --取出对象中的精灵     

            if t_star:getTag() == m_tag then
                --clearStars(toTnum, m_tag)
                if deleteStars[toTnum] == nil then
                    table.insert(deleteStars, toTnum, t_star)
                end
            else
                break
            end
        end

    end

    function clearStars(m_num, m_tag)
        checkCols(m_num, m_tag)
        checkRows(m_num, m_tag)

    end
-------算法结束-------

基于Lua的清除类游戏算法的更多相关文章

  1. 基于Lua的游戏服务端框架简介

    基于Lua的游戏服务端框架简介 [转]https://gameinstitute.qq.com/community/detail/106396 基于lua的游戏服务端框架简介 1. 引言 笔者目前在参 ...

  2. 对弈类游戏的人工智能(4)--游戏AI的落地

    前言: 对弈类游戏的智能算法, 网上资料颇多, 大同小异. 然而书上得来终觉浅, 绝知此事要躬行. 结合了自己的工程实践, 简单汇总整理下. 一方面是对当年的经典<<PC游戏编程(人机博弈 ...

  3. 24分钟让AI跑起飞车类游戏

    本文由云+社区发表 作者:WeTest小编 WeTest 导读 本文主要介绍如何让AI在24分钟内学会玩飞车类游戏.我们使用Distributed PPO训练AI,在短时间内可以取得不错的训练效果. ...

  4. 为什么MOBA和吃鸡类游戏不推荐用tcp协议 延迟不利于实时游戏

    http://news.gamedog.cn/a/20171221/2287418.html 我们知道,不同类型的游戏因为玩法.竞技程度不一样,采用的同步算法不一样,对网络延迟的要求也不一样.例如,M ...

  5. Minecraft类游戏地形生成机制

    目录 前言 生成地形高度 生成生物群落 模拟雨水侵蚀.生成河流(未完) 生成洞穴.裂谷 生成植被 放置树木(Bezier曲线) 生成建筑 生成发展域(元胞自动机模型) 放置建筑(DFS) 连接道路(A ...

  6. 基于DFA敏感词查询的算法简析

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 项目中需要对敏感词做一个过滤,首先有几个方案可以选择: a.直 ...

  7. UE4开发神秘海域类游戏原型 初阶(二):动画资源的整合

    前一篇已经确定神海类游戏原型的目标,首先要做的就是3C's(Character, Controls, Camera)的开发.   UE4的3C's的程序部分开发主要也就是基于他的GamePlay Fr ...

  8. 对弈类游戏的人工智能(5)--2048游戏AI的解读

    前言: 闲得没事, 网上搜"游戏AI", 看到一篇<<2048游戏的最佳算法是?来看看AI版作者的回答>>的文章. 而这篇文章刚好和之前讲的对弈类游戏AI对 ...

  9. 项目源码--Android答题类游戏源码

    下载源码 技术要点: 1. 精致的答题UI 2. Android的Http通信技术 3. Android数据库QLITE与其他数据存储技术 4. Android在线音乐背景技术 5. Android答 ...

随机推荐

  1. asp.net将本地Excel上传到服务器并把数据导入到数据库

    前台代码: <td class="formLabel"> 批量修改: </td> <td class="formInput"> ...

  2. c 语言结构体struct的三种定义方式 及 typedef

    struct 结构体名{ 成员列表: ..... }结构体变量: 结构体类型变量的定义 结构体类型变量的定义与其它类型的变量的定义是一样的,但由于结构体类型需要针对问题事先自行定义,所以结构体类型变量 ...

  3. 在html使用a标签 直接下载图片 不通过后台实现直接下载

    由于a标签在HTML中链接图片会被识别并打开到网页上 如果想下载这个图片的话 就需要连接到后台读取文件并生成一个头信息下载.不过可以先给a标签加上一个download属性即可直接下载了. <a ...

  4. java数据结构之hash表

    转自:http://www.cnblogs.com/dolphin0520/archive/2012/09/28/2700000.html Hash表也称散列表,也有直接译作哈希表,Hash表是一种特 ...

  5. [WebGL入门]十四,绘制多边形

    注意:文章翻译http://wgld.org/.原作者杉本雅広(doxas),文章中假设有我的额外说明,我会加上[lufy:].另外,鄙人webgl研究还不够深入.一些专业词语,假设翻译有误,欢迎大家 ...

  6. JAVA中toString方法的作用(转)

    因为它是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”. 它通常只是为了方便输出,比如System.out.println(xx),括号里面的“xx”如果不 ...

  7. hibernate相关知识

    1.为什么要用Hibernate JDBC的优点 直接底层操作,提供了很简单.便捷的访问数据库的方法,跨平台性比较强.灵活性比较强,可以写很复杂的SQL语句. JDBC的缺点 因为JAVA是面向对象的 ...

  8. 两款Mac下的视频下载利器

    1 iSkysoft iTube Studio 2.jaksta mac

  9. JDK1.5中线程池,定时器知识

    package cn.it.pool; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executo ...

  10. java反射性能

    项目中用到了java的反射,可以大大减少代码量.但是反射的性能却不容乐观,做了个简单的测试,如下. public void noreflect() { Person p = new Person(); ...