C#面向对象课程设计拼图游戏.docx

上传人:b****3 文档编号:5444064 上传时间:2022-12-16 格式:DOCX 页数:22 大小:768.85KB
下载 相关 举报
C#面向对象课程设计拼图游戏.docx_第1页
第1页 / 共22页
C#面向对象课程设计拼图游戏.docx_第2页
第2页 / 共22页
C#面向对象课程设计拼图游戏.docx_第3页
第3页 / 共22页
C#面向对象课程设计拼图游戏.docx_第4页
第4页 / 共22页
C#面向对象课程设计拼图游戏.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

C#面向对象课程设计拼图游戏.docx

《C#面向对象课程设计拼图游戏.docx》由会员分享,可在线阅读,更多相关《C#面向对象课程设计拼图游戏.docx(22页珍藏版)》请在冰豆网上搜索。

C#面向对象课程设计拼图游戏.docx

C#面向对象课程设计拼图游戏

 

《C#程序设计》课程设计

 

题目:

拼图游戏

专业:

计算机科学与技术

学号:

姓名:

指导老师:

完成日期:

2012/12/26

 

《C#课程设计》评分标准

题目:

拼图游戏专业:

计算机科学与技术

学号:

姓名:

考察项目

评分依据

完成情况

分数

报告

(40分)

规范完成设计报告,含光盘

报告能够反映设计思路,并介绍系统功能

报告内容比较完整,思路比较清晰,语句比较通顺

报告内容完整,用语准确,能够反映系统开发过程

前台

开发工具

(10分)

能够使用开发工具的基本操作完成系统的开发

能够熟练地运用开发工具来实现较全面的功能

对开发工具熟悉,能够灵活使用各类控件和语句完成系统开发

能够熟练掌握多种开发工具,并能够独立解决较复杂的编程问题。

应用到多种数据库对象。

系统功能

(25分)

能够完成数据的输入输出和基本查询功能

除了基本信息管理功能外,还可以完成比较复杂的数据查询和数据编辑功能

能够方便地完成数据操作功能

具有较复杂的数据管理功能

系统

界面设计

(20分)

具有一般的Window窗口界面

功能比较全,操作也比较方便

界面美观,功能全面,操作方便

界面美观,功能设计有创新

教师签字:

成绩:

 

1.前言

拼图游戏一款非常经典的小游戏,因为它比较简单有趣,无论老少都比较适合。

拼图的设计对每一个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#语言

3概要设计与详细设计

3.1系统流程图

如图3.1所示。

 

图3.1系统流程图

3.2功能结构图

如图3.2所示。

 

图3.2功能结构图

这个游戏主要分为四个模块,分别是游戏开始、游戏复位、游戏结束和游戏退出。

这四个摸块的功能各不一样,游戏开始的模块就不用多介绍了,我们在这里主要说说重新开始的模块,如果玩家对自己本次的成绩不满意,可以通过重新开始模块来重完游戏

4编码与实现

4.1分析说明

游戏开始:

界面如图4-1

图4-1

在程序开头定义变量,实例化数组;代码如下图

游戏进行中:

当游戏运行的时候,桌面上会出现图上的图形界面。

有一个文本框和一个图形界面。

其中通过点击鼠标移动图片,游戏就正式开始,且此游戏是通过计算鼠标点击的次数,而不是计算时间,所以玩游戏的人可以有充分的时间考虑。

游戏中见图4-2

图4-2

左右图片对照方便有游戏的进行,左下角有显示有戏进行的步数,复位时直接把右边的图相应的赋给左边,代码实现如下图:

这里从第一个到第九个PictureBox都有相应赋值和命令这里只截取Box1的图片对应的代码

游戏时本段代码主要运用的c#知识是二维数组和if`~else语句,通过判断box1

游戏复位:

如果觉得自己的成绩不够好,可以选择复位重新开始。

复位时直接把右边的图相应的赋给左边,复位后效果和刚开始一样。

代码实现如下

游戏完成:

当玩家在200步以内完成拼图则提示"恭喜你已经完成拼图!

"如图4-3;否则将提玩家重新来过如图4-4

图4-4

4.2具体代码实现

附源代码

usingSystem;

usingSystem.Collections.Generic;

usingSystem.ComponentModel;

usingSystem.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)

{

pictureBox4.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)

{

bb++;

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;

}

}

privatevoidpictureBox6_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;

}

elseif(pictureBox9.Image==null)

{

pictureBox9.Image=pictureBox6.Image;

pictureBox6.Image=null;

}

}

privatevoidpictureBox7_Click(objectsender,EventArgse)

{

bb++;

label2.Text=bb.ToString();

if(pictureBox4.Image==null)

{

pictureBox4.Image=pictureBox7.Image;

pictureBox7.Image=null;

}

elseif(pictureBox8.Image==null)

{

pictureBox8.Image=pictureBox7.Image;

pictureBox7.Image=null;

}

}

privatevoidpictureBox8_Click(objectsender,EventArgse)

{

bb++;

label2.Text=bb.ToString();

if(pictureBox5.Image==null)

{

pictureBox5.Image=pictureBox8.Image;

pictureBox8.Image=null;

}

elseif(pictureBox7.Image==null)

{

pictureBox7.Image=pictureBox8.Image;

pictureBox8.Image=null;

}

elseif(pictureBox9.Image==null)

{

pictureBox9.Image=pictureBox8.Image;

pictureBox8.Image=null;

}

}

privatevoidpictureBox9_Click(objectsender,EventArgse)

{

bb++;

label2.Text=bb.ToString();

if(pictureBox6.Image==null)

{

pictureBox6.Image=pictureBox9.Image;

pictureBox9.Image=null;

}

elseif(pictureBox8.Image==null)

{

pictureBox8.Image=pictureBox9.Image;

pictureBox9.Image=null;

}

}

//设置游戏最大步数

privatevoidlabel2_TextChanged(objectsender,EventArgse)

{

try

{

if(int.Parse(label2.Text)>=200)

{

MessageBox.Show("你已经超过了游戏所限定的最大步数,欢迎再来!

","注意",MessageBoxButtons.OK,MessageBoxIcon.Information);

}

}

catch{}

}

privatevoidbutton1_Click(objectsender,EventArgse)

{

button2.Enabled=true;

pictureBox9.Image=null;

aa=aa+1;

for(intm=0;m<=2;m++)

{

for(intn=0;n<=2;n++)

{

t[m,n].Enabled=true;

}

}

ss:

switch(aa)//对图片进行随机的分割

{

case1:

{

Clipboard.SetImage(pictureBox1.Image);

pictureBox1.Image=pictureBox5.Image;

pictureBox5.Image=Clipboard.GetImage();

Clipboard.Clear();

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;

}

case2:

{

Clipboard.SetImage(pictureBox1.Image);

pictureBox1.Image=pictureBox6.Image;

pictureBox6.Image=Clipboard.GetImage();

Clipboard.Clear();

Clipboard.SetImage(pictureBox2.Image);

pictureBox2.Image=pictureBox8.Image;

pictureBox8.Image=Clipboard.GetImage();

Clipboard.Clear();

Clipboard.SetImage(pictureBox3.Image);

pictureBox3.Image=pictureBox5.Image;

pictureBox5.Image=Clipboard.GetImage();

Clipboard.Clear();

button1.Enabled=false;

break;

}

case3:

{

Clipboard.SetImage(pictureBox2.Image);

pictureBox2.Image=pictureBox5.Image;

pictureBox5.Image=Clipboard.GetImage();

Clipboard.Clear();

Clipboard.SetImage(pictureBox4.Image);

pictureBox4.Image=pictureBox6.Image;

pictureBox6.Image=Clipboard.GetImage();

Clipboard.Clear();

Clipboard.SetImage(pictureBox3.Image);

pictureBox3.Image=pictureBox8.Image;

pictureBox8.Image=Clipboard.GetImage();

Clipboard.Clear();

button1.Enabled=false;

break;

}

case4:

{

Clipboard.SetImage(pictureBox1.Image);

pictureBox1.Image=pictureBox8.Image;

pictureBox8.Image=Clipboard.GetImage();

Clipboard.Clear();

Clipboard.SetImage(pictureBox3.Image);

pictureBox3.Image=pictureBox5.Image;

pictureBox5.Image=Clipboard.GetImage();

Clipboard.Clear();

Clipboard.SetImage(pictureBox6.Image);

pictureBox6.Image=pictureBox9.Image;

pictureBox9.Image=Clipboard.GetImage();

Clipboard.Clear();

button1.Enabled=false;

break;

}

default:

{

aa=1;

gotoss;

}

}

}

//对数组赋值

privatevoidbutton2_Click(objectsender,EventArgse)

{

pictureBox1.Image=pictureBox10.Image;

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(intm=0;m<=2;m++)

{

for(intn=0;n<=2;n++)

{

t[m,n].Enabled=false;

}

}

}

//对游戏完成进行判断

privatevoidForm1_Activated(objectsender,EventArgse)

{

if(pictureBox1.Image==pictureBox10.Image&&

pictureBox2.Image==pictureBox12.Image&&

pictureBox3.Image==pictureBox13.Image&&

pictureBox4.Image==pictureBox14.I

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 文学研究

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1