C专业课程设计俄罗斯方块.doc
《C专业课程设计俄罗斯方块.doc》由会员分享,可在线阅读,更多相关《C专业课程设计俄罗斯方块.doc(30页珍藏版)》请在咨信网上搜索。
1、C#程序设计实训汇报题目:俄罗斯方块 专 业_计算机科学和技术 _年级班别_ 计算机09-2班_ 学 号 学生姓名_ _指导老师_ 成 绩 年 1 月 目 录一 系统设计要求31.1 课题分析错误!未定义书签。1.2 设计环境31.3 设计思绪3二 课题总体框架设计32.1程序步骤图42.2类结构图5三 课题实现63.1程序主界面63.2 开始游戏界面63.3 游戏结束界面73.4 暂停游戏界面73.5使用说明界面.83.6 关键程序代码8四 总结214.1设计总结214.2 设计体会22一、系统设计要求1.1 课题分析本游戏系统是利用C#实现, 是制作为我们所熟悉很简单俄罗斯方块游戏,该系统
2、能实现具体功效以下:1) 能简便开始游戏,游戏中方块功效和日常我们所熟悉游戏功效一致,多种块设置也一致,包含方块旋转,加速下降,左右移动,满行消去,满行消去自动加分,和到顶游戏结束等功效;2) 能够经过对话框窗体说明各个功效使用说明,和部分其它功效。3) 界面简练美观,简单易用。跟其它通常游戏相差不大。1.2 设计环境本程序选择Visual Studio 作为试验环境。1.3 设计思绪用面向对象方法分析系统对于俄罗斯方块程序制作,我们能够定义一个或多个类,专门来描述俄罗斯方块,在这个类中,包含和之相关方法、属性和字段,经过封装,实现其业务逻辑。其中,每一个俄罗斯方块全部有相同特征,由4个小正方
3、形组成,有旋转,左右移动,下落动作,整行被填满除去并计算分数而组成行小正方体块。基中块形状类型有7种:田、一、L、倒L、Z、倒Z、上。在窗口中经过调用主窗体Form1当中菜单栏来设置游戏开始、暂停、结束、重新开始和推出程序。还能够经过其菜单中游戏说明选项来查看游戏各个键使用说明,还可调用帮助菜单来查看版权说明。二、课题总体框架设计 2.1、 程序步骤图开始窗口初始化读取游戏开始游戏开启游戏时钟随机形成方块判定是否可移旋转左移右移加速下降暂停结束绘制方块是否越顶是否满行消行结束加分2.2、 类结构图三、课题实现3.1程序主界面3.2 开始游戏界面3.3游戏结束3.4暂停游戏3.5使用说明界面和版
4、权界面3.6关键程序代码1、Form1类1) 结构函数,设定目前运行方块,下一个立即出现方块,方块产生位置,玩家积分,游戏开关等。public partial class Form1 : Form private Block currentBlock; /目前在运行方块private Block nextBlock; /下一个立即出现方块private Point startLocation = new Point(bianjie.SingleSquareSize * 8, 0); /方块产生位置private int score = 0; /玩家积分private bool stillRun
5、ing = false; /游戏运行开关2) 键盘操作:用来选择方块移动方向,是向右移动,向左移动,向下加速,旋转,还是暂停。/*键盘操作*/private void Form1_KeyDown(object sender, KeyEventArgs e) switch (e.KeyCode) case Keys.Right: currentBlock.right() ; break;/向右移动 case Keys.Left: currentBlock.left() ; break; /向左移动 case Keys.Up: currentBlock.Rotate(); break; /旋转 c
6、ase Keys.Down: while (currentBlock.down() ; break; /向下加速 case Keys.Space: /空格:暂停 timer1.Enabled = !timer1.Enabled; if (!timer1.Enabled) showMsg(暂 停); else msg.SendToBack(); break; picBack.Focus(); 3) 时钟触发处理函数,使方块自动向下移动,每1秒使方块向下移动一次 /*游戏时钟*/ private void timer1_Tick(object sender, EventArgs e) if (!s
7、tillRuning) return; /检测是否还能够下移 if (!currentBlock.down() if (currentBlock.Top() = 0) /假如到顶则游戏结束 showMsg(Game Over!); stillRuning = false; timer1.Stop(); return; /不然计算分数并继续 int eraseLines = bianjie.CheckLines(); if (eraseLines 0) score += bianjie.width * eraseLines; t_score.Text = score.ToString(); pi
8、cBack.Invalidate(); Application.DoEvents(); bianjie.Redraw(); /产生下一个block currentBlock = new Block(startLocation, nextBlock.blockType); currentBlock.Draw(bianjie.winHandle); pic_preView.Refresh();nextBlock = new Block(new Point(50, 50), Block.BlockTypes.undefined); nextBlock.Draw(pic_preView.Handle)
9、; currentBlock.down(); 4) 对窗口进行重绘 /*窗口重绘*/ private void Form1_Activated(object sender, EventArgs e) picBack.Invalidate(); Application.DoEvents(); bianjie.Redraw(); 2、SingleBlock类1) 结构单个方块尺寸,颜色,前景色,背景色public SingleBlock(Size initSize,Color initForeColor,Color initBackColor) size = initSize; foreColor
10、 = initForeColor; backColor = initBackColor; 2) 画方块,用GDI+绘画,画出填充正方形 /画方块 public void Draw(System.IntPtr winHandle) Graphics g = Graphics.FromHwnd(winHandle); GraphicsPath gp = new GraphicsPath(); Rectangle rect = new Rectangle(location, size); gp.AddRectangle(rect); Color surroundColor = new Color b
11、ackColor ; PathGradientBrush pgb = new PathGradientBrush(gp); pgb.CenterColor = foreColor; pgb.SurroundColors = surroundColor; g.FillPath(pgb, gp); /擦除方块 public void Erase(System.IntPtr winHandle) Graphics g = Graphics.FromHwnd(winHandle); Rectangle rect = new Rectangle(location,size); g.FillRectang
12、le(new SolidBrush(bianjie.BackColor),rect); 3、Block类1)随机产生方块形状,并设置四个方块颜色public Block(Point thisLocation,BlockTypes bType) /当blockType为undefined时,随机产生方块形状 Random rand=new Random(); if (bType = BlockTypes.undefined) blockType = (BlockTypes)(rand.Next(7) + 1); else blockType = bType; /设置四小方块颜色 int i=(i
13、nt)blockType-1; foreColor = bianjie.BlockForeColori; backColor = bianjie.BlockBackColori; Size SingleSquareS=new Size(SingleSquareSize,SingleSquareSize); SingleSquare1 = new SingleBlock(SingleSquareS, foreColor, backColor); SingleSquare2 = new SingleBlock(SingleSquareS, foreColor, backColor); Single
14、Square3 = new SingleBlock(SingleSquareS, foreColor, backColor); SingleSquare4 = new SingleBlock(SingleSquareS, foreColor, backColor);2)设置小方块位置,组合成指定形状方块 /设置小方块位置,组合成指定形状一个大方块 switch (blockType) case BlockTypes.SingleSquare: /组合成正方形 SingleSquare1.location = new Point(thisLocation.X, thisLocation.Y);
15、SingleSquare2.location = new Point(thisLocation.X + SingleSquareSize, thisLocation.Y); SingleSquare3.location = new Point(thisLocation.X,thisLocation.Y+SingleSquareSize);SingleSquare4.location = new Point(thisLocation.X+SingleSquareSize,thisLocation.Y+SingleSquareSize); break;case BlockTypes.line: /
16、组合成线形 SingleSquare1.location = new Point(thisLocation.X, thisLocation.Y); SingleSquare2.location = new Point(thisLocation.X + SingleSquareSize, thisLocation.Y); SingleSquare3.location = new Point(thisLocation.X + 2 * SingleSquareSize, thisLocation.Y); SingleSquare4.location = new Point(thisLocation.
17、X + 3 * SingleSquareSize, thisLocation.Y); break; case BlockTypes.J: /组合成J形 SingleSquare1.location = new Point(thisLocation.X + SingleSquareSize, thisLocation.Y); SingleSquare2.location = new Point(thisLocation.X + SingleSquareSize, thisLocation.Y + SingleSquareSize); SingleSquare3.location = new Po
18、int(thisLocation.X + SingleSquareSize, thisLocation.Y + 2 * SingleSquareSize); SingleSquare4.location = new Point(thisLocation.X, thisLocation.Y + 2 * SingleSquareSize); break; case BlockTypes.L: /组合成l形 SingleSquare1.location = new Point(thisLocation.X, thisLocation.Y); SingleSquare2.location = new
19、Point(thisLocation.X, thisLocation.Y + SingleSquareSize); SingleSquare3.location = new Point(thisLocation.X, thisLocation.Y + 2 * SingleSquareSize); SingleSquare4.location = new Point(thisLocation.X + SingleSquareSize, thisLocation.Y + 2 * SingleSquareSize); break; case BlockTypes.T: /组合成T形 SingleSq
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 专业课程 设计 俄罗斯方块
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。