[索引页]
[源码下载]


游戏人生Silverlight(4) - 连连看[Silverlight 2.0(c#)]



作者:webabcd


介绍
使用 Silverlight 2.0(c#) 开发一个连连看游戏


玩法
用鼠标左键选中卡片,如果选中的两卡片间的连线不多于 3 根直线,则选中的两卡片可消除


在线DEMO
游戏人生Silverlight(4) - 连连看[Silverlight 2.0(c#)]


思路
1、卡片初始排列算法:已知容器容量为 x, 不重复的卡片数量为 y, x >= y && x % 2 == 0, 首先在容器内随机排列卡片,然后取出容器内相同的卡片个数为奇数的集合(集合内成员数量必为偶数个),最后将该集合一刀切,将集合右半部分的卡片的依次复制到集合左半部分。以上算法保证了在一定随机率的基础上,不会出现相同的卡片个数为奇数的情况
2、无解算法和重排算法:在容器内存在的卡片中,两两计算是否存在可消路径,如果没有就是无解,需要重排。重排时,需要得到现存的卡片集合和卡片位置集合,在卡片集合中随机取卡片(取出一个,原集合就要移除这一个),然后依次放到卡片位置集合内,从而达到将现存卡片重新排列的目的
3、两点消去路径的算法以及取最优消去路径的算法:取玩家选的第一点的 x 轴方向和 y 轴方向上的所有无占位符的坐标集合(包括自己),名称分别为 x1s, y1s;取玩家选的第二点的 x 轴方向和 y 轴方向上的所有无占位符的坐标集合(包括自己),名称分别为 x2s, y2s。先在 x1s 和 x2s 中找 x 坐标相等的两点,然后找出该两点与玩家选的两点可组成一条连续的直线的集合,该集合就是可消路径的集合,之后同理再在 y1s 和 y2s 中找到可消路径的集合。两集合合并就是玩家选中的两点间的所有可消路径的集合,该集合为空则两点不可消,该集合内的最短路径则为最优消去路径,集合内的 4 点连接线则为消去路径的连接线
4、游戏使用MVVM(Model - View - ViewModel)模式开发


关键代码
Core.cs

游戏人生Silverlight(4) - 连连看[Silverlight 2.0(c#)]using System;
游戏人生Silverlight(4) - 连连看[Silverlight 2.0(c#)]
using System.Net;
游戏人生Silverlight(4) - 连连看[Silverlight 2.0(c#)]
using System.Windows;
游戏人生Silverlight(4) - 连连看[Silverlight 2.0(c#)]
using System.Windows.Controls;
游戏人生Silverlight(4) - 连连看[Silverlight 2.0(c#)]
using System.Windows.Documents;
游戏人生Silverlight(4) - 连连看[Silverlight 2.0(c#)]
using System.Windows.Ink;
游戏人生Silverlight(4) - 连连看[Silverlight 2.0(c#)]
using System.Windows.Input;
游戏人生Silverlight(4) - 连连看[Silverlight 2.0(c#)]
using System.Windows.Media;
游戏人生Silverlight(4) - 连连看[Silverlight 2.0(c#)]
using System.Windows.Media.Animation;
游戏人生Silverlight(4) - 连连看[Silverlight 2.0(c#)]
using System.Windows.Shapes;
游戏人生Silverlight(4) - 连连看[Silverlight 2.0(c#)]
游戏人生Silverlight(4) - 连连看[Silverlight 2.0(c#)]
using YYMatch.Models;
游戏人生Silverlight(4) - 连连看[Silverlight 2.0(c#)]
using System.Collections.ObjectModel;
游戏人生Silverlight(4) - 连连看[Silverlight 2.0(c#)]
using System.Linq;
游戏人生Silverlight(4) - 连连看[Silverlight 2.0(c#)]
using System.Collections.Generic;
游戏人生Silverlight(4) - 连连看[Silverlight 2.0(c#)]
using System.ComponentModel;
游戏人生Silverlight(4) - 连连看[Silverlight 2.0(c#)]
using System.Threading;
游戏人生Silverlight(4) - 连连看[Silverlight 2.0(c#)]
游戏人生Silverlight(4) - 连连看[Silverlight 2.0(c#)]
namespace YYMatch.ViewModels



OK
[源码下载]

相关文章:

  • 2022-12-23
  • 2021-07-23
  • 2021-11-25
  • 2021-08-23
  • 2022-01-14
  • 2021-09-20
  • 2021-10-29
  • 2022-12-23
猜你喜欢
  • 2021-07-18
  • 2021-10-15
  • 2021-12-19
  • 2022-02-19
  • 2022-02-27
  • 2021-12-25
相关资源
相似解决方案