下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、首先自我介绍下,如果您对我不感兴趣,请直接跳过这段。我的真名叫李志刚,河南科 技大学计算机05级,平时就喜欢写程序。大三上学完了。#,想找点东西练手,就写了这个 程序,这是我第一次写超过了 2K行的程序。如果您是个程序老手,那么,没必要在这听我 罗嗦,我想的很简单,对您没什么参考价值。但我相信,还是有很多和我一样的学生朋友。 我想,全国的二流大学的计算机专业的情况应该是一样的(我真不想再多说,这些抱怨话在 大一,大二时应该都讲完了,再说下去就没意思了,走好以后的路才重要),因为我也是这 样学校中的一员,我就从没指望靠学校能找到工作。我只有靠自己的实力了,我没得选。 想和我做朋友,请加我 QQ
2、437004168好了,不罗嗦了,我把我的设计原理尽量讲清: 首先,俄罗斯方块游戏中的基础是Block(方块),而Block(方块)又是由Brick(砖块)构成, 所以,我在程序中就设计了这两个类:Class Block和Class Brick。先说说 Class Brick :private class Brick方块的基础:砖块.设砖块都为正方形static private int side;砖块的边长private int x; /砖块的X坐标private int y; /砖块的Y坐标private bool filled; 砖块是否被填满再来看Class Block:以下面的形状为例
3、:/方块Block由一个二维数组4*4来存储形状,方块有极端位置,因为平移,旋转,下移都和这几个极端位 置有关游戏中的基本元素-方块 private class Blockprivate Brick , Shape;/方块是由几个砖块构成的 方块的最左,最右,下,上,都是一个平面内的点 private Point left;/方块的最左边private Point right;/方块的最右边private Point top;/方块的最顶部private Point bottom;/方块的最底部private int type; /方块的形状public Block()新生成一个方块,随机产生
4、形状public bool CanMoveDown() /方块是否能继续下移 public bool CanMoveLeft() /方块能左移动 public bool CanMoveRight() /方块能右移动 public bool CanRotate() 方块能否顺利旋转 public void DrawBlock(Graphics g) /画方块public int GetBrickX(int i, int j)public int GetBrickY(int i, int j) /查看方块中指定坐标的砖块的位置public bool IsFilled(int i, int j)查看
5、方块中指定坐标的砖块是否被填充public void MoveBlock(int KeyCode)移动方块public void MoveToCenterScreen() 把方块平移到屏幕中间,用于居中显示每个方块,都有共同的行为:移动、画方块。关键在移动方块,有左移、右移、下移、上移(旋转方块),而移动方块时,有要考虑这个 方块能否移动,当方块处于边界时不能移,当方块下面有方块了也不能移。所以我就设计了 如public bool CanMoveDown()方法来判断方块能否移动,具体代码看原程序。设计好这两个类后,这个程序也就基本出来了。我把游戏的界面分成20*15的单元,用一个二维数组Ga
6、me20,15存储,当Gamei,j=1,说明这个单元格被一砖块填充。口口口口口口口口口口口口口口在设计好结构后,再来看看程序的流程:在事件Form1_Shown中,添加代码,NewGame()即新建游戏,让上面的单元格都为0,即Gamei,j=0,然后是 timer1.Start();private void Form1_Shown(object sender, EventArgs e)NewGame();下面的代码是最重要的部分:定时器功能,每隔一段时间根据游戏的当前状态对整个屏幕进行重绘private void timer1_Tick(object sender, EventArgs e
7、)如果当前的方块不能再往下移动 if (!CurrentBlock.CanMoveDown() for (int i = 0; i 4; i+)for (int j = 0; j 4; j+)if (CurrentBlock.IsFilled(i, j)GameCurrentBlock.GetBrickX(i, j), CurrentBlock.GetBrickY(i, j)= 1;ClearLine();/消去填满的行下一个方块变为当前活动方块CurrentBlock = NextBlock;CurrentBlock.MoveToCenterScreen();/再新产生一个方块作为下一个方块
8、NextField.Refresh();NextBlock = new Block ();NextBlock.DrawBlock(NextField.CreateGraphics();if (CurrentBlock.CanMoveDown()GameMainField.Refresh();FullGameField();CurrentBlock.DrawBlock(GameMainField.CreateGraphics();CurrentBlock.MoveBlock(40);if (GameIsOver()游戏结束timer1.Stop();FullGameField();MessageBox.Show(Game Over);如果当前活动的方块不能再住下移动if (!CurrentBlock.CanMoveDown(),就让数组 GameCurrentBlock.GetBrickX(i, j), CurrentBlock.GetBrickY(i, j) = 1;同时消去被填满的行,下一个方块变为当前活动方块,再新产生一个方块作为下一个方块 如果当前活动的方块能再住下移动if (CurrentBlock.CanMoveDown(),让当前活动方块下移一 个单元,再重绘游戏界面如果游戏结束if (GameIsOver()即方块到了最顶层,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年教师职称考试(特殊教育)历年参考题库含答案详解
- 2025康复医学科三基考试题库及答案
- 2025年安全生产事故案例分析及事故处理流程培训试卷及答案
- 消防安全工作自查报告
- 2025年安全生产月电气测试试题及答案
- 工业机器人系统操作员(三级)职业鉴定理论考试题及答案(新版)
- 2025年人工智能应用技术考试试卷及答案
- 建设工程施工合同纠纷要素式起诉状模板要素清晰无混淆
- 2026年动物园管理提升
- 2026 年无子女离婚协议书正规模板
- 上海建桥学院简介招生宣传
- 《智慧教育黑板技术规范》
- 《电力建设安全工作规程》-第1部分火力发电厂
- 歌曲《我会等》歌词
- 八年级物理上册期末测试试卷-附带答案
- 小学英语五年级上册Unit 5 Part B Let's talk 教学设计
- 老年痴呆科普课件整理
- 学生校服供应服务实施方案
- GB/T 22900-2022科学技术研究项目评价通则
- 自动控制系统的类型和组成
- GB/T 15171-1994软包装件密封性能试验方法
评论
0/150
提交评论