C#拼图游戏的示例分析(云服务器、云主机、高防IP、高防服务器、香港服务器、美国服务器,开发技术)

时间:2024-04-29 15:25:01 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    一、项目分析

    项目分析简要说明项目主要用户需求、设计思路及模块划分。

    1、用户需求分析

    在当今社会,人们的生活压力越来越大,也没有太多时间去玩大型的游戏,所以需要一些简单的小游戏来缓解大家的工作和学习压力。而连连看是一款简单,容易理解,大多数人都会玩的小游戏,耗费时间也不是太长,所以特意设计此款游戏来满足用户放松心情的需求。

    2、系统设计思路

    (1)进行游戏用户的注册以及登录;
    (2)先导入图片,并进行切割
    (3)随机丢弃一张小切图,并打乱顺序
    (3)窗体基本的功能选择栏需实现;
    (4)可以判定游戏确定输赢,当拼成时提示成功;
    (5)点击图片要能进行移动;
    (6)右侧要有重排后的显示框便于玩家游戏的完成。

    3、系统模块划分

    板块一:注册用户并进行登录。
    板块二:导入图片。
    板块三:设置关卡所能选的难度。
    拼图游戏应该有关卡选择33型,44型,5*5型等等。设置多个关卡可以让用户体验游戏更具挑战性。
    版块四:拼图是否完成的判断。
    通过判断图片对应结构体的数字是否完全顺序排列来判断游戏是否胜利。
    板块五:切割图片。
    板块六:打乱拼图。
    板块七:重排图片,反映现在拼图的状况。
    板块八:切成图后的小图片移动。
    该过程是整个游戏的核心过程,是最重要的一个过程,用户通过点击图片来移动图片,如果图片临近白块,则图片移动到白块位置;反之则不移动。

    二、项目设计

    详细介绍项目各个子模块的设计方法及设计核心技术。

    1、各个子模块的设计方法

    板块一:注册用户并进行登录。

    通过两个窗体来完成注册登录的步骤。注册主要用到文件读取的方法:

    StreamReaderreader=newStreamReader("name.txt");

    并通过写入函数讲用户注册名写入:

    StreamWriterwriter=newStreamWriter("name.txt",true);writer.WriteLine(textBox1.Text);MessageBox.Show("用户注册成功,请进行登录!");writer.Dispose();

    登录道理相同。

    板块二:导入图片。

    导入图片用到

    OpenFileDialogopenFileDialog1=newOpenFileDialog();openFileDialog1.ShowDialog();//打开文件夹选择图片pictureBox1.Image=Image.FromFile(openFileDialog1.FileName).GetThumbnailImage(250,250,newImage.GetThumbnailImageAbort(delegate{returnfalse;}),IntPtr.Zero);//使所选图片的尺寸符合所需大小

    打开图片文件之后并初始其尺寸大小,便于后期切图以及用户体验。

    板块三:设置关卡所能选的难度。

    讲难度设置加到combox中

    comboBox1.Items.Add("1");comboBox1.Items.Add("2");comboBox1.Items.Add("3");comboBox1.Items.Add("4");

    然后用switch对应各个难度

    intDiffcult=int.Parse(comboBox1.Text);//根据对应难度初始化数组并给n赋值switch(Diffcult){case1:node=newNode[3,3];n=3;break;case2:node=newNode[4,4];n=4;break;case3:node=newNode[5,5];n=5;break;case4:node=newNode[9,9];n=9;break;}
    版块四:拼图是否完成的判断。

    通过判断函数来确定对照各个图片的结构体的数字记录来判断是否拼成

    publicboolJudgePicture(){intcount=0;for(intx=0;x<n;x++){for(inty=0;y<n;y++){if(this.node[x,y].num!=count)returnfalse;count++;}}returntrue;}
    板块五:切割图片。
    //传入图片;单个图片宽,高;拼图界面的x,y长度publicImageCutpicture(ImagefImage,intwidth,intheight,intspacex,intspacey){//创建新图片的位图Bitmapbitmap=newBitmap(width,height);//创建绘制区域Graphicsgraphics=Graphics.FromImage(bitmap);//截取所需原图对应区域写入作图区域graphics.DrawImage(fImage,0,0,newRectangle(spacex,spacey,width,height),GraphicsUnit.Pixel);//从作图区域生成新图ImagefgImage=Image.FromHbitmap(bitmap.GetHbitmap());returnfgImage; //返回分割后的图片}

    通过创建绘制区域,来截取所需的小图块,然后通过调用切图函数将切后的图片全部传入结构体图片数组中。

    板块六:打乱拼图。
    //定义随机数用于打乱切后的图Randomlx=newRandom();Randomly=newRandom();intx=lx.Next(0,n);inty=ly.Next(0,n);

    再调用交换函数进行来进行两图片交换,进行400000次达到打乱的目的

    板块七:重排图片,反映现在拼图的状况。

    每次图片的点击移动事件都会进行pictureBox2.Image = BackImage();语句来存储移动后的图片,当点击button3时就会调用这个函数

    //按钮重排后再picturebox3中显示privatevoidbutton3_Click(objectsender,EventArgse){//在pictureBox3中显示被移动后的拼图pictureBox3.Image=BackImage();}

    是的picturebox3的图片显示现在图片的状态

    板块八:切成图后的小图片移动。

    先读取鼠标点击的位置,用于判断点击的图片位置

    intX=e.X/(width/n); //鼠标x位置整型只能取1到n-1intY=e.Y/(width/n);

    一共九种情况:图片在中间,四角,四边,分别判断来确定是否移动:如下面是在中间点击图片的运行代码,其他情况类似:

    if(node[X+1,Y].num==index_m){Swap(newPoint(X+1,Y),newPoint(X,Y));}elseif(node[X-1,Y].num==index_m){Swap(newPoint(X-1,Y),newPoint(X,Y));}elseif(node[X,Y+1].num==index_m){Swap(newPoint(X,Y+1),newPoint(X,Y));}elseif(node[X,Y-1].num==index_m){Swap(newPoint(X,Y-1),newPoint(X,Y));}

    2、设计核心技术

    • 用文件流的方法设置登录注册界面,并保存用户名信息

    • 使用GDI+的方法对图片进行切割

    • 打乱图片的时候运用大量随机数

    • 每个图片有自己的对应结构体数字,为了判断是否拼图成功

    • 当所点击图片与空白图片交换时,分九种情况:四角,四边,中间,按情况来写入交换方法

    • 当拼成功时,按照图片对应的结构体数字并调用判断函数判断

    三、项目测试

    简要介绍采用的测试方法和测试要点。

    点击图中按钮后选择一个图片文件,将图片显示到窗口的左边

    C#拼图游戏的示例分析

    C#拼图游戏的示例分析

    然后将图片切为指定的数目(如 3x3)的小图片,从生成的小图片中随机选择一张丢弃,将小图片按照一定规律打乱,并将显示到窗口的中间。
    用户可以用鼠标点击空白方块周围的图片,被点击的图片移动到原来空白的位置,被点击图片的位置变为空白。

    C#拼图游戏的示例分析

    另设登录,注册界面

    C#拼图游戏的示例分析

    C#拼图游戏的示例分析

     </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
    本文:C#拼图游戏的示例分析的详细内容,希望对您有所帮助,信息来源于网络。
    上一篇:html中的div标签有什么用下一篇:

    3 人围观 / 0 条评论 ↓快速评论↓

    (必须)

    (必须,保密)

    阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18