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++只是大一第二学期有教过而已,基本也差不多忘光了,废话不多说,讲下今天遇到的问题吧 如标题所说,窗体跳 ...
随机推荐
- duplicate symbol _OBJC_CLASS 错误处理方法
错误: ld: duplicate symbol _OBJC_CLASS_$_************ in **************** 一种可能性是你的项目的不同group里有着相同名称的类 ...
- mssql全文索引
在使用全文索引的时候例如: SELECT [PRID] ,[PRCode] ,[PRDesc] FROM [test1].[dbo].[PerformanceIssue] where contains ...
- Tea---hdu5881(规律)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5881 题意: 现在有一壶水,体积在[L, R]范围内,现有两个空杯子,现想要把这壶水倒入这两个杯子中去 ...
- 错误提示: An App ID with identifier "*****" is not avaliable. Please enter a different string.
百度了很多,但大多的解决办法就是 更改BundleID,的确管用,,但是有的情况下,你需要跟同事合作,公用同一个BundleID, 我是这样处理的:工具栏中打开Window—project删除所有工程 ...
- Selenium2学习-037-WebUI自动化实战实例-IE浏览器显示比例问题:org.openqa.selenium.remote.SessionNotFoundException: Unexpected error launching Internet Explorer. Browser zoom level was set to 94%. It should be set to 100%
好久没有写博文了,今天在给部门新人演示 Selenium WebDriver 启动其支持的各种浏览器时,启动 IE 时总是无法打开对应的百度网址,页面如下所示:
- ubuntu12.04进入单用户模式
更改ubuntu配置文件出错了,只能进入单用户模式改回来. 转载至: http://blog.csdn.net/lfyaa/article/details/9899497 1.重启ubuntu,VMw ...
- imx6 android 进入文件系统闪屏
imx6进入文件系统的时候都会闪屏,应该是framebuffer未初始化,就已经打开了背光.目前解决办法,在kenel阶段关闭背光,显示android的开机动画之后(此时framebuffer已经初始 ...
- http://blog.csdn.net/qiutongyeluo/article/details/52468081
http://blog.csdn.net/qiutongyeluo/article/details/52468081
- shell自动计算脚本
shell自动计算脚本 #!/bin/bash echo $(($)) [root@bogon ~]# sh b.sh 123+123246 let用户声明这个操作是要计算,后者的效率更高 (expr ...
- 使用openvswitch实现跨主机docker容器互联
安装openvswitch的步骤请参考上一篇文章:http://www.cnblogs.com/xkops/p/5568167.html 环境:192.168.3.201 node1192.168.3 ...