windows phone7 项目一俄罗斯方块源码 及说明

简介:

   俄罗斯方块是一种曾经风靡全球的项目,可谓老少皆宜。一年前的今天,闲来无事,故作此项目。  

  依照面向对象的我们首先要看做这个项目需要哪些的类。

  1. 首先,所有形状的砖块继承一个基砖块的类。他有哪些 方法和属性。  有这几个属性,一个是Color ,记录砖块的颜色。一个是maxIndex,他这个画布下的砖块的最大的索引。

 一个是NextIndex 就是下一个砖块行数的索引。

    有那几个方法啊。 方块是不是要进行变形啊  因此  需要GetRotate()

方法,  获取下一个砖块的型号的方法,需要 下一个GetIndex()方法.

     2.然后,  使T字形,天字形,z字形继承与基砖块的方法。  

     3. 然后, 我们需要UIControl类将这些类的 有机组合起来, 

       我们再看看相应的类图

     

那是怎么用什么的东西代表那个位置有砖块,我们用0代表无砖块,用1代表代表有砖块。 比如 **                           0,0,0,0

                                                                                                                      ** 用所规定的源代码是0,1,1,0

                                                                                                                                                    0,1,1,0

                                                                                                                                                    0,0,0,0

  那怎么来删除 相应的砖块。我们用了一个RemoveRow 的方法、 这个 来判断这行是否的全部是1,是1的全部消去。

private void RemoveRow()
{
int removeRowCount = 0;
for (int y = 0; y < _rows; y++)
{
bool isLine = true;

for (int x = 0; x < _coloumns; x++)
{
if (Container[y, x].Color == null)
{
isLine = false;
break;
}
}

if (isLine)
{
removeRowCount++;
for (int x = 0; x < _coloumns; x++)
{
Container[y, x].Color = null;
}

for (int i = y; i > 0; i--)
{
for (int x = 0; x < _coloumns; x++)
{
Container[i, x].Color = Container[i - 1, x].Color;
}
}
}
}

if (removeRowCount > 0)
{
Score += 10*(int) Math.Pow(2, removeRowCount);
}


RemoveRowCount += removeRowCount;

Level = (int) Math.Sqrt(RemoveRowCount/5);

_timer.Interval =
TimeSpan.FromMilliseconds(_InitSpeed - _LevelSpeed*Level > _LevelSpeed
? _InitSpeed - _LevelSpeed*Level
: _LevelSpeed);
}

那怎么移动砖块。我们分别有左移(MoveToLeft),右移(MoveToRight), 下移(MoveToDown) 方法, 我们  无非是利用移动相应的坐标。在进行填充。

public void MoveToLeft()
{
if (GameStatus != GameStatus.Play)
{
return;
}
if (!IsBoundary(CurrentPieces.Matrix, -1, 0))
{
RemovePiece();
AddPiece(-1, 0);
}
}

public void MoveToRight()
{
if (GameStatus != GameStatus.Play)
{
return;
}

if (!IsBoundary(CurrentPieces.Matrix, 1, 0))
{
RemovePiece();
AddPiece(1, 0);
}
}

public void MoveToDown()
{
if (GameStatus != GameStatus.Play)
{
return;
}
if (!IsBoundary(CurrentPieces.Matrix, 0, 1))
{
RemovePiece();
AddPiece(0, 1);
}
else
{
RemoveRow();
CreatePiece();
Score++;
}
}

怎么变形啊,这次又一个GetRotate方法,每个形状有不同的枚举

     这样子俄罗斯方块就写完了

     开源地址 http://www.51aspx.com/code/Tetris7

目录
相关文章
|
2月前
|
开发工具 Android开发 git
Windows下载android2.2完整源码(转)
Windows下载android2.2完整源码(转)
43 3
|
2月前
|
Java 关系型数据库 MySQL
Windows用Tomcat发布Java项目
对于云服务器,程序员一般不会陌生,如果项目需要发布到现网,那么服务器是必不可缺的一项硬性条件,那么如何在云服务器上部署一个项目,需要做哪些配置准备,下面就由本文档为大家讲解,本篇以Tomcat服务器发布J2EE项目为例。
67 0
Windows用Tomcat发布Java项目
|
15天前
|
Windows
【Windows驱动开发】注册表的基本操作(创建、打开、修改、读取、枚举)(附源码)
【Windows驱动开发】注册表的基本操作(创建、打开、修改、读取、枚举)(附源码)
|
2月前
|
前端开发 Java 应用服务中间件
在虚拟机的Windows操作系统中:通过Jar方式若依项目,以及在外部的访问!
在虚拟机的Windows操作系统中:通过Jar方式若依项目,以及在外部的访问!
|
2月前
|
人工智能 安全 机器人
AI电销机器人系统源码部署:freeswitch安装Windows
在Windows上安装FreeSWITCH:访问官网下载安装程序,运行并按提示安装;选择安装路径和组件;等待安装完成;配置FreeSWITCH,修改设置;启动服务;测试其功能;如遇问题,参考官方文档或进行调试故障排除。记得定期更新维护以保证稳定安全。
|
2月前
|
SQL 关系型数据库 MySQL
Trinitycore学习之windows上用cmake生成vs项目并尝试在windows上启动服务
Trinitycore学习之windows上用cmake生成vs项目并尝试在windows上启动服务
81 0
|
2月前
|
前端开发 JavaScript iOS开发
开源Windows12网页版HTML源码
开源Windows12网页版HTML源码,无需安装就能用的Win12网页版来了Windows12概念版(PoweredbyPowerPoint)后深受启发,于是通过使用HTML、CSS、js等技术做了这样一个模拟板的Windows12系统,并已发布至github进行开源。
13 0
开源Windows12网页版HTML源码
|
2月前
|
搜索推荐
windows11 关闭推荐的项目
windows11 关闭推荐的项目
36 3
|
2月前
|
安全 网络安全 Apache
Windows下Apache部署多个php项目
在 Windows 系统下,使用 Apache 服务器发布多个 PHP 项目是一项常见的任务。本文将介绍如何在 Windows 操作系统下使用 Apache 发布多个 PHP 项目。在 Windows 操作系统下使用 Apache 发布多个 PHP 项目可能有一些挑战,但是只要您按照本文的步骤进行操作,您就可以成功地完成这项任务。希望本文能够对您有所帮助。
81 0