• 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

  • 相关阅读:
    memmove、memccpy和memcpy
    NSLocalizedString不起作用
    sign starfieldtech
    微软推荐的Get a code signing certificate流程和链接
    Driver Signing changes in Windows 10
    delphi 打开文件夹并定位到一个文件(关键是/select参数)
    key转成pvf
    nginx+apache+mysql+php+memcache+squid搭建集群web环境
    dddd
    Delphi系统变量:IsMultiThread对MM的影响
  • 原文地址:https://www.cnblogs.com/jenayfighting/p/5559898.html
Copyright © 2020-2023  润新知