欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#?拼圖游戲的實戰(zhàn)(附demo)

 更新時間:2021年11月24日 11:44:22   作者:流楚丶格念  
拼圖游戲是常見的一種游戲,本文詳細的介紹了C#實現(xiàn)拼圖游戲,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

一、項目分析

項目分析簡要說明項目主要用戶需求、設計思路及模塊劃分。

1、用戶需求分析

在當今社會,人們的生活壓力越來越大,也沒有太多時間去玩大型的游戲,所以需要一些簡單的小游戲來緩解大家的工作和學習壓力。而連連看是一款簡單,容易理解,大多數人都會玩的小游戲,耗費時間也不是太長,所以特意設計此款游戲來滿足用戶放松心情的需求。

2、系統(tǒng)設計思路

(1)進行游戲用戶的注冊以及登錄;
(2)先導入圖片,并進行切割
(3)隨機丟棄一張小切圖,并打亂順序
(3)窗體基本的功能選擇欄需實現(xiàn);
(4)可以判定游戲確定輸贏,當拼成時提示成功;
(5)點擊圖片要能進行移動;
(6)右側要有重排后的顯示框便于玩家游戲的完成。

3、系統(tǒng)模塊劃分

板塊一:注冊用戶并進行登錄。
板塊二:導入圖片。
板塊三:設置關卡所能選的難度。
拼圖游戲應該有關卡選擇33型,44型,5*5型等等。設置多個關卡可以讓用戶體驗游戲更具挑戰(zhàn)性。
版塊四:拼圖是否完成的判斷。
通過判斷圖片對應結構體的數字是否完全順序排列來判斷游戲是否勝利。
板塊五:切割圖片。
板塊六:打亂拼圖。
板塊七:重排圖片,反映現(xiàn)在拼圖的狀況。
板塊八:切成圖后的小圖片移動。
該過程是整個游戲的核心過程,是最重要的一個過程,用戶通過點擊圖片來移動圖片,如果圖片臨近白塊,則圖片移動到白塊位置;反之則不移動。

二、項目設計

詳細介紹項目各個子模塊的設計方法及設計核心技術。

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)
{
    // 創(chuàng)建新圖片的位圖
    Bitmap bitmap = new Bitmap(width, height);
    // 創(chuàng)建繪制區(qū)域
    Graphics graphics = Graphics.FromImage(bitmap);
    // 截取所需原圖對應區(qū)域寫入作圖區(qū)域
    graphics.DrawImage(fImage, 0, 0, new Rectangle(spacex, spacey, width, height), GraphicsUnit.Pixel);
    // 從作圖區(qū)域生成新圖
    Image fgImage = Image.FromHbitmap(bitmap.GetHbitmap());
    return fgImage;	// 返回分割后的圖片
}

通過創(chuàng)建繪制區(qū)域,來截取所需的小圖塊,然后通過調用切圖函數將切后的圖片全部傳入結構體圖片數組中。

板塊六:打亂拼圖。

// 定義隨機數用于打亂切后的圖
Random lx = new Random();
Random ly = new Random();
int x = lx.Next(0, n);
int y = ly.Next(0, n);

再調用交換函數進行來進行兩圖片交換,進行400000次達到打亂的目的

板塊七:重排圖片,反映現(xiàn)在拼圖的狀況。

每次圖片的點擊移動事件都會進行pictureBox2.Image = BackImage();語句來存儲移動后的圖片,當點擊button3時就會調用這個函數

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

是的picturebox3的圖片顯示現(xiàn)在圖片的狀態(tài)

板塊八:切成圖后的小圖片移動。

先讀取鼠標點擊的位置,用于判斷點擊的圖片位置

int X = e.X / (width / n);	// 鼠標x位置整型只能取 1到n-1
int 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+的方法對圖片進行切割
  • 打亂圖片的時候運用大量隨機數
  • 每個圖片有自己的對應結構體數字,為了判斷是否拼圖成功
  • 當所點擊圖片與空白圖片交換時,分九種情況:四角,四邊,中間,按情況來寫入交換方法
  • 當拼成功時,按照圖片對應的結構體數字并調用判斷函數判斷

三、項目測試

簡要介紹采用的測試方法和測試要點。

點擊圖中按鈕后選擇一個圖片文件,將圖片顯示到窗口的左邊

