C# 拼图魔方小游戏

工作闲暇之余去逛了逛CodeProject,刚好现有项目主要用到就是winform,浏览了下照片,找到上周带着蛋挞打疫苗回家的照片,于是新生一记,如何把这些图片玩起来~

80后应该都有印象,小时候有种玩具,叫做拼图魔方,90后00后的世界这种玩具应该早已灭绝了。一个塑料小板,上面分隔了很多小图框,通过移动这些小图框,最后拼接成完整的图片

话不多说开始吧~ 先上一张原图

代码也很简单,主要就是通过BitMap分隔现有(后面有时间可以优化下,让玩家自动上传图片,应该会更有意思)图片,然后Random随机打乱分割后图片的顺序,通过点击小方格来完成图片的拼图,为了更方便玩家,每个小方格添加了序号,玩家也可以不参考原图,按照小方格上的序号进行拼图

序号功能实现主要是类MyButton集成父类Button实现:

public class MyButton : Button
  {
    private int number;
    public int Number
    {
      get
      {
        return this.number;
      }
      set
      {
        this.Text = value.ToString();
        this.number = value;
      }
    }
    public MyButton()
    {
    }
  }

随机分隔

Random r = new Random();
      int[] a = new int[24];
      int i = 0;
      int b;
      bool exist;
      while (i != a.Length)
      {
        exist = false;
        b = (r.Next(24) + 1);
        for (int j = 0; j < a.Length; j++)
          if (a[j] == b) exist = true;
        if (!exist) a[i++] = b;
      }
      for (int j = 0; j < a.Length; j++)
        ButtonArray[j].Number = a[j];
      // set picture pieces as the background image
      int Number;
      int Row, Column;
      for (int k = 0; k < 5; k++)
      {
        for (int j = 0; j < 5; j++)
        {
          if (k == 4)
            if (j == 4) break;
          Number = ButtonArray[k * 5 + j].Number; //Get The Number Of Button
          Row = (Number - 1) / 5;
          Column = (Number - 1) - (Row * 5);
          ButtonArray[k * 5 + j].Image = CurrentBitmapImage.Clone(new Rectangle(new Point(Column * 75, Row * 75), new Size(75, 75)), System.Drawing.Imaging.PixelFormat.DontCare);
        }
      }

点击小方格,通过改变当前点击的小方格X,Y坐标来更新小方格的位置

private void myButton_LocationChanged(object sender, EventArgs e)
    {
      MyButton A = sender as MyButton;
      YouWin = true;
      int ButtonNumber;
      this.NumberOfMoves++;
      if (ButtonArray == null)
      {
        this.FrmMain_Load(sender, e);
      }
      for (int i = 0; i < 5; i++)
      {
        if (YouWin == false)
          break;
        else for (int j = 0; j < 5; j++)
          {
            ButtonNumber = i * 5 + j;
            if (i == 4 && j == 4)
              break;
            else if (GetNumber(ButtonArray[ButtonNumber].Location.X, ButtonArray[ButtonNumber].Location.Y) == ButtonArray[ButtonNumber].Number)
              continue;
            else
            {
              YouWin = false;
              break;
            }
          }
      }
      if (YouWin)
      {

        if (MessageBox.Show("You Win This Game in " + this.NumberOfMoves.ToString() + " Moves\n\rDo You Want To Play Another Game ?", "Congratulation", MessageBoxButtons.YesNo) == DialogResult.Yes)
          this.LoadNewGame();
        else
          this.Close();
      }
    }
private void myButton_LocationChanged(object sender, EventArgs e)
    {
      MyButton A = sender as MyButton;
      YouWin = true;
      int ButtonNumber;
      this.NumberOfMoves++;
      if (ButtonArray == null)
      {
        this.FrmMain_Load(sender, e);
      }
      for (int i = 0; i < 5; i++)
      {
        if (YouWin == false)
          break;
        else for (int j = 0; j < 5; j++)
          {
            ButtonNumber = i * 5 + j;
            if (i == 4 && j == 4)
              break;
            else if (GetNumber(ButtonArray[ButtonNumber].Location.X, ButtonArray[ButtonNumber].Location.Y) == ButtonArray[ButtonNumber].Number)
              continue;
            else
            {
              YouWin = false;
              break;
            }
          }
      }
      if (YouWin)
      {

        if (MessageBox.Show("You Win This Game in " + this.NumberOfMoves.ToString() + " Moves\n\rDo You Want To Play Another Game ?", "Congratulation", MessageBoxButtons.YesNo) == DialogResult.Yes)
          this.LoadNewGame();
        else
          this.Close();
      }
    }

具体效果如下:

代码有很多已知的可以优化的地方,后面有闲暇时间会处理,如果大家有更好的建议,不妨在下方评论区告知,在此感谢~

【点击下载源码】

