欢迎来到天天文库
浏览记录
ID:13938774
大小:3.52 MB
页数:33页
时间:2018-07-25
《c#开发俄罗斯方块小游戏(转)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、三天教你做俄罗斯方块小花朵2010-07-12序言大学学C#的时候做了一个俄罗斯方块,发现挺多新手都想牛刀小试一把,我就重写了一遍,并写了这份文档教程,如果你理解快的话,三天就能做出来你的俄罗斯方块了。先看一下我的俄罗斯方块吧,游戏规则估计不用多说了,我的俄罗斯方块的特色是有美女脱衣表演哦,每升一级,美女就脱一件衣服哦!另外,你还可以自己设定各个参数,包括游戏窗口的大小,按键,背景音乐,甚至自定义砖块样式。第一部分:基础知识1.了解认识GDI+GDI+的技术是建立在GDI上的。GDI+提供了一个抽象层,隐藏了不同视频卡之间的
2、区别,这样就可以调用windowsAIP函数完成指定的任务了GDI+由.NET基类集组成,这些基类可用于在屏幕上完成定制绘图,能把合适的指令发送到图形设备的驱动程序上,确保在监视器屏幕上显示正确的输出,这里的输出包括打印到硬拷贝中。表1-1列出了GDI+基类的主要命名空间表1-1命名空间说明System.Drawing包含与一类绘图功能有关的大多数累、结构、枚举、委托System.Drawing.Drawing2D为大多数高级2D和矢量绘图操作提供了支持,包括消除锯齿、几何转换和图形路径System.Drawing.Imag
3、ing帮助处理图像(位图、Gif文件等)的各种类System.Drawing.Printing把打印机或打印预览窗口作为输出设备时使用的类System.Drawing.Design一些预定义的对话框、属性表和其他用户界面元素,与在设计期间扩展用户界面相关System.Drawing.Text与字体和字体系列执行高级操作的类在GDI+中,设备环境(DC)包装在.NET基类System.Drawing.Graphics中。大多数绘图工作都是调用Graphics的实例来完成的。实际上,因为Graphics类负责处理大多数绘图操作,
4、所以GDI+中很少有操作不涉及到Graphics实例。理解如何处理这个对象是理解如何使用GDI+在现实设备上绘图的关键。2.绘制图形下面用一个小示例来说明如何在应用程序的窗口中绘图(文章所有的示例都在VisualStudio2005中建立为C#的Windows应用程序)。启动VS2005,创建一个windows应用程序的项目,语言是C#,名字为Tetris(俄罗斯方块),然后切换到代码视图,在构造函数的最下面追加如下代码:运行程序,我们期待的结果是在窗体上出现一个蓝色的矩形和一个红色的椭圆,但是实际运行结果呢?什么都没有显示
5、,这是什么原因呢?原因就是在构造函数里执行画图代码的时候,窗口还没有显示出来,也就是说,还没有可以提供绘图的地方,所以,我们要看到期待中的蓝色矩形和红色椭圆,就必须在窗口显示出来以后再执行才能看到效果。知道了原因我们也就知道解决方案,回到设计视图,添加Form_Shown事件,通过下面的提示我们知道这个事件发生在窗口第一次显示的时候。然后我们把代码移动到Form_Shown事件中,再次运行一下程序,接下了就是见证奇迹的时刻了。期待中的蓝色矩形和红色椭圆如期出现了,矩形的坐标(0,0),大小(50,50)。椭圆的坐标(0,50
6、),大小(80,50)。需要提醒一下的是如果是椭圆,则是外接矩形的坐标。这里坐标(x,y)表示从窗口的客户区域左上角开始向右的x个像素,向下y个像素——这些是现实出来的图形的左上角的坐标。外面注意到椭圆的顶部和矩形的下边有轻度的重叠,这与代码中给出的坐标有点不同,这是因为windows在重叠的区域放置了巨星和椭圆的线条。在默认情况下,windows视图把图形边框所在的线条放到中心位置——但这并不是总能做到的,因为线条是以像素为单位来绘制的,但每个图形的边框理论上位于两个像素之间。结果1个像素宽的线条就会正好位于图形顶边和左边
7、的立面,而在右边和底边的外面。这样,从严格意义上讲,相邻的边框就会有1个像素的重叠。由于我们制定的线条宽度比较大,因此重叠区域也就比较大了。一般来说,可以设定Pen.Alignment属性来改变默认的操作方式,但这里使用默认的操作就足够了。接下了我们会发现一个问题,如果把这个窗口的绘图部分用别的窗体遮住,或者移动到屏幕的外边或者最小化,再恢复它,会发现绘制好的图形就不见了或者部分不见了。这是怎么回事?这个就要从windows处理屏幕数据的方式来说起了。如果窗口的一部分被隐藏了,windows通常会立刻删除与其中显示的内容相关
8、的所有信息。这是必须的,否则存储屏幕数据的内存量就会是个天文数字。按照1024x768像素,24位彩色模式,屏幕上的每个点(像素)就会占据3个字节(byte),整个屏幕需要2.25MB的显存来存储这些数据。下面考虑一种最糟糕的情况:屏幕上有20个窗口,都是最大化状态,windows就需要4
此文档下载收益归作者所有