学号 1608220203
2016-2017 学年 第一学期
《Windows 程序设计》
课程设计报告
题 目 : 拼图游戏设计
专 业 :
班 级 :
姓 名 :
指导教师:
成 绩 :
学院
二 0 一六年十一月十五日
目
录
1.设计目的与要求 ............................................................................................................................3
1.1 设计目的 ..............................................................3
1.2 设计要求 ..............................................................3
2.设计分析........................................................................................................................................ 3
2.1 游戏内容说明 ..........................................................3
2.2 设计环境 ..............................................................3
2.3 设计流程图 ............................................................4
2.4 设计功能结构图 ........................................................4
3.实现过程........................................................................................................................................ 5
3.1 游戏开始 ..............................................................5
3.2 游戏进行中 ............................................................6
3.3 游戏复位 ..............................................................7
3.4 游戏完成 ..............................................................9
4.设计心得...................................................................................................................................... 12
5.参考文献...................................................................................................................................... 13
6.附录 .............................................................................................................................................. 14
II
文化创意与传播学院《Windows 课程设计》课程报告
1.设计目的与要求
1.1 设计目的
通过拼图游戏设计,使我掌握 Visual Studio 中 Windows 窗体的建立及窗体
中各个控件的使用,以及界面的设,从而让我进一步熟悉 C#语言的编程,对编
程有了进一步巩固,并提高分析和解决实际问题的能力。同时让我熟悉软件的设
计,调试的全过程。
1.2 设计要求
界面要求:要求界面简洁美观,简单易用。
设计要求:
(1)用 C#语言实现程序设计;
(2)利用 PictureBox 控件来实现图片的移动;
(3)超过 200 步提示重新来;
(4)良好的人机互交,程序要有注释。
2.设计分析
2.1 游戏内容说明
拼图游戏一款非常经典的小游戏,因为它比较简单有趣,无论老少都比较适
合。拼图的设计对每一个 C#语言设计者进行语言提高和进阶都是一个很好的锻
炼机会。在这个游戏的设计中,牵涉到图形界面的显示与更新、数据的收集与更
新,并且在这个游戏的开发中,还要应用类的继承机制以及一些设计模式。在设
计开发过程中,需要处理好各个类之间的继承关系,还要处理各个类相应的封装,
并且还要协调好各个模块之间的逻辑依赖关系和数据通信关系。一个 3×3 的魔
板,有一个格子是空的,其他格子内随机放置 1-8 共 8 个编号的方块,通过单击
任意一个与空格子相邻的方块可以把该方块移入空格子,不断的移动方块,直到
方块按照图片的原来的顺序排好。
2.2 设计环境
本程序选择 Visual Studio 2012 作为开发环境。硬件要求能运行 Windows
操作系统,使用 C#程序设计语言编译。
3
文化创意与传播学院《Windows 课程设计》课程报告
2.3 设计流程图
这个流程图主要包括游戏开始、操作游戏、200 步完成游戏、游戏完成四个
部分,通过他们之间的联系,画出简易流程图。
图 1 系统流程图
2.4 设计功能结构图
这个游戏主要分为四个模块,分别是游戏开始、游戏复位、游戏结束和游戏
退出。这四个摸块的功能各不一样,游戏开始的模块就不用多介绍了,我们在这
里主要说说游戏复位的模块,如果玩家对自己本次的成绩不满意,可以通过重新
开始模块来重完游戏。
图 2 功能结构图
4
文化创意与传播学院《Windows 课程设计》课程报告
3.实现过程
3.1 游戏开始
进入游戏的主界面,我们可以看到图形界面,然后可以点击开始,进入游戏。
在程序开头定义变量,实例化数组。
代码提示如下:
namespace 拼图游戏 2
{
public partial class Form1 : Form
{
public static int aa;
public static int bb;
private System.Windows.Forms.PictureBox[,] t;
public Form1()
{
InitializeComponent();
}
//实例化数组
private void Form1_Load(object sender, EventArgs e)
{
t = new PictureBox[3, 3]{{pictureBox1 ,pictureBox2 ,pictureBox3 },
{pictureBox4 ,pictureBox5 ,pictureBox6 },
{pictureBox7 ,pictureBox8 ,pictureBox9 }
};
for (int i = 0; i <= 2; i++)
{
for (int j = 0; j <= 2; j++)
{
t[i, j].Enabled = false;
}
5
文化创意与传播学院《Windows 课程设计》课程报告
}
}
3.2 游戏进行中
图 3 开始界面
当游戏运行的时候,桌面上会出现图上的图形界面。有一个文本框和一个图
形界面。其中通过点击鼠标移动图片,游戏就正式开始,且此游戏是通过计算鼠
标点击的次数,而不是计算时间,所以玩游戏的人可以有充分的时间考虑。左右
图片对照方便游戏的进行,左下角有显示游戏进行的步数。
部分代码提示:
switch (aa) //对图片进行随机的分割
{
case 1:
{
Clipboard.SetImage(pictureBox1.Image);
pictureBox1.Image
=
pictureBox5.Image;
pictureBox5.Image
=
Clipboard.GetImage();
Clipboard.Clear();
6
文化创意与传播学院《Windows 课程设计》课程报告
Clipboard.SetImage(pictureBox2.Image);
pictureBox2.Image
=
pictureBox4.Image;
pictureBox4.Image
=
Clipboard.GetImage();
Clipboard.Clear();
Clipboard.SetImage(pictureBox3.Image);
pictureBox3.Image
=
pictureBox8.Image;
pictureBox8.Image
=
Clipboard.GetImage();
Clipboard.Clear();
button1.Enabled = false;
break;
}
case 2:
3.3 游戏复位
图 4 游戏进行中
如果觉得自己的成绩不够好,可以选择游戏复位重新开始。复位时直接把右
边的图相应的赋给左边,复位后效果和刚开始一样。
部分代码提示:
private void button2_Click(object sender, EventArgs e) {
pictureBox1.Image = pictureBox10.Image;
7
文化创意与传播学院《Windows 课程设计》课程报告
pictureBox2.Image = pictureBox12.Image;
pictureBox3.Image = pictureBox15.Image;
pictureBox4.Image = pictureBox13.Image;
pictureBox5.Image = pictureBox14.Image;
pictureBox6.Image = pictureBox16.Image;
pictureBox7.Image = pictureBox17.Image;
pictureBox8.Image = pictureBox18.Image;
pictureBox9.Image = null;
label2.Text = "";
bb = 0;
button2.Enabled = false;
button1.Enabled = true;
for (int m = 0; m <= 2; m++)
{
for (int n = 0; n <= 2; n++)
{
t[m, n].Enabled = false;
}
图 5 复位界面
8