• C#俄罗斯方块实现思路及源码


    需求分析

    俄罗斯方块游戏产生多种形状的方块。这些方块通过方向键的控制产生旋转,左右移动和加速前进,方块自动往下掉直到遇到下面已经有方块挡住停下来。如果一行完全排列满,消掉,如果排列到了顶部,游戏失败。

    核心思路

    • 把所有的方块看成一个4*4的二维数组,有“砖”的地方表示为1,没有“砖”的地方表示为0;背景看成是14*20的二维数组。
    • 游戏流程:随机从方块的4个4*4的矩阵中挑选出来一个,并且随机的挑选一个他的初始化状态(对于状态变化,我们同样可以把他们表示在一个4*4的矩阵中)。然后这个被挑选的矩阵,在一个14*20的矩阵中不断的按照一种速度进行往下运动。同时可以使用方向键使得它可以左右运动,并循环的变化他的状态。如果这个矩阵在运动的方向上遇到了数值为1的时候则停止运动,在左右运动上表现为不能移动,在往下运动的时候则表现为这个方块运动的结束。把这个矩阵的数值复制到背景矩阵中去。这时检查背景矩阵,如果背景矩阵中有一个行全部为1,那么在y轴上比该行小的所有行向下移动一行,用户得分增加100,判断得分是否超过游戏胜利临界值。检查所有的行,并且做同样动作。检查完成后,进入下个方块的随机挑选,下落。当某个方块下落完成的时候。他的y坐标在背景中为0的时候。游戏结束。作为游戏的界面,我们需要在游戏的状态发生改变的时候,把背景矩阵和运动矩阵都绘制出来。数值为0的地方不绘图,数值为1的地方绘制图片。

    实现细节

    • form响应键盘事件需要先将KeyPreview属性设为true
    • 注意一局游戏结束后要将相应的变量清零或重新赋值

    源码:https://github.com/yangj96/MyTetris

  • 相关阅读:
    开机提示grub可咋办啊
    Powershell学习之道-文件夹共享及磁盘映射
    linux查看python安装路径,版本号
    WP_Image_Editor_Imagick 漏洞临时解决方法
    在生产环境使用Docker部署应用
    PPTP服务器配置选项详解
    【Linux常见问题】Centos7的网络配置问题
    【大数据技术】HBase与Solr系统架构设计
    【大数据技术】操作系统和Hadoop版本选择
    【大数据技术】Sqoop
  • 原文地址:https://www.cnblogs.com/jenayfighting/p/5559898.html
Copyright © 2020-2023  润新知