最新C#设计报告-俄罗斯方块.doc
《最新C#设计报告-俄罗斯方块.doc》由会员分享,可在线阅读,更多相关《最新C#设计报告-俄罗斯方块.doc(133页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateC#设计报告-俄罗斯方块广东交通职业技术学院项目实训报告书学生姓名 课程名称 C课程设计 题 目 俄罗斯方块 专业班级 指导教师 完成日期 目录一概述21.1背景21.2开发与运行环境.3二需求分析3三系统设计4四详细设计.54.1界面设计.54.2代码设计.7五结束语.25六参考文献.261. 概述1.1 背景俄罗斯方块由莫斯科科学学院程序员Alexei Pajit
2、nov所设计。该游戏最初是作为自我消遣的电脑游戏而被制作出来的。此后,由于政治和经济等多方面的原因,该游戏曾经被多家公司代理过。经过多轮诉讼的争夺后,该游戏的代理权最终还是被任天堂获得。俄罗斯方块对于任天堂来说意义重大,因为将它与GB搭配在一起后,产生了令人意想不到的效果,获得了巨大的成功。而对于中国玩家来说,俄罗斯方块可以说是第一次让国人认识到游戏是一种老少皆宜的娱乐方式,从某种程度上扭转了国人的游戏是小孩子的东西或游戏是毒害儿童的元凶等错误观念。一个最初的版本是Spectrum Holobyte为IBM兼容机开发的游戏。该游戏是一款休闲智力型,与通常的此类游戏相比,这款游戏新增了在模块样式
3、上的多彩性。还抛掉了以前那种枯燥的背景音乐,可以让自己随心所欲的背景音乐。于此同时还可以让自己开动脑筋来设计模块。还可以凭自己的喜好。可以设置画布的大小。1.2 开发与运行环境系统的运行对于运行环境的要求是:l 硬件环境目前,我们所开发的系统主要应用在中小规模的学校内部,因此,一般配置的计算机硬件就可以满足系统需求。考虑到学校规模的扩大和硬件价格的降低,为本系统配置在较优秀的服务器硬件上,可以充分发挥本系统的性能。l 处理器:Intel Pentium 4 3.06 GX 或更高l 内存:256M(推荐)l 硬盘空间:40GBl 显卡:SVGA显示适配器l 软件环境l 操作系统:Windows
4、 2000/XPl 开发软件:Microsoft Visual Studio .NET 2003l 数据库:Microsoft SQL Server 20002. 课程设计的目的和意义俄罗斯方块游戏是一个经典的小游戏,由于它简单有趣,因而得到了广泛的流行,男女老幼都适合。而俄罗斯方块游戏的设计工作复杂且富有挑战性,它包含的内容多,涉及的知识广泛,与图形界面联系较大,包括界面的显示与更新、数据收集、音乐处理等,在设计的过程中,必将运用到各方面的知识,这对于C#设计者而言,是个很好的锻炼机会。2.1实验步骤:1)需求分析:设计一个用户可参与,有背景音乐,可由用户控制任意暂停,可计时,可计分的俄罗斯
5、方块游戏;2) 概要设计:一个游戏运行界面,计分面板,开始按扭,暂停按扭3)详细设计:对整个设计进行总体分析如下: 1定义7种砖块的类型,用两个4*4的二维数组来表示。 2在屏幕上用一个10*20表示游戏区域 3上下左右的出界问题的考虑3砖块的变形问题 4砖块的移动(向左向右向下)问题 5满一行后消掉砖块 6记分问题 7用开始按扭启动游戏 8暂停按扭暂停游戏 9界面的设定 10背景音乐的加入3系统功能设计玩游戏前先要设置参数,键盘的设置比如说:左键,右键,下键,快速向下键。顺时针旋转,逆时针旋转。环境的设置也非常重要,比如:水平格子数,垂直格子数。格子数。前景色等,再者就是砖块的设置,砖块是自
6、己设计的,但是系统也有默认砖块,都是最常用的模块。还可以改变模块的颜色。本系统主要设计以下几种功能:1. 方块下落、变形功能在整个俄罗斯方块游戏中,方块的设计是核心。这里设计了一个方块类:Square( ),用来生成方块以及实现块的左移、右移、向下、变形、重画、同步显示、初始化新块等。2自动升级功能当分数累积到一定大小时,系统将自动为玩家提高难度。这里设置了每消除10行方块,就增加一级难度。当难度增加的时候,方块会相应地改变颜色,以作为对玩家的提示。3游戏音乐功能游戏开始音乐就自动播放,游戏暂停与结束时音乐相应消除。总控模块输出模块处理模块输入模块图片另存为控制窗口图片处理屏幕抓图截图打开文件
7、夹添加图1 系统功能模块结构图图3-8 系统功能模块结构图3. 以系统功能设计分析俄罗斯方块游戏根据功能的不同,设置了如下12个类:Square, Command, GameArea, GameSetting, GameOver, Help, ImagePanel, JieMian, MyPanel, MyTimer, PlayMidi, WinListener,每个类的描述如下:1、Square,方块类。这个类中定义了生成方块的方法,用二维数组int pattern,存放7种方块的四种状态。在构造方法中以随机的形式生成方块,同时提供了以下几种方法:reset( ),leftTurn( ),l
8、eftMove( ),rightMove( ),fallDown( ),assertValid(int t,int s,int row,int col),dispBlock(int s)。分别实现方块的重画、翻转、左移、右移、下落、同步显示等功能。2、Command,处理控制类。这是一个实现ActionListener接口的类,主要处理点击按钮事件。类中定义了三个int型变量:button_play,button_quit,button_pause,和一个boolean型的变量:pause_resume,并赋值。在GameArea类中通过事件响应,在按钮执行方法中调用其值,使用switch语句
9、,根据不同按钮不同的值,来响应不同的事件。3、GameArea,游戏界面类。GameArea继承了JFrame,是俄罗斯方块的主要游戏界面。这个类定义了GameSetting类的gameScr对象和ImagePanel类的imagepanel对象作为游戏区域面板和控制区域面板。在游戏区域,主要是根据相应格子的设置标志来显示相应的图形图片,这样就实现了俄罗斯方块的实时显示。4、GameSetting, 游戏画布类。这个类生成的对象将作为游戏界面的方块下落区域,画布的设置为15行10列,当中的方格边长为30,类中还定义了一个二维数组int scrArr作为屏幕数组,表示每一个方格。游戏区域中每一个
10、方格是否存在游戏方块是由该方格的值来决定的,如果该方格的值为1,则表示该方格中存在游戏方块;如果该方格中的值为0,则表示该方格中不存在游戏方块,因此二维数组用于记录游戏区域中每个小方格的值。此外,类中还定义了画方块的方法,根据不同的难度画出不同颜色的方块。单击Play按钮时,系统调用initScr( )方法,初始化屏幕,将屏幕数组清零。当满足满行删除的条件时,系统调用deleteFullLine( )方法,进行删行加分,而且每删除十行,难度自动增加一级,方块颜色改变,并在难度显示框中相应显示。5、GameOver,游戏结束弹出提示框类。当游戏结束时,系统弹出提示,包括玩家分数以及询问玩家要继续
11、游戏还是退出。6、Help,帮助类。在游戏界面,按F1键,弹出提示窗口,获取帮助。7、ImagePanel,背景图片类。这个类继承了JPanel类,用来作为游戏界面中控制区域的容器,并添加图片。8、JieMian,主界面类。这个类继承了JPanel类,作为游戏的第一个界面,也是难度选择界面。定义了9个单选按钮,当玩家未选任何难度就按Enter时,系统会弹出一个提示框,提示玩家先选难度再进入。9、MyPanel,重写MyPanel类,使Panel的四周留空间。10、MyTimer,定时线程类。类中定义了一个run()方法,用sleep()函数实现方块下落的快慢,即调节难度。11、PlayMidi
12、,添加音乐类。在游戏过程中添加背景音乐。12、WinListener,关闭窗口类。4. 4.1 界面设计1、图片浏览器主界面如下图2: 图2. 软件主界面图2、参数设置如下图3: 图3 设置图3、图片调整界如图4:4.2 代码设计1.输入模块:1.1 从文件夹中打开需要浏览的图片:openImage() private void openImage()/ 如果当前正显示幻灯片,先关闭定时器2this.timer1.Enabled = false;if(this.openFileDialog1.ShowDialog() = DialogResult.OK) if(this.pictureBox1
13、 .Image !=null)this.pictureBox1 .Image.Dispose ();pictureBox1.Image = Image.FromFile(this.openFileDialog1.FileName);/设置全局变量entireFilePath,用于保存文件名(在上一张、下一张、幻灯片显示时记录当前/图片的位置)this.entireFilePath = this.openFileDialog1.FileName.ToString();this.statusBarPanel2.Text = 图片大小:+this.pictureBox1.Image.Size.Wid
14、th.ToString();this.statusBarPanel2.Text += * + this.pictureBox1.Image.Size.Height.ToString();/得到图片所在文件夹的路径string filePath = ;filePath = openFileDialog1.FileName.Substring(0,openFileDialog1.FileName.LastIndexOf();/打开目录,并将目录中所有.jpg.bmp.gif类型的图片放入FileInDir集合System.IO.DirectoryInfo dir = new System.IO.D
15、irectoryInfo(filePath);System.IO.FileInfo fileInfo = dir.GetFiles();FileInDir.Clear();foreach(FileInfo fi in fileInfo)if(fi.Extension = .JPG | fi.Extension = .jpg | fi.Extension = .jpeg | fi.Extension = .tif | fi.Extension = .png | fi.Extension = .bmp | fi.Extension = .BMP | fi.Extension = .gif | fi
16、.Extension = .GIF )FileInDir.Add(fi.FullName.ToString();/得到当前打开图片在FileInDir中的索引(index为定义的全局变量)for(index = 0;index 1)/确定图片浏览的上一张和下一张按钮的可用性this.toolBarButton7.Enabled = true;if(index = 0)/当索引值为第一章时上一张按钮不可用this.toolBarButton5.Enabled = false;this.toolBarButton6.Enabled = true;else if(index = FileInDir.
17、Count-1)this.toolBarButton6.Enabled = false;this.toolBarButton5.Enabled = true;elsethis.toolBarButton5.Enabled = true;this.toolBarButton6.Enabled = true;this.statusBarPanel1.Text = this.openFileDialog1.FileName.ToString();/在状态栏显示浏览图片的路径FileInfo info =new FileInfo (this.openFileDialog1 .FileName .ToS
18、tring ();this.statusBarPanel3 .Text =文件大小:+ info.Length.ToString () +B;/显示图片文件的大小从文件夹中拖进图片框:这里用到两个事件:_DragDrop和_DragEnter:private void pictureBox1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)/图片拖进图片框if(e.Data.GetDataPresent(DataFormats.FileDrop) e.Effect = DragDropEffects.Link; els
19、e e.Effect = DragDropEffects.None;private void pictureBox1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e) / 拖进后释放鼠标if (e.Data.GetDataPresent(DataFormats.FileDrop) string files = (string)e.Data.GetData(DataFormats.FileDrop); for ( int i = 0; i files.Length ;i+) test(filesi); 抓屏和截图:这里的代
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 C# 设计 报告 俄罗斯方块
限制150内