zoukankan      html  css  js  c++  java
  • love2d制作俄罗斯方块1

    (现在有点时间了,继续进行love2d,先做个俄罗斯方块玩玩,由于我是第一次做俄罗斯

    方块,可能要几天,你若不想等,就自己写一个吧!2013-5-28)

    常见的俄罗斯方块游戏一共有7种方块,每种方块还可以旋转,下图是我绘制的7种方块

    的形状和变化,变化时采取顺时针旋转。(我在linux下先用wps画表格,再导出pdf,

    最后用gimp处理的,不知到是否有更好的工具)

    如上图,我们以向右、向下来设置俄罗斯方块在4×4方块里的坐标,那么第一个方块的坐标即

    {0,0,1,0,0,1,1,1} ,分就可以别表示四个点的坐标。我们再给每种方块标号,这样就可以方便旋

    转了,另外还可以加上颜色。

    那么这七种方块十九个方块的相对坐标为:(方块太多了,点坐标有点乱)

    注意,这里的点是有顺序的第一个为x最小点、第二个为y最大点、第三个随便、第四个为y最大点

    --颜色
    c1={255,0,0}
    c2={0,255,0}
    c3={0,0,255}
    c4={0,255,255}
    c5={255,0,255}
    c6={255,255,0}
    c7={210,180,140}
    c8={0,0,0}
    --方块坐标 颜色、方块下一个形状在els表里的序号
    --两个数字为一个坐标
    --第一个为x最小点、第二个为y最大点、第三个随便、第四个为y最大点
    Els_a1={0,0,0,1,1,0,1,1,c1,1}
    
    Els_b1={0,0,1,0,2,0,3,0,c2,3}
    Els_b2={0,0,0,3,0,1,0,2,c2,2}
    
    Els_c1={0,0,1,1,1,0,2,1,c4,7}
    Els_c2={0,1,0,2,1,0,1,1,c4,6}
    
    Els_d1={0,1,1,0,1,1,2,0,c3,5}
    Els_d2={0,0,1,2,0,1,1,1,c3,4}
    
    Els_e1={0,0,1,1,1,0,2,0,c5,9}
    Els_e2={0,1,1,2,1,1,1,0,c5,10}
    Els_e3={0,1,1,1,1,0,2,1,c5,11}
    Els_e4={0,1,0,2,0,0,1,1,c5,8}
    
    Els_f1={0,0,0,1,1,0,2,0,c7,17}
    Els_f2={0,0,1,2,1,0,1,1,c7,18}
    Els_f3={0,1,2,1,1,1,2,0,c7,19}
    Els_f4={0,0,0,2,0,1,1,2,c7,16}
    
    Els_g1={0,0,2,1,1,0,2,0,c6,13}
    Els_g2={0,2,1,2,1,0,1,1,c6,14}
    Els_g3={0,1,1,1,0,0,2,1,c6,15}
    Els_g4={0,0,0,2,0,1,1,0,c6,10}
    
    --所有的俄罗斯方块表
    els={Els_a1,Els_b1,Els_b2,
        Els_c1,Els_c2,Els_d1,Els_d2,
        Els_e1,Els_e2,Els_e3,Els_e4,
        Els_f1,Els_f2,Els_f3,Els_f4,
        Els_g1,Els_g2,Els_g3,Els_g4}

    那么画一个方块的代码如下:

    --画一个方块t方块表,x、y在屏幕上的位置
    function drawRect(t,x,y)
    --保存以前的颜色
        local r,g,b,a=love.graphics.getColor()
        love.graphics.setColor(unpack(t[9]))
        for i=1,8,2 do
        love.graphics.rectangle( "line", x+t[i]*size, y+t[i+1]*size, size, size )
        end
    --恢复以前的颜色
        love.graphics.setColor(r,g,b,a)
    end

    做一个测试,main.lua如下

    --方块的大小
    size=10 
    --颜色
    c1={255,0,0}
    c2={0,255,0}
    c3={0,0,255}
    c4={0,255,255}
    c5={255,0,255}
    c6={255,255,0}
    c7={210,180,140}
    c8={0,0,0}
    --方块坐标 颜色、方块下一个形状在els表里的序号
    --两个数字为一个坐标
    --第一个为x最小点、第二个为y最大点、第三个随便、第四个为y最大点
    Els_a1={0,0,0,1,1,0,1,1,c1,1}
    
    Els_b1={0,0,1,0,2,0,3,0,c2,3}
    Els_b2={0,0,0,3,0,1,0,2,c2,2}
    
    Els_c1={0,0,1,1,1,0,2,1,c4,7}
    Els_c2={0,1,0,2,1,0,1,1,c4,6}
    
    Els_d1={0,1,1,0,1,1,2,0,c3,5}
    Els_d2={0,0,1,2,0,1,1,1,c3,4}
    
    Els_e1={0,0,1,1,1,0,2,0,c5,9}
    Els_e2={0,1,1,2,1,1,1,0,c5,10}
    Els_e3={0,1,1,1,1,0,2,1,c5,11}
    Els_e4={0,1,0,2,0,0,1,1,c5,8}
    
    Els_f1={0,0,0,1,1,0,2,0,c7,17}
    Els_f2={0,0,1,2,1,0,1,1,c7,18}
    Els_f3={0,1,2,1,1,1,2,0,c7,19}
    Els_f4={0,0,0,2,0,1,1,2,c7,16}
    
    Els_g1={0,0,2,1,1,0,2,0,c6,13}
    Els_g2={0,2,1,2,1,0,1,1,c6,14}
    Els_g3={0,1,1,1,0,0,2,1,c6,15}
    Els_g4={0,0,0,2,0,1,1,0,c6,10}
    
    --所有的俄罗斯方块表
    els={Els_a1,Els_b1,Els_b2,
        Els_c1,Els_c2,Els_d1,Els_d2,
        Els_e1,Els_e2,Els_e3,Els_e4,
        Els_f1,Els_f2,Els_f3,Els_f4,
        Els_g1,Els_g2,Els_g3,Els_g4}
    
    
    --画一个方块t方块表,x、y在屏幕上的位置
    function drawRect(t,x,y)
    --保存以前的颜色
        local r,g,b,a=love.graphics.getColor()
        love.graphics.setColor(unpack(t[9]))
        for i=1,8,2 do
        love.graphics.rectangle( "line", x+t[i]*size, y+t[i+1]*size, size, size )
        end
    --恢复以前的颜色
        love.graphics.setColor(r,g,b,a)
    end
    
    function love.draw()
      drawRect(Els_d1,100,100)
    end

    未完待续!


    作者:半山
    出处:http://www.cnblogs.com/xdao/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    gain 基尼系数
    luogu P5826 【模板】子序列自动机 主席树 vector 二分
    牛客挑战赛39 树与异或 离线 树上莫队 树状数组 约数
    4.22 省选模拟赛 三元组 manacher 回文自动机
    4.22 省选模拟赛 最优价值 网络流 最大权闭合子图
    4.18 省选模拟赛 消息传递 树剖 倍增 线段树维护等比数列
    luogu P4008 [NOI2003]文本编辑器 splay 块状链表
    牛客挑战赛39 密码系统 后缀数组
    luogu P1526 [NOI2003]智破连环阵 搜索+最大匹配+剪枝
    luogu P4095 [HEOI2013]Eden 的新背包问题 多重背包 背包的合并
  • 原文地址:https://www.cnblogs.com/xdao/p/love2d_Tetris_1.html
Copyright © 2011-2022 走看看