到此这篇关于C# 拼图魔方小游戏的文章就介绍到这了,更多相关C# 拼图魔方内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C#拼图游戏编写代码(2)

    前言:在C#拼图游戏编写代码程序设计 之 C#实现<拼图游戏>(上),上传了各模块代码,而在本文中将详细剖析原理,使读者更容易理解并学习,程序有诸多问题,欢迎指出,共同学习成长! 正文: 拼图是一个非常经典的游戏,基本每个人都知道他的玩法,他的开始,运行,结束.那么,当我们想要做拼图的时候如何入手呢?答案是:从现实出发,去描述需求(尽量描述为文档),当我们拥有了全面的需求,就能够提供可靠的策略,从而在代码中实现,最终成为作品! (一)需求: (这个需求书写较为潦草,为广大小白定制,按照最最最普

  • C#拼图游戏编写代码

    本文设计了C#拼图游戏程序,供大家参考,具体内容如下 功能描述: 1.用户自定义上传图片 2.游戏难度选择:简单(3*3).一般(5*5).困难(9*9)三个级别 3.纪录完成步数 模块: 1.拼图类 2.配置类 3.游戏菜单窗口 4.游戏运行窗口 代码文件VS2013版本: 下载链接: 拼图游戏 --------------------------------------------------我叫分割线---------------------------------------------

  • C#利用控件拖拽技术制作拼图游戏

    主要实现的功能: 1.程序附带多张拼图随机拼图. 2.可手动添加拼图. 3.游戏成功判断. 4.30秒超时判断. Puzzle.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms

  • C# 拼图魔方小游戏

    工作闲暇之余去逛了逛CodeProject,刚好现有项目主要用到就是winform,浏览了下照片,找到上周带着蛋挞打疫苗回家的照片,于是新生一记,如何把这些图片玩起来~ 80后应该都有印象,小时候有种玩具,叫做拼图魔方,90后00后的世界这种玩具应该早已灭绝了.一个塑料小板,上面分隔了很多小图框,通过移动这些小图框,最后拼接成完整的图片 话不多说开始吧~ 先上一张原图 代码也很简单,主要就是通过BitMap分隔现有(后面有时间可以优化下,让玩家自动上传图片,应该会更有意思)图片,然后Random

  • WPF实现魔方小游戏

    今天给大家带来的是一块用WPF 实现魔方的小游戏,先看一下效果图 代码如下,先写一个类,用来判断是否可以移动 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace _0705 { class ClassWay { public ClassWay(int num) { if (num < 9 || (num > 17 && num < 2

  • 利用Vue.js制作一个拼图华容道小游戏

    目录 游戏介绍 核心思路 核心代码 html games 类 生成随机图片数量 移动图片 键盘事件 拼图完成 结语 游戏介绍 先看看界面 这是一个拼图游戏,可以自选难度和自选闯关图片 游戏开始后根据不同难度,生成与所选主图 对应的 不同张数的 随机顺序的小图,然后只要把乱序的小图片还原成完整的图片就闯关成功 游戏区域有一个空白位置,可以用鼠标点击空白位相邻的图片完成替换,也就是移动,也可以用键盘上下左右操作 游戏好玩,可不要贪杯哦,学习也不能落下,不管什么游戏都一样 这个虽然用到的技术很一般很简

  • OpenCV Python实现拼图小游戏

    基于OpenCV实现拼图版小游戏,供大家参考,具体内容如下 效果展示 实现 思路 1.对图像进行分割,分割成m*n个子图 2.打乱子图的顺序 3.将子图重新组成一幅新的图片并显示 4.添加鼠标点击响应动作,交换鼠标依次点击的两张图的位置 5.每次交换后,判断是否与原图是否一致 python代码 import cv2 as cv import numpy import random import math src = cv.imread("D:\\CvPic\\1.jpg") print

  • 使用vue.js编写蓝色拼图小游戏

    之前在网上看到<蓝色拼图>这款小游戏,作者是用jquery写的.于是便考虑能不能用vue.js优雅简单的编写出来呢? Later equals never!说干就干.首先理解游戏的规则:第一关为1*1的方块,第二关为2*2以此类推 该图为第三关3*3的方块.点击一个小方块,该方块和它相邻的方块的的颜色会从黄色变为蓝色,全部变为蓝色就过关了. 现在规则清楚了,开动吧! /*style*/ .game_bg{ background: #333; width: 600px; height: 600p

  • jQuery实现拼图小游戏(实例讲解)

    小熊维尼拼图 jQuery代码实现拼图小游戏,鼠标选中拼块,用上下左右键移动拼块. html代码 <div id="box-div"> <!--走不通时的提示!--> <div id="tips"> <p>\(╯-╰)/ 哎呦,走不通啦!</p> </div> <div id="container"> <div class="row"&g

  • Android实现拼图小游戏

    本文实例为大家分享了Android实现拼图小游戏的具体代码,供大家参考,具体内容如下 目标效果: 1.activity_main.xml页面: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schem

  • Android自定义View实现拼图小游戏

    本文实例为大家分享了Android拼图小游戏的具体代码,供大家参考,具体内容如下 1.效果图: 运行时: 结束时: 2.PuzzleLayoutView: public class PuzzleLayoutView extends RelativeLayout implements View.OnClickListener { //表示将其切成2*2拼图(默认4块) private int mColumn = 2; //容器的内边距 private int mPadding; //每个块块的边距

  • 基于jquery实现九宫格拼图小游戏

    九宫格拼图小游戏是小时候比较常见的小游戏之一.闲着无聊就用js简单写了一个. 游戏的玩法很简单.九宫格中有八个小图片.随机打乱之后,将八张小图片拼接成一个完整的图. html代码 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <style> body{ border: 0; } .out{ width: 606px; height: 606px; margin: 0 aut

  • java实现拼图小游戏

    一个简单的拼图小游戏,供大家参考,具体内容如下 1.首先设计视图面板. 2.添加所需要的图片按钮. 3.最主要的是设计监听事件,添加图片的监听按钮,设定移动空白图片周围的按钮. 4.判断是否成功 . package sxy; import java.awt.Choice; import java.awt.Image; import java.awt.Toolkit; import java.awt.event.MouseAdapter; import java.awt.event.MouseEv

随机推荐