• 大小: 12.05MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-07-28
  • 语言: C#
  • 标签: C#  小游戏  

资源简介

C#俄罗斯方块程序设计与简单实现 效果演示:https://www.cnblogs.com/JiYF/p/9632821.html可以到这里查看效果,当然有部分bug还需要解决 相信90后或者80后都玩过这款小游戏,一直想干一票,琢磨一下,但又不太懂,于是网上搜集修改就有了以下效果!bug较多,多多包涵! 1.效果展示 2.实现方法 参考https://blog.csdn.net/qian_f/article/details/19758671 感谢博主分享,我在这里也没修改啥,有时间修复几个bug 2.1对象分析 把每个砖块当成一个对象。每个砖块都有共同的行为,就是可以左移、 右移、下移和变形。既然这是他们共同的行为(方法),那么可以定义一个虚基类Brick,然后在该基类中声明这些行为。当然,砖块在做这些行为前需要知道能不能进行这些行为,比如说到了左边界就不能左移;到了下边界就不能下移;周围空间不够大,就不能变形等等。因此该基类还需要声明一些虚函数:CanTransform() CanLeftMove() CanRightMove() CanDropMove()等。 2.2继承实现 继承定义的基类,每种砖块根据自身的形状具体实现相应函数。据说在标准的俄罗斯方块中,一共有七种形状。本练习项目中定义的方块和变形方式(绕着中心点顺时针旋转,途中颜色较深的点就是中心点)如下: 根据上图就可以知道,表示砖块最好的方法就是用二维数组了。对于砖块而言,这个二维数组就是它的变形范围,数组中的数字为0,代表砖块在该区域中无显示,为1代表有显示。在实现CanTransform() CanLeftMove() CanRightMove() CanDropMove()这四个函数时,要尤其小心,这边是最容易出错的地方。 2.3画布处理 完成砖块下面就要进行画布的处理了。可以想象一下,把画布分成多个方格,也就相当于二维数组了,然后把砖块所对应的二维数组按指定的位置放到代表画布的二维数组中。在显示的时候就可以根据值为1的方格来获取位置并进行绘图了。所以,该项目中定义了一个名为Canvas的类,核心功能是用于获取这个二维数组的值,其中包含根据砖块设置数组的值、行满(一行里所有的值都为1)之后消除、超出高度后返回失败等。 2.4绘图 真正的绘图操作。根据二维数组的值绘制显示,并响应方向键操作。 3.代码实现

资源截图

代码片段和文件信息

///////////////////////////////////////////////////////////
//  Class : Block.cs
//  CLRVersion : 4.0.30319.42000
//  NameSpace : BenNHTetris
//  Created on : 2018/5/31 11:41:27
//  Original author : JIYONGFEI 
//  JiYF笨男孩博客  :   https://www.cnblogs.com/JiYF/
///////////////////////////////////////////////////////////
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;

namespace BenNHTetris
{
    public abstract class Block
    {
        protected int _curChangeTimes;  //变化次数
        public int _needRows;           //行数
        public int _needColumns;        //列数
        public int[] _range;           //变化范围
        public Point _center;           //中心点 相对于必要区域
        public Point _Pos;              //中心点位置相对于画布


        /// 
        /// 能否变形 ,能变形的条件为在方块的变形范围内不能有其它的方块
        /// 

        /// 
        /// 
        /// 
        /// 
        public abstract bool CanChange(int[] arr int rowsint cloumns);

        /// 
        /// 变形
        /// 

        public abstract void Change();

        /// 
        /// 能否左移动
        /// 

        /// 
        /// 
        /// 
        /// 
        public abstract bool CanLeftMove(int[] arrint rowsint columns);

        /// 
        /// 左移
        /// 

        public void LeftMove()
        {
            _Pos.Y -= 1;
        }

        /// 
        /// 能否右移
        /// 

        /// 
        /// 
        /// 
        /// 
        public abstract bool CanRightMove(int[] arr int rows int columns);


        /// 
        /// 右侧移动
        /// 

        public void RightMove()
        {
            _Pos.Y += 1;
        }

        /// 
        /// 能否下移
        /// 

        /// 
        /// 
        /// 
        /// 
        public abstract bool CanDownMove(int[] arr int rows int columns);


        /// 
        /// 下侧移动
        /// 

        public void DownMove()
        {
            _Pos.X += 1;
        }


        /// 
        /// 随机生成一个可以通过变形得到的形状
        /// 

        public void RandomShape()
        {
            Random random = new Random();
            this._curChangeTimes = random.Next(4);
            this.Change();
        }

        /// 
        /// 设置中心点相对于画布的位置
        /// 

        /// 横向位置
        /// 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

    I.A....       350  2018-09-12 09:38  05BenNHTetris\.gitignore

    I.A....         3  2018-09-12 09:38  05BenNHTetris\.svn\entries

    I.A....         3  2018-09-12 09:38  05BenNHTetris\.svn\format

    I.A...R      1098  2018-09-12 09:38  05BenNHTetris\.svn\pristine\02\02e85a64cba779e856a6a378a06b509ded44c966.svn-base

    I.A...R      2076  2018-09-12 09:38  05BenNHTetris\.svn\pristine\0e\0e42c87c47c44e63e3e11e1706ad6e94c545b1ad.svn-base

    I.A...R     12349  2018-09-12 09:38  05BenNHTetris\.svn\pristine\2f\2fe30ae0a086eeeb84f71326f7cf9567578e72c2.svn-base

    I.A...R      5817  2018-09-12 09:38  05BenNHTetris\.svn\pristine\31\31fb76e5d9babe97a11fea041081f96ce426107a.svn-base

    I.A...R      6077  2018-09-12 09:38  05BenNHTetris\.svn\pristine\33\3323eed01c6c487289e0895005be3e47b4ed22b3.svn-base

    I.A...R     14757  2018-09-12 09:38  05BenNHTetris\.svn\pristine\33\336a624c12d5496abc4b0714ea54d240598ef1c2.svn-base

    I.A...R      1002  2018-09-12 09:38  05BenNHTetris\.svn\pristine\36\36a1325bd8f934d1fbe72c15d3d94e204c14ee93.svn-base

    I.A...R      5612  2018-09-12 09:38  05BenNHTetris\.svn\pristine\47\47b15748ecc8e952c5935170090db7c269ce4b4f.svn-base

    I.A...R      2563  2018-09-12 09:38  05BenNHTetris\.svn\pristine\47\47c899ebda9aeb147b63dd73a54a0985310e54a4.svn-base

    I.A...R      1651  2018-09-12 09:38  05BenNHTetris\.svn\pristine\4a\4a43b9681c5ba52e70965f2bd85bf512a153f7f2.svn-base

    I.A...R      1643  2018-09-12 09:38  05BenNHTetris\.svn\pristine\52\52899819fd2ae36ff0622cac845c0d209da4a92b.svn-base

    I.A...R      2658  2018-09-12 09:38  05BenNHTetris\.svn\pristine\53\5351c0828f1c299d0074824ece42efe241936b31.svn-base

    I.A...R       249  2018-09-12 09:38  05BenNHTetris\.svn\pristine\5e\5e1d04de66ffcc5dfd813530ab6992e6daaae417.svn-base

    I.A...R     14323  2018-09-12 09:38  05BenNHTetris\.svn\pristine\63\63bcbc96958904c0d420d9345c937a1151a86474.svn-base

    I.A...R      2054  2018-09-12 09:38  05BenNHTetris\.svn\pristine\66\6607e26735d9bb74994f153cd315327ea053f573.svn-base

    I.A...R     18930  2018-09-12 09:39  05BenNHTetris\.svn\pristine\71\71ff4385ae80f895aa992ae2cada17db4c6c5df0.svn-base

    I.A...R      4229  2018-09-12 09:38  05BenNHTetris\.svn\pristine\87\879225c7e50303da3b30a0ff2b8ef12f25e12453.svn-base

    I.A...R     18352  2018-09-12 09:39  05BenNHTetris\.svn\pristine\8c\8cc49c5e215283c57e3040e100c66e5958c331dd.svn-base

    I.A...R      1671  2018-09-12 09:38  05BenNHTetris\.svn\pristine\90\90a440037834c74a6cd80af76201a3c4309c34e1.svn-base

    I.A...R      1364  2018-09-12 09:38  05BenNHTetris\.svn\pristine\a5\a54911d99af1525f608f2045952acbac3c06c8ee.svn-base

    I.A...R      2874  2018-09-12 09:38  05BenNHTetris\.svn\pristine\ad\adf81728a6c9ada869a110f07d3642d0dfd6700a.svn-base

    I.A...R      3581  2018-09-12 09:38  05BenNHTetris\.svn\pristine\b3\b3deee6571969175a95ff74054d0cb6205e88763.svn-base

    I.A...R     12038  2018-09-12 09:38  05BenNHTetris\.svn\pristine\b4\b499c73375c0b5f54607dd4e71f20dbfb0e529e1.svn-base

    I.A...R       494  2018-09-12 09:38  05BenNHTetris\.svn\pristine\b9\b93e4ea5ba7d3013821ada3b476e35021b8cffc6.svn-base

    I.A...R       350  2018-09-12 09:38  05BenNHTetris\.svn\pristine\c7\c706037b17b9d02fbdb637d970f16f96aa175f4e.svn-base

    I.A...R     12346  2018-09-12 09:38  05BenNHTetris\.svn\pristine\c9\c99c0a8818c75c63a19b98e0a0c895d5b391b601.svn-base

    I.A...R   6222450  2018-09-12 09:39  05BenNHTetris\.svn\pristine\c9\c9f000d08b76a20078a8c0cdcdf4582aab19cf23.svn-base

............此处省略101个文件信息

评论

共有 条评论