c#经典俄罗斯方块 vs2012开发

把网上两个开源的俄罗斯方块,整合到一起了,开发环境vs2012+.net 4.0,有问题、建议可以加群沟通哦
复古的 c#写的一个俄罗斯方块小游戏,友好的人机交互,具体功能如下:
1.游戏分七个关卡,通关后还有通关加分。
2.有卡通背景图。
3.有背景音乐和音效。
4.有得分排行榜。
5.能手动更换游戏背景图和背景音乐
6.能自定义游戏控制键。 贴出一段核心代码,如何消行的,本个俄罗斯方块的核心就是 对于 &|>>^4种位运算符的运用,也是我整合这两个俄罗斯方块 的亮点,欢迎大家提出改进意见
/// <summary>
/// 查找已被填满的行
/// </summary>
/// <returns></returns>
public List<int> FindFullLines()
{ //清空原暂存表
fullLines.Clear();
keepLines.Clear();
List<Position> reDrawPosList = new List<Position>();
//从最底行开始检查是否有消除行
for (int y = this.YBlocks - ; y >= && arrBitBlock[y] != bitEmpty; )
{
if (arrBitBlock[y] == bitFull)
{
for (int x = ; x < xBlocks; x++) //消除该行的block
ArrayBlock[x, y] = null;
SquareBlock[] arr = null;
//将该行之上的block下移,如果到顶则不执行
for (int i = y; i - >= ; i--)
{
//记录最高的 图形
arr = new SquareBlock[];
for (int x = ; x < xBlocks; x++)
{ if ((arrBitBlock[i - ] & ( << x)) != ) //如果上方有block {
this.ArrayBlock[x, i] = this.ArrayBlock[x, i - ] == null ? null : this.ArrayBlock[x, i - ].Clone() as SquareBlock; ArrayBlock[x, i - ] = null;
reDrawPosList.Add(new Position(x, i)); //ArrayBlock[x, i] = ArrayBlock[x, i - 1].Clone() as SquareBlock;
}
}
arrBitBlock[i] = arrBitBlock[i - ];//转移监控位
} destroyLines++;
fullLines.Add(y - fullLines.Count()); }
else
{
keepLines.Add(y - fullLines.Count());
y--;//当消除一行后指针不下移,当没有消除的时候指针才下移 }
MinY = y - fullLines.Count();
}
return fullLines;
}
参考: http://download.csdn.net/detail/free722/1883329
参考:http://www.cnblogs.com/tuyile006/archive/2007/05/16/748256.html
c#经典俄罗斯方块 vs2012开发的更多相关文章
- 趣味python编程之经典俄罗斯方块
国庆期间闲不住,用python把经典俄罗斯方块实现了一遍,找到了些儿时的乐趣.因此突发奇想,打算用python写点经典又确实有趣的小程序形成系列.正统编程之余也给自己找点儿乐趣,换个角度写程序. 原计 ...
- VS2012开发工具BUG
发现VS2012开发工具 新建立项目名称长度限制的一个bug, 向导方式名称长度限制56个,但建立好的项目名称长度是可以改的很长很长. 也有想是不是生成程序集的名称会有限制,同样这里生成程序集名称,及 ...
- VS2012 开发SharePoint 2013 声明式workflow action(activity)之 HelloWorld
本文讲述VS2012 开发SharePoint 2013 声明式workflow action 之 HelloWorld. 使用VS2012开发客户化的workflow action是SharePoi ...
- 使用VS2012 开发SharePoint 2013 声明式的action(activity) 综合实例
本文讲述使用VS2012 开发SharePoint 2013 声明式的action 综合实例. 需求同: http://blog.csdn.net/abrahamcheng/article/detai ...
- 10款 Mac 经典原型设计开发软件推荐
在Mac上有大量强大的开发和设计工具,今天和大家推荐10款Mac上的经典原型设计开发工具,原型设计工具是开发者必备的一款工具,无论是网站开发还是移动APP开发,都需要在前期进行严格细致的原型设计,才能 ...
- 使用VS2012开发基于Office 2013的AddIn程序
默认VS2012开发的Office Add是基于2010的,如下所示: 如果你机器上安装的Office版本是2013,那么使用VS2012创建的工程是无法运行的,弹出如下的错误: 那么此时怎么办呢?将 ...
- 使用Vs2012开发Metro时在另一台win8平板上调试的步骤
需求:开发一个metro应用,因为要给平面设计师参谋, 需要将软件安装在win8平板上. 环境:开发机是win8, win8平板是win8.1rtm , 是用老的win7平板改装的. 步骤: 1:拷 ...
- 【经典】Linux开发人员必看资料+工具
Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核.Linux可安装在各种计算机硬件设备中,比如手机.平板电脑.路由器.视频游戏控制台.台 ...
- 初学Qt——vs2012开发环境下的窗体跳转
最近接了份外快,要求使用vs+qt开发一个简单的数据管理系统.qt开发使用的语言是c++,然而c++只是大一第二学期有教过而已,基本也差不多忘光了,废话不多说,讲下今天遇到的问题吧 如标题所说,窗体跳 ...
随机推荐
- c signal
信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念.Linux对信号机制的大致实现方法.如何使用信号,以及有关信号的几个系统调用. 信号机制是进程之间相互传递消息的一种方法,信号全 ...
- Linux环境下配置eclipse,以及创建maven工程
一:maven的安装 1.安装配置maven环境变量 2.验证 二:eclipse的安装 3.解压配置eclipse 4.启动eclipse,必须在虚拟机的eclipse下启动 5.结果 三:修改配置 ...
- TCP粘包
一.通信协议TCP/UDP: TCP(transport control protocol,传输控制协议)是面向连接的,面向流的,提供高可靠性服务.客户端和服务器端都要有一一成对的socket, 因此 ...
- struts json登录
1.struts.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts P ...
- MyBatis3资料网址
官网: http://mybatis.github.io/mybatis-3/zh/index.html 资料: http://www.open-open.com/doc/list/112?o=d 整 ...
- Wordpress页面判断
is_single() 判断是否是文章页面 is_single('2')/is_single(2)判断是否是具体文章(id=2)的页面 is_single('')判断是否是具体文章(标题为Beef S ...
- 毕老师的Editplus
简介 EditPlus是一款由韩国 Sangil Kim (ES-Computing)出品的小巧但是功能强大的可处理文本.HTML和程序语言的Windows编辑器,你甚至可以通过设置用户工具将其作为C ...
- 取消table中tr td的边距
<table border="0" cellspacing="0" cellpadding="0">
- imx6 uboot lcd
本文记录imx6 uboot中关于lcd初始化的过程. uboot中相关的文件: cpu/arm_cortexa8/start.S lib_arm/board.c board/freescale/mx ...
- ASIHTTPRequest实现https双向认证请求
什么是双向认证呢?简而言之,就是服务器端对请求它的客户端要进行身份验证,客户端对自己所请求的服务器也会做身份验证.服务端一旦验证到请求自己的客户端为不可信任的,服务端就拒绝继续通信.客户端如果发现服务 ...