在這里插入圖片描述

在這里插入圖片描述

然后將圖片切為指定的數目(如 3x3)的小圖片,從生成的小圖片中隨機選擇一張丟棄,將小圖片按照一定規(guī)律打亂,并將顯示到窗口的中間。
用戶可以用鼠標點擊空白方塊周圍的圖片,被點擊的圖片移動到原來空白的位置,被點擊圖片的位置變?yōu)榭瞻住?/p>

在這里插入圖片描述

另設登錄,注冊界面

在這里插入圖片描述

在這里插入圖片描述

四、結論

簡要總結項目的主要工作、主要結果、心得感受主要發(fā)現(xiàn)以及下一步應當開展的主要工作等。

主要工作:設計了一款拼圖游戲主要結果:讓用戶有一種較好的游戲體驗,并制作完成三級項目心得感受:大部分是老師上課講過的,還有一些運用得不是很好,以及一些自己通過網絡,書籍來獲取的知識,當然更多的知識是陌生的,需要自己去查找,去學習,來達到學以致用的目的。下一步工作:程序仍然存在缺陷,缺少背景音樂與華麗的界面,這些問題待解決 五、項目鏈接

這個文檔描述的版本是這個:C#-PuinPhoto_jb51.rar

還有下面這個是我閑著沒事用一種極其簡單的思想做的:C#-pintu_jb51.rar

到此這篇關于C# 拼圖游戲的實戰(zhàn)(附demo)的文章就介紹到這了,更多相關C# 拼圖內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C#數據結構之順序表(SeqList)實例詳解

    C#數據結構之順序表(SeqList)實例詳解

    這篇文章主要介紹了C#數據結構之順序表(SeqList)實現(xiàn)方法,結合實例形式較為詳細的分析了順序表的定義、原理與具體實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • C#中@的用法總結

    C#中@的用法總結

    這篇文章主要介紹了C#中@的用法總結,非常重要的用法總結,需要的朋友可以參考下
    2014-08-08
  • C#實現(xiàn)為視頻添加水印

    C#實現(xiàn)為視頻添加水印

    這篇文章主要為大家詳細介紹了C#如何使用ffmpeg命令,分別實現(xiàn)給視頻添加圖片水印以及文字水印,文中的示例代講解詳細,感興趣的可以了解一下
    2023-01-01
  • c# Base關鍵字的使用

    c# Base關鍵字的使用

    c# Base關鍵字的使用示例代碼,大家可以參考下用法。
    2009-07-07
  • VSCode調試C#程序及附缺失.dll文件的解決辦法

    VSCode調試C#程序及附缺失.dll文件的解決辦法

    這篇文章主要介紹了VSCode調試C#程序及附缺失.dll文件的解決辦法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • c# WinForm 窗體之間傳值的幾種方式(小結)

    c# WinForm 窗體之間傳值的幾種方式(小結)

    這篇文章主要介紹了WinForm 窗體之間傳值的幾種方式(小結),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • C#從文件流讀取xml文件到DataSet并顯示的方法

    C#從文件流讀取xml文件到DataSet并顯示的方法

    這篇文章主要介紹了C#從文件流讀取xml文件到DataSet并顯示的方法,實例分析了C#操作XML文件的技巧與DataSet的使用方法,需要的朋友可以參考下
    2015-04-04
  • c# WinForm制作圖片編輯工具(圖像拖動、縮放、旋轉、摳圖)

    c# WinForm制作圖片編輯工具(圖像拖動、縮放、旋轉、摳圖)

    這篇文章主要介紹了c# WinForm制作圖片編輯工具(可實現(xiàn)圖像拖動、縮放、旋轉、摳圖),幫助大家更好的理解和學習使用c#,感興趣的朋友可以了解下
    2021-03-03
  • WPF如何自定義ProgressBar滾動條樣式

    WPF如何自定義ProgressBar滾動條樣式

    這篇文章主要給大家介紹了關于WPF如何自定義ProgressBar滾動條樣式的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用WPF具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-06-06
  • .NET?Core使用C#掃描并讀取圖片中的文字

    .NET?Core使用C#掃描并讀取圖片中的文字

    本文詳細講解了.NET?Core使用C#掃描并讀取圖片中的文字,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-12-12

最新評論