你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 图形图象处理与游戏编程
C#实现拼图游戏(三)
 

知道了上面的原理,可以在开始的时候让电脑自动产生打乱路径:设定初始是0区域(没有图片),所以从0开始随机的选择他周边(14)之一进行交换,如选择4 ,则下次从4的周围开始选择(058)之一,如选择5 ,则下次从5的周围选择(1469)之一,依次n次,就打乱图片了,效果如图6

 


图(6)打乱效果

这里的n越大,图片就打乱了越严重,但是上面的方法在设计的时候要小心,因为里面有些打乱没有意义,假定在图4和图5中:1开始选择55接着又选择了1,这样第一次和第二次的交换合起来就是无用的,所以这里将之更改如下:如1选择了5 ,则下次5只能从(469)中选择,排除了上次选择5区域的1区域 ,如图7

01

15

22

33

44

5-1

66

77

88

99

1010

1111

1212

1313

1414

1515

7 15交换后,5就不能再和1交换

当玩家每次交换图片格内的图片进行排序(只能将空白图格和其紧靠的交换)时,数组b里面的数据就变化了,此时判断下a数组和b数组的元素是否完全相同,如果相同,就表明图片已经还原了,拼图成功了。

四、实现

1.   设定游戏模式

在玩游戏的时候根据自己的要求,可以选择四格,和十六格,也可以根据自己的实际能力选择游戏的难度:简单、中等困难,这里只写出了原理及部分代码,具体可查看源代码。

public static  int modeselect= 16;        //定义选择的模式(16或者4  默认情况下是16

public  static   string degree = "simple";//  标记游戏难度

int grade = 15;                           //图片打乱次数                    

   //选择图片模式:为16个格子

     private void sixteenselect_Click(object sender, EventArgs e)

        {

            if (!sixteenselect.Checked)

            {

                fourselect.Checked = false;

                sixteenselect.Checked = true;

            }

            modeselect = 16;                              

   }

  //选择图片模式:为四个格子

        private void fourselect_Click(object sender, EventArgs e)

        {

            if (!fourselect.Checked)

            {

                fourselect.Checked = true;

                sixteenselect.Checked = false;

            }

            modeselect = 4;                                   

 }

     private void simple_Click(object sender, EventArgs e) //设置难度为简单

        {

            if (!simple.Checked)

            {

                simple.Checked = true;

                middle.Checked = false;

                hard.Checked = false;

            }

            if (modeselect == 4)

            {

                grade = 2;                              //设定图片序列打乱次数

            }

            else

            {

                grade = 15;

            }

            degree = "simple";

        }

        private void middle_Click(object sender, EventArgs e) //设置难度为中等

        {

          if (!middle.Checked)

            {

                simple.Checked = false;

                middle.Checked = true;

                hard.Checked = false;

            }

            if (modeselect == 4)

            {

                grade = 3;                            //设定图片序列打乱次数

            }

            else

            {

                grade = 30;

            }

degree = "normal";

        }

        private void hard_Click(object sender, EventArgs e) //设置难度为困难

        {

         f (!hard.Checked)

            {

                hard.Checked = true;

                middle.Checked = false;

                simple.Checked = false;

            }

            if (modeselect == 4)                 //设定图片序列打乱次数

            {

                grade = 4;

            }

            else

            {

                grade = 50;   

            }

degree = "hard";

  }

  推荐精品文章

·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089