1《C#程序设计》课程设计题目:拼图游戏专业:计算机科学与技术学号:姓名:指导老师:完成日期:2012/12/262《C#课程设计》评分标准题目:拼图游戏专业:计算机科学与技术学号:姓名:考察项目评分依据完成情况分数报告(40分)规范完成设计报告,含光盘报告能够反映设计思路,并介绍系统功能报告内容比较完整,思路比较清晰,语句比较通顺报告内容完整,用语准确,能够反映系统开发过程前台开发工具(10分)能够使用开发工具的基本操作完成系统的开发能够熟练地运用开发工具来实现较全面的功能对开发工具熟悉,能够灵活使用各类控件和语句完成系统开发能够熟练掌握多种开发工具,并能够独立解决较复杂的编程问题。应用到多种数据库对象。系统功能(25分)能够完成数据的输入输出和基本查询功能除了基本信息管理功能外,还可以完成比较复杂的数据查询和数据编辑功能能够方便地完成数据操作功能具有较复杂的数据管理功能系统界面设计(20分)具有一般的Window窗口界面功能比较全,操作也比较方便界面美观,功能全面,操作方便界面美观,功能设计有创新教师签字:成绩:3目录1前言......................................................42需求分析..................................................42.1要求.................................................42.2任务.................................................42.3运行环境.............................................42.4开发工具.............................................43概要设计与详细设计........................................53.1系统流程图...........................................53.2结构功能图...........................................54编码与实现................................................64.1编码分析.............................................64.2具体代码实现(附源代码)..............................95课程设计总结.............................................18参考文献...................................................1941.前言拼图游戏一款非常经典的小游戏,因为它比较简单有趣,无论老少都比较适合。拼图的设计对每一个C#语言设计者进行语言提高和进阶都是一个很好的锻炼机会。拼图游戏的设计比较复杂,它涉及面广、牵涉方面多,如果不好好考虑和设计,将难以成功开发出这个游戏。在这个游戏的设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用类的继承机制以及一些设计模式。因此,如何设计和开发好这个拼图游戏,对于提高C#开发水平和系统的设计能力有极大的帮助。在设计开发过程中,需要处理好各个类之间的继承关系,还要处理各个类相应的封装,并且还要协调好各个模块之间的逻辑依赖关系和数据通信关系。一个3×3的魔板,有一个格子是空的,其他格子内随机放置1-8共8个编号的方块,通过单击任意一个与空格子相邻的方块可以把该方块移入空格子,不断的移动方块,直到方块按照图片的原来的顺序排好。2需求分析2.1要求(1)用C#语言实现程序设计;(2)利用PictureBox控件来实现图片的移动(3)超过200步提示重新来(4)界面友好(良好的人机互交),程序要有注释。2.2任务(1)制作流程图(2)编写代码;(3)程序分析与调试。2.3运行环境(1)WINDOWS2000/XP/win7系统(2)TurboC2.0编译环境2.4开发工具C#语言53概要设计与详细设计3.1系统流程图如图3.1所示。图3.1系统流程图3.2功能结构图如图3.2所示。图3.2功能结构图这个游戏主要分为四个模块,分别是游戏开始、游戏复位、游戏结束和游戏退出。这四个摸块的功能各不一样,游戏开始的模块就不用多介绍了,我们在这里主要说说重新开始的模块,如果玩家对自己本次的成绩不满意,可以通过重新开始模块来重完游戏游戏开始操作游戏200步内完成游戏游戏完成拼图游戏游戏开始游戏复位游戏结束游戏退出64编码与实现4.1分析说明游戏开始:界面如图4-1图4-1在程序开头定义变量,实例化数组;代码如下图7游戏进行中:当游戏运行的时候,桌面上会出现图上的图形界面。有一个文本框和一个图形界面。其中通过点击鼠标移动图片,游戏就正式开始,且此游戏是通过计算鼠标点击的次数,而不是计算时间,所以玩游戏的人可以有充分的时间考虑。游戏中见图4-2图4-2左右图片对照方便有游戏的进行,左下角有显示有戏进行的步数,复位时直接把右边的图相应的赋给左边,代码实现如下图:这里从第一个到第九个PictureBox都有相应赋值和命令这里只截取Box1的图片对应的代码游戏时本段代码主要运用的c#知识是二维数组和if`~else语句,通过判断box18游戏复位:如果觉得自己的成绩不够好,可以选择复位重新开始。复位时直接把右边的图相应的赋给左边,复位后效果和刚开始一样。代码实现如下游戏完成:当玩家在200步以内完成拼图则提示恭喜你已经完成拼图!如图4-3;否则将提玩家重新来过如图4-49图4-44.2具体代码实现附源代码usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;10usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;namespace拼图游戏2{publicpartialclassForm1:Form{publicstaticintaa;publicstaticintbb;privateSystem.Windows.Forms.PictureBox[,]t;publicForm1(){InitializeComponent();}//实例化数组privatevoidForm1_Load(objectsender,EventArgse){t=newPictureBox[3,3]{{pictureBox1,pictureBox2,pictureBox3},{pictureBox4,pictureBox5,pictureBox6},{pictureBox7,pictureBox8,pictureBox9}};for(inti=0;i=2;i++){for(intj=0;j=2;j++){t[i,j].Enabled=false;}}}//图片的移动privatevoidpictureBox1_Click(objectsender,EventArgse){bb++;label2.Text=bb.ToString();if(pictureBox2.Image==null){pictureBox2.Image=pictureBox1.Image;pictureBox1.Image=null;}elseif(pictureBox4.Image==null){11pictureBox4.Image=pictureBox1.Image;pictureBox1.Image=null;}}privatevoidpictureBox2_Click(objectsender,EventArgse){bb++;label2.Text=bb.ToString();if(pictureBox1.Image==null){pictureBox1.Image=pictureBox2.Image;pictureBox2.Image=null;}elseif(pictureBox3.Image==null){pictureBox3.Image=pictureBox2.Image;pictureBox2.Image=null;}elseif(pictureBox5.Image==null){pictureBox5.Image=pictureBox2.Image;pictureBox2.Image=null;}}privatevoidpictureBox3_Click(objectsender,EventArgse){bb++;label2.Text=bb.ToString();if(pictureBox2.Image==null){pictureBox2.Image=pictureBox3.Image;pictureBox3.Image=null;}elseif(pictureBox6.Image==null){pictureBox6.Image=pictureBox3.Image;pictureBox3.Image=null;}}privatevoidpictureBox4_Click(objectsender,EventArgse){12bb++;label2.Text=bb.ToString();if(pictureBox1.Image==null){pictureBox1.Image=pictureBox4.Image;pictureBox4.Image=null;}elseif(pictureBox5.Image==null){pictureBox5.Image=pictureBox4.Image;pictureBox4.Image=null;}elseif(pictureBox7.Image==null){pictureBox7.Image=pictureBox4.Image;pictureBox4.Image=null;}}privatevoidpictureBox5_Click(objectsender,EventArgse){bb++;label2.Text=bb.ToString();if(pictureBox2.Image==null){pictureBox2.Image=pictureBox5.Image;pictureBox5.Image=null;}elseif(pictureBox4.Image==null){pictureBox4.Image=pictureBox5.Image;pictureBox5.Image=null;}elseif(pictureBox6.Image==null){pictureBox6.Image=pictureBox5.Image;pictureBox5.Image=null;}elseif(pictureBox8.Image==null){pictureBox8.Image=pictureBox5.Image;pictureBox5.Image=null;}}13privatevoidpictureBox6_Click(objectsender,EventArgse){bb++;label2.Text=bb.ToString();if(pictureBox5.Image==null){pictureBox5.Image=pictureBox6.Image;pictureBox6.Image=null;}elseif(pictureBox3.Image==null){pictureBox3.Image=pictureBox6.Image;pictureBox6.Image=null;}else