![C编程结课设计说明书.doc_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-8/7/8488241a-6d45-4032-be9b-6d9cf5fbdef0/8488241a-6d45-4032-be9b-6d9cf5fbdef01.gif)
![C编程结课设计说明书.doc_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-8/7/8488241a-6d45-4032-be9b-6d9cf5fbdef0/8488241a-6d45-4032-be9b-6d9cf5fbdef02.gif)
![C编程结课设计说明书.doc_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-8/7/8488241a-6d45-4032-be9b-6d9cf5fbdef0/8488241a-6d45-4032-be9b-6d9cf5fbdef03.gif)
![C编程结课设计说明书.doc_第4页](http://file2.renrendoc.com/fileroot_temp3/2021-8/7/8488241a-6d45-4032-be9b-6d9cf5fbdef0/8488241a-6d45-4032-be9b-6d9cf5fbdef04.gif)
![C编程结课设计说明书.doc_第5页](http://file2.renrendoc.com/fileroot_temp3/2021-8/7/8488241a-6d45-4032-be9b-6d9cf5fbdef0/8488241a-6d45-4032-be9b-6d9cf5fbdef05.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、荆楚理工学院结课设计说明书学生姓名:姚元美梁贵波杨爽学号: 10EN1 10248 10238专业:计算机科学与技术班级:计算机08-2任课教师:游明坤1. 游戏编程1.1. 概述1.1.1.完成任务(1) 程序运行界面如图所示 :图 计算机信息查看器主界面1.2. 分析1.2.1.功能分析新局:单击左侧会出现连连看游戏运行界面,进入游戏。提示:用户可以在找不到一样的图案的时候点击提示, 会出现两个可以撤销的类似图案。重排:左边图案会重新编排一次。配置:用户可以对游戏的相关选项进行设置。退出:退出游戏。1.2.2.界面分析运行界面如下:如图所示,程序主体界面可分为三部分: 第一部分是以执行游戏
2、的部分, 第二部分是以游戏设置以及帮助的部分,第三部分就是游戏在运行时所剩时间提示。第一部分含 1 个控件: 11 个列表视图( list view)。第二部分含 8 个控件: 6 个按钮( button)2 个标签( label)。在 2 个label中,2 个用于显示提示, 1 个复选项,分别用于显示相应的“详细信息” 。第三部分含 3 个控件: 1 个 label,1个显示提示,还有一个。界面的详细布局如图所示。1.2.3.程序分析本程序的核心是游戏执行部分,所有的操作都围绕着该数据进行的。游戏分为三关:简单、一般和难。为了用户在规定时间完成一关,设计了提示和重排。其中新局是开始游戏的意
3、思,退出也就意味着结束游戏。1.3. 实现步骤1.3.1.建立工程建立 C# Windows窗体应用程序 Game 项目。1.3.2.界面设计根据图的样式,设计出查看器的窗体布局。1.3.3.主程序功能实现(1) 定义主程序类对象 GameMain 。(2)加载数据。使用 ComputerManager的 Load 方法从文件中加载信息,如果存在文件,则将文件中的计算机对象填充到ListView。 如果不存在,则创建不同类型的计算机,并添加到泛型集合中,填充到ListView中。(3)窗体设计器生成的代码中的数据到Dispose:privatevoidEndGame(),private voi
4、d WinGame()。时间触发privatevoidtimeOutTimer_Tick(object sender, EventArgs e)。(4) 初始化集合泛型数据: private void InitGame()。如果从本地文件加载泛型集合数据失败,则由程序初始化数据,填充到泛型集合。(5) 给下压式按钮添加事件处理。1.4. 核心代码using System;using ;using ;using ;using ;using ;using ;namespace LLKpublic class GameMain : Formprivate IContainer components;
5、private CheckBox AutoClear;private Timer lineTimer;private Button btnReset;private Button btnInfo;private Button btnRePlay;private Label lbP;private Label lbInfoCount;private Label label3;private Button btnExit;private ProgressBar pBar;private Timer timeOutTimer;private Label lbTimeOut;private Pictu
6、reBox pictureBox1;private Label label1;private Label lbCaption;private CheckBox AutoReset;private Button btnAbout;private Button btnConfig;private ScreenDraw SD = null;private Line search_p1 = null;private Line search_p2 = null;private bool isSearch = false;private int PointCount = 0;private int Inf
7、oCount = 5;private const int GameTimeSec = 60;private GameState gs = ;private Map oMap = null;private LineManager LM = null;private ScreenCursor cursor = null;private options = new ();private ScreenObject SO = null;private BombPoint bp1 = new BombPoint();private BombPoint bp2 = new BombPoint();priva
8、te SoundPlayList spl = new SoundPlayList();private string appPath = ;private SoundPlayer spBg;private SoundPlayer spBomb;private SoundPlayer spEarse;private SoundPlayer spRefresh;private SoundPlayer spSelect;private SoundPlayer spHint;private int, L = new int3,3 28, 22, 16, 34, 28, 22, 39, 34, 28;pr
9、ivate Timer SplashTimer;private GameLoading GL = null;private enum GameStateStart,Play,End,Winpublic GameMain(GameLoading gameLoading)InitializeComponent();= gameLoading;protected override void Dispose(bool disposing)if (disposing)if (components != null)();(disposing);#region Windows窗体设计器生成的代码privat
10、e void InitializeComponent()= new Container();= new Button();= new Button();= new CheckBox();= new Timer;= new Button();= new Label();= new Label();= new Label();= new Label();= new Button();= new ProgressBar();= new Label();= new Timer;= new PictureBox();= new Label();= new CheckBox();= new Button(
11、);= new Button();= new Timer;();=(Byte)(192),(Byte)(255),(Byte)(255);= new Point(672, 100);= btnReset;= 1;= 重排;+= new EventHandler;= (Byte)(192),(Byte)(255),(Byte)(255);= new Point(672, 68);= btnInfo;= 2;= 提示;+= new EventHandler;= ;= new Point(672, 136);= AutoClear;= new Size(80, 24);= 0;= 自动清除 ;= 2
12、00;+= new EventHandler;=(Byte)(192),(Byte)(255),(Byte)(255);= new Point(672, 36);= btnRePlay;= 3;= 新局;+= new EventHandler;= true;= ;= new Point(672, 204);= label1;= new Size(35, 17);= 6;= 得分 :;= true;= ;= new Point(672, 228);= lbP;= new Size(11, 17);= 7;= 0;= true;= ;= new Point(672, 280);= lbInfoCo
13、unt;= new Size(11, 17);= 9;= 0;= true;= ;= new Point(672, 256);= label3;= new Size(60, 17);= 8;= 提示次数 :;=(Byte)(192),(Byte)(255),(Byte)(255);= new Point(672, 376);= btnExit;= 10;= 退出;+= new EventHandler;= new Point(112, 400);= pBar;= new Size(416, 23);= 11;= 100;= true;= ;= new Point(8, 404);= lbTim
14、eOut;= new Size(97, 17);= 12;= 剩余时间 (60 秒 ):;= 1000;+= new EventHandler;= new Point(8, 40);= pictureBox1;= new Size(630, 330);= ;= 13;= false;= true;= ;= new Point(8, 8);= lbCaption;= new Size(116, 17);= 14;= 连连看 赶快开始吧 .;= ;= new Point(672, 168);= AutoReset;= new Size(80, 24);= 15;= 自动重排 ;= false;=(
15、Byte)(192),(Byte)(255),(Byte)(255);= new Point(672, 344);= btnAbout;= 16;= 关于;+= new EventHandler;=(Byte)(192),(Byte)(255),(Byte)(255);= new Point(672, 312);= btnConfig;= 17;= 配置;+= new EventHandler;= true;= 500;+= new EventHandler;= new Size(6, 14);= ;= new Size(758, 431);= ;= ;= false;= GameMain;=
16、 ;= GameMain;+= new EventHandler;+= new MouseEventHandler;+= new PaintEventHandler;+= new MouseEventHandler;(false);#endregion.);oMap = new Map3;( 初始化地图 . 完成 , 正在初始化连线管理 .); LM = new LineManager3;( 初始化连线管理.完成, 正在初始化光标和配置档案 .);cursor = new ScreenCursor();GameOption go = new GameOption;options = ();()
17、;( 初始化光标和配置档案.完成, 正在初始化素材数据 .);SO = new ScreenObject();( 初始化素材数据 .完成 , 正在分配元素 .);oMap0 = new Map(SO, 39, 0, 0);oMap1 = new Map(SO, 34, 0, 0);oMap2 = new Map(SO, 28, 0, 0);( 分配元素 .完成 , 正在计算路径 .);LM0 = new LineManager(oMap0);LM1 = new LineManager(oMap1);LM2 = new LineManager(oMap2);SD = new ScreenDraw
18、(), *, *;search_p1 = new Line();search_p2 = new Line();= 连连看第一版 by .;try= (appPath + Images);catch( 缺少资源目录 !, 请到安装目录内运行 !, , ; ();( 计算路径 .完成 , 正在初始化声音档案 .);Sounds);Sounds);Sounds);Sounds);spBg = new SoundPlayer(), bg);( 初始化背景音乐完成 .);spBomb = new SoundPlayer(appPath + Sounds,bomb);( 初始化爆炸音效完成 .);spEa
19、rse= new SoundPlayer(appPath+ Sounds,earse);( 初始化连线音效完成 .);spRefresh = new SoundPlayer(appPath + Sounds, refresh);( 初始化刷新音效完成 .);spSelect= new SoundPlayer(appPath+ Sounds,select);(初始化选择音效完成.);spHint= new SoundPlayer(appPath+ Sounds,hint);( 游戏初始化完毕! );evel = L - 1, i;if (gs =foreach (Map m in oMap)()
20、;();UpdateFrame();gs = ;= true;ifif (!= ();();else();if (GL != null)();();GL = null;private void EndGame()gs = ;= false;(0, 0);= GameTimeSec;= 0;= ;();();();private void WinGame()gs = ;EndGame();private void GameMain_MouseUp(object sender, MouseEventArgs e)if (gs != return;MapTile oMapTile = new Map
21、Tile3;for (int i = - 1; i = 0; i-)if (oMapi.GetCount() 0)oMapTilei=oMapi.TranPointToMapTile, ;if (oMapTilei != null)if(oMapTilei.XIndex=0|oMapTilei.YIndex= 0|oMapTilei.XIndex= -1|oMapTilei.YIndex =- 1 | oMapTilei.ID = 0)return;elseif (oMap - 1.GetCount() 0)if (i = 0; i-)if(LMi.TestLink(outfindPathPo
22、ints,outtrunCount)oMapi.DrawPathPoints(),findPathPoints);/* 绘制爆炸效果 */= oMapi;= oMapi;=new1).X, LMi.Items(LMi.Count - 1).Y);=newPoint(LMi.Items(LMi.Count Point(LMi.Items(LMi.Count-2).X, LMi.Items(LMi.Count - 2).Y);= ();= ();MapTile oMapTile1 =MapTile oMapTile2 =if(oMapTile1!=null)Bitmap b1 = 5, oMapT
23、ile1);().DrawImage(Image) b1, , );if (oMapTile2 != null)Bitmap b2 = 5, oMapTile2);().DrawImage(Image) b2, , );();();/* 爆炸效果完毕 */oMapi.DestroyObject(LMi.Items(LMi.Count - 1).X, LMi.Items(LMi.Count - 1).Y);oMapi.DestroyObject(LMi.Items(LMi.Count - 2).X, LMi.Items(LMi.Count - 2).Y);= true;LMi.Clear();r
24、eturn trunCount + 1;return 0;private void UpdateFrame()UpdateFrame(true);private void UpdateFrame(bool IsFlip)if (gs =if (! return;for (int i = 0; i ; i+)if (oMapi.GetCount() != 0)if (i 0)InfoCount -;= -1;= -1;= -1;= -1;ref search_p2); ref search_p2);if (oMap2.GetCount() != 0)isSearch= LM2.SearchLin
25、e(refelse if (oMap1.GetCount() != 0)isSearch= LM1.SearchLine(refelseisSearch= LM0.SearchLine(refsearch_p1,search_p1,search_p1,ref search_p2);UpdateFrame();privatevoidbtnReset_Click(objectsender,EventArgs e)if (gs != return;if();foreach (Map m in oMap)();UpdateFrame();privatevoidbtnRePlay_Click(objec
26、tsender,EventArgs e)if (gs =if (目前正在游戏,打算开新局吗?, 提示, , =();elsereturn;();foreach (Map m in oMap)();();PointCount = 0;UpdateFrame();privatevoidbtnExit_Click(objectsender,EventArgse)();();privatevoidtimeOutTimer_Tick(objectsender,EventArgs e)if 0)= - 1;= ( 剩余时间 (0 秒 ):, ;if = 3)ifif (!();else= false; if (gs !=();(0, 0);( 时间到!请继续努力! , 游戏结束! , , ;();EndGame();privatevoidbtnAbout_Click(objectsender,EventArgs e)GameAbout ga = new GameAbout();(this);();privatevoidGameMain_MouseMove(objectsender,MouseEventArgs e)=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 单位合作合同模板
- 老舍《茶馆》课件
- 2024-2025学年高中化学上学期第十七周 键的极性和分子极性说课稿
- 高中地理 第一章 宇宙中的地球 1.3 地球的运动说课稿 中图版必修1
- 数字逻辑教学课件数字电路课件
- 简明劳动合同样本(企业定制版)
- 劳务分包合作合同标准范本
- 汽车维修服务合同示范文本
- 《中医护理学绪言》课件
- 小学生课本人物传记解读
- 复旦中华传统体育课程讲义05木兰拳基本技术
- 五年级上册数学《比的应用》专项训练课件
- 员工调整薪酬面谈表
- 北师大版五年级上册数学教学课件第5课时 人民币兑换
- 工程回访记录单
- 住房公积金投诉申请书
- 辅警报名登记表
- 外研版英语五年级下册第一单元全部试题
- 检验科生物安全风险评估报告
- 京颐得移动门诊产品输液
- 部编版四年级语文下册课程纲要
评论
0/150
提交评论