# BenNHTetris **Repository Path**: JiYF/BenNHTetris ## Basic Information - **Project Name**: BenNHTetris - **Description**: 本项目是用C#语言开发实现的一个简单俄罗斯方块程序 - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: https://www.cnblogs.com/JiYF/p/9632821.html - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 2 - **Created**: 2018-07-09 - **Last Updated**: 2022-12-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # BenNHTetris #### 项目介绍 本项目是用C#语言开发实现的一个简单俄罗斯方块程序 C#俄罗斯方块程序设计与简单实现 相信90后或者80后都玩过这款小游戏,一直想干一票,琢磨一下,但又不太懂,于是网上搜集修改就有了以下效果!bug较多,多多包涵! 1.效果展示 ![输入图片说明](https://images2018.cnblogs.com/blog/1070330/201809/1070330-20180912090525347-11525619.gif "在这里输入图片标题") ![输入图片说明](https://images.gitee.com/uploads/images/2018/0912/092507_e34b578b_733619.png "clipboard.png") ![输入图片说明](https://images.gitee.com/uploads/images/2018/0912/092521_27976e79_733619.png "clipboard2.png") ![输入图片说明](https://images.gitee.com/uploads/images/2018/0912/092532_78bb717f_733619.png "clipboard3.png") 2.实现方法 2.1对象分析 把每个砖块当成一个对象。每个砖块都有共同的行为,就是可以左移、 右移、下移和变形。既然这是他们共同的行为(方法),那么可以定义一个虚基类Brick,然后在该基类中声明这些行为。当然,砖块在做这些行为前需要知道能不能进行这些行为,比如说到了左边界就不能左移;到了下边界就不能下移;周围空间不够大,就不能变形等等。因此该基类还需要声明一些虚函数:CanTransform() CanLeftMove() CanRightMove() CanDropMove()等。 2.2继承实现 继承定义的基类,每种砖块根据自身的形状具体实现相应函数。据说在标准的俄罗斯方块中,一共有七种形状。本练习项目中定义的方块和变形方式(绕着中心点顺时针旋转,途中颜色较深的点就是中心点)如下: ![输入图片说明](https://images.gitee.com/uploads/images/2018/0912/092625_8662c3fc_733619.png "223183837109.png") #### 码云特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 5. 码云官方提供的使用手册 [http://git.mydoc.io/](http://git.mydoc.io/) 6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)