返回顶部
首页 > 资讯 > 精选 >C#拼图游戏的示例分析
  • 449
分享到

C#拼图游戏的示例分析

2023-06-21 20:06:20 449人浏览 安东尼
摘要

这篇文章将为大家详细讲解有关C#拼图游戏的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、项目分析项目分析简要说明项目主要用户需求、设计思路及模块划分。1、用户需求分析在当今社会,人们的生活压力

这篇文章将为大家详细讲解有关C#拼图游戏的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

    一、项目分析

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

    1、用户需求分析

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

    2、系统设计思路

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

    3、系统模块划分

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

    二、项目设计

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

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

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

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

    StreamReader reader = new StreamReader("name.txt");

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

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

    登录道理相同。

    板块二:导入图片。

    导入图片用到

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

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

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

    讲难度设置加到combox中

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

    然后用switch对应各个难度

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

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

    public bool JudgePicture(){    int count = 0;    for (int x = 0; x < n; x++)    {        for (int y = 0; y < n; y++)        {            if (this.node[x, y].num != count)                return false;            count++;        }    }    return true;}
    板块五:切割图片。
    // 传入图片;单个图片宽,高;拼图界面的x,y长度public Image Cutpicture(Image fImage,int width,int height,int spacex,int spacey){    // 创建新图片的位图    Bitmap bitmap = new Bitmap(width, height);    // 创建绘制区域    Graphics graphics = Graphics.FromImage(bitmap);    // 截取所需原图对应区域写入作图区域    graphics.DrawImage(fImage, 0, 0, new Rectangle(spacex, spacey, width, height), GraphicsUnit.Pixel);    // 从作图区域生成新图    Image fgImage = Image.FromHbitmap(bitmap.GetHbitmap());    return fgImage;// 返回分割后的图片}

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

    板块六:打乱拼图。
    // 定义随机数用于打乱切后的图Random lx = new Random();Random ly = new Random();int x = lx.Next(0, n);int y = ly.Next(0, n);

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

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

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

    // 按钮重排后再picturebox3中显示private void button3_Click(object sender, EventArgs e){    // 在pictureBox3中显示被移动后的拼图    pictureBox3.Image = BackImage();}

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

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

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

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

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

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

    2、设计核心技术

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

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

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

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

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

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

    三、项目测试

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

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

    C#拼图游戏的示例分析

    C#拼图游戏的示例分析

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

    C#拼图游戏的示例分析

    另设登录,注册界面

    C#拼图游戏的示例分析

    C#拼图游戏的示例分析

    关于“C#拼图游戏的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

    --结束END--

    本文标题: C#拼图游戏的示例分析

    本文链接: https://lsjlt.com/news/300424.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • C#拼图游戏的示例分析
      这篇文章将为大家详细讲解有关C#拼图游戏的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、项目分析项目分析简要说明项目主要用户需求、设计思路及模块划分。1、用户需求分析在当今社会,人们的生活压力...
      99+
      2023-06-21
    • C#实现拼图游戏
      本文实例为大家分享了C#实现拼图游戏的具体代码,供大家参考,具体内容如下 (一)需求:(这个需求书写较为简单) 图片:有图 切割:拼图不是一个图,我们需要把一个整图...
      99+
      2024-04-02
    • C# 拼图游戏的实战(附demo)
      目录一、项目分析1、用户需求分析2、系统设计思路3、系统模块划分二、项目设计1、各个子模块的设计方法板块一:注册用户并进行登录。板块二:导入图片。板块三:设置关卡所能选的难度。版块四...
      99+
      2024-04-02
    • C#怎么实现拼图游戏
      这篇文章主要介绍“C#怎么实现拼图游戏”,在日常操作中,相信很多人在C#怎么实现拼图游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#怎么实现拼图游戏”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!本文...
      99+
      2023-06-20
    • C语言实现扫雷游戏的示例分析
      这篇文章给大家分享的是有关C语言实现扫雷游戏的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一,创建菜单先明确要做什么,选择合适的语句来对想法进行实现:test.c   vo...
      99+
      2023-06-29
    • C++语言实现拼图游戏详解
      目录开发环境:Visual Studio 2019,easyx图形库。游戏功能列表:游戏效果一.头文件和基本量二.封面三.数据初始化四.封面规则按钮五.构造拼图六.绘图函数七.背景音...
      99+
      2024-04-02
    • C语言如何实现拼图游戏
      本篇内容介绍了“C语言如何实现拼图游戏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!制作一款拼图小游戏#include <g...
      99+
      2023-06-08
    • C++基于EasyX库实现拼图小游戏
      用C++的EasyX库做的拼图小游戏,供大家参考,具体内容如下   记录一下自己做的第一个项目,还有一些改进空间QWQ,可以支持难度升级,但是通关判断似乎有点...
      99+
      2024-04-02
    • HTML5开发Kinect体感游戏的示例分析
      小编给大家分享一下HTML5开发Kinect体感游戏的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!HTML5开发Kin...
      99+
      2024-04-02
    • javascript中createjs小游戏开发的示例分析
      这篇文章主要介绍javascript中createjs小游戏开发的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1. 实现一个无缝连接的背景图,模拟出汽车在加速的状态this...
      99+
      2024-04-02
    • 学习python:实例3.终端版拼图游戏
      效果:输入数字进行移动,当数字排列成为【1,2,3,4,5,6,7,8】游戏胜利!代码:# 拼图 from sys import exit from os import system from random import shuffle ...
      99+
      2023-01-31
      终端 实例 拼图游戏
    • java实现简单的拼图游戏
      用Java来实现简单的拼图游戏,供大家参考,具体内容如下 首先我们看一下这个拼图小游戏的效果图: 创建一个名称为MedleyGame的类,该类继承了JFrame类;然后在该类中分别...
      99+
      2024-04-02
    • JavaScript写个贪吃蛇小游戏的示例分析
      小编给大家分享一下JavaScript写个贪吃蛇小游戏的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!贪吃蛇大家都玩过,...
      99+
      2024-04-02
    • C++骑士游历问题的示例分析
      这篇文章主要介绍了C++骑士游历问题的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。骑士游历问题:在国际棋盘上使一个骑士遍历所有的格子一遍且仅一遍,对于任意给定的顶点...
      99+
      2023-06-29
    • C++基于EasyX库如何实现拼图小游戏
      这篇“C++基于EasyX库如何实现拼图小游戏”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++基于EasyX库如何实现拼...
      99+
      2023-06-19
    • Java实现Android拼图游戏设计过程解析
      目录1.项目介绍2.项目原理3.项目设计4.项目实现5.获取布局6.准备图片7.初始化 item8.游戏图片的切换9.游戏胜利的判断10.游戏封面1.项目介绍 这是一款基于 Java...
      99+
      2024-04-02
    • Canvas帧动画吃苹果小游戏的示例分析
      这篇文章将为大家详细讲解有关Canvas帧动画吃苹果小游戏的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。先看页面效果。下面四个按钮分别表示开始、结束、暂停、继续下面是帧动画图片素材:帧动画的实现...
      99+
      2023-06-09
    • Python实现四个经典小游戏的示例分析
      本篇文章给大家分享的是有关Python实现四个经典小游戏的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 一、效果展示1、俄罗斯方块这个应该是玩起来最最简单的...
      99+
      2023-06-22
    • C/C++实现精灵游戏的示例代码
      目录前言创建win32项目游戏效果核心代码前言 采用面向过程的遍程思想,通过acllib图形库来实现。 acllib下载地址:acllib tom,jerry,dog,heart以及...
      99+
      2024-04-02
    • Java字符串拼接的示例分析
      这篇文章主要介绍了Java字符串拼接的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。背景字符串拼接不管是在业务上,还是写算法时都会频繁使用到。对于Java来说,字符串...
      99+
      2023-06-20
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作