当前位置: 移动技术网 > IT编程>开发语言>c# > C#实现洗牌游戏实例

C#实现洗牌游戏实例

2019年07月18日  | 移动技术网IT编程  | 我要评论
棋牌类游戏是目前比较火的游戏之一。今天本文就以实例形式实现洗牌游戏。本文实例所采用的算法是:遍历每个位置上的牌,然后与随机位置上的牌交换。 运行结果如下图所示: 对

棋牌类游戏是目前比较火的游戏之一。今天本文就以实例形式实现洗牌游戏。本文实例所采用的算法是:遍历每个位置上的牌,然后与随机位置上的牌交换。

运行结果如下图所示:

对于牌来讲,2个关键的因素是面值和类型(如红桃、梅花等)。

代码如下:

public class card
{
  private string mianzhi;
  private string leixin;
  public card(string m, string l)
  {
    mianzhi = m;
    leixin = l;
  }
  public override string tostring()
  {
    return leixin + " " + mianzhi;
  }
}

客户端程序有3个方法,一个是初始化牌的数组,一个是遍历所有牌并显示,还有一个是使用算法洗牌。

具体实现代码如下:

class program
{
  private static card[] allcards = new card[52];
  private static string[] ms = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "j", "q", "k" };
  private static string[] ls = { "红桃", "方块", "梅花", "黑桃" };
  static void main(string[] args)
  {
    init();
    showallcards();
    console.writeline("\r\n");
    shuffle();
    showallcards();
    console.readkey();
  }
  private static void shuffle()
  {
    random r = new random();
    card tempcard;
    //依次遍历所有牌与随机位置上的牌交换位置
    for (int i = 0; i < allcards.length; i++)
    {
      int ran = r.next(52);
      tempcard = allcards[i];
      allcards[i] = allcards[ran];
      allcards[ran] = tempcard;
    }
  }
  private static void init()
  {
    for (int i = 0; i < allcards.length; i++)
    {
      allcards[i] = new card(ms[i % 13],ls[i%4]);
    }
  }
  private static void showallcards()
  {
    foreach (var item in allcards)
    {
      console.write(item.tostring() + " ");
    }
  }
}

希望本文所述实例对大家的算法学习能有所帮助。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网