C#使用二维数组模拟斗地主

 更新时间:2015年04月21日 12:15:31   作者:森林森  
这篇文章主要介绍了C#使用二维数组模拟斗地主的方法,通过C#的二维数组简单实现扑克随机发牌的功能,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了C#使用二维数组模拟斗地主的方法。分享给大家供大家参考。具体如下:

package com.pb.demo;
import java.util.Arrays;
import java.util.Random;
/**
 * 扑克牌随机发牌♠♥♣♦ 二维数组实现
 * 
 */
public class Puker {
 public static void main(String[] args) {
  // 定义数组
  String[][] puker = new String[5][];
  puker[0] = new String[] { "♠A", "♠2", "♠3", "♠4", "♠5", "♠6", "♠7",
    "♠8", "♠9", "♠10", "♠J", "♠Q", "♠K" };
  puker[1] = new String[] { "♥A", "♥2", "♥3", "♥4", "♥5", "♥6", "♥7",
    "♥8", "♥9", "♥10", "♥J", "♥Q", "♥K" };
  puker[2] = new String[] { "♣A", "♣2", "♣3", "♣4", "♣5", "♣6", "♣7",
    "♣8", "♣9", "♣10", "♣J", "♣Q", "♣K" };
  puker[3] = new String[] { "♦A", "♦2", "♦3", "♦4", "♦5", "♦6", "♦7",
    "♦8", "♦9", "♦10", "♦J", "♦Q", "♦K" };
  puker[4] = new String[] { "大王", "小王" };
  // 定义3个玩家和底牌
  String[] player1 = new String[17];
  String[] player2 = new String[17];
  String[] player3 = new String[17];
  String[] temp = new String[3];
  // 二维数据洗牌
  Random random = new Random();
  int i1 = 0, i2 = 0, j1 = 0, j2 = 0;// 定义4个变量,用来存放数组的下标
  // 洗牌1000次
  for (int i = 0; i < 1000; i++) {
   // 下标i1等于,随机0~4的整数 一维的下标
   i1 = random.nextInt(5); // 0~4之间
   if (i1 == 4) {
    // 如果一维的下标是4,则2维的的元素只有2个大王和小王,只有2个元素
    j1 = random.nextInt(2);
   } else {
    // 如果不是4,则有13张牌
    j1 = random.nextInt(13); // 0~12 共13个元素
   }
   // 因为最短的数组是2个元素,所以要2次,如果是多个就要多次
   i2 = random.nextInt(5);
   if (i2 == 4) {
    j2 = random.nextInt(2);
   } else {
    j2 = random.nextInt(13);
   }
   // 开始洗牌
   String tmp = puker[i1][j1];
   puker[i1][j1] = puker[i2][j2]; // 洗牌法,交换,打乱顺序
   puker[i2][j2] = tmp;
  }
  // 洗牌后的牌
  System.out.println("===========洗牌后的顺序============");
  for (int i = 0; i < puker.length; i++) {
   for (int j = 0; j < puker[i].length; j++) {
    System.out.print(puker[i][j] + " ");
   }
  }
  // 开始发牌
  for (int i = 0; i < 54; i++) {
   int p = i % 3; // 定义发给哪个玩家
   int k = i / 3 - 1; // 定义轮次
   if (i < 3) {
    // 先扣下三张底牌
    temp[i] = puker[i / 13][i % 13]; // 从前向回取3张,估做底牌
   } else if (p == 0) {
    player1[k] = puker[i / 13][i % 13];
   } else if (p == 1) {
    player2[k] = puker[i / 13][i % 13];
   } else if (p == 2) {
    player3[k] = puker[i / 13][i % 13];
   }
  }
  System.out.println("\n==========发牌完成=============");
  // 玩家一
  System.out.println("玩家一" + Arrays.toString(player1));
  // 玩家二
  System.out.println("玩家二" + Arrays.toString(player2));
  // 玩家三
  System.out.println("玩家三" + Arrays.toString(player3));
  // 底牌
  System.out.println("底牌" + Arrays.toString(temp));
 }
}

希望本文所述对大家的C#程序设计有所帮助。

相关文章

  • 解决Unity项目中UI脚本丢失的问题

    解决Unity项目中UI脚本丢失的问题

    这篇文章主要介绍了解决Unity项目中UI脚本丢失的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • C#非矩形窗体实现方法

    C#非矩形窗体实现方法

    这篇文章主要介绍了C#非矩形窗体实现方法,涉及C#窗体操作的相关技巧,需要的朋友可以参考下
    2015-06-06
  • C#集合查询Linq在项目中使用详解

    C#集合查询Linq在项目中使用详解

    本文主要介绍了C#集合查询Linq在项目中使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • C# 获取 PC 序列号的方法示例

    C# 获取 PC 序列号的方法示例

    这篇文章主要介绍了C# 获取 PC 序列号的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • Unity实现简易日志输出功能

    Unity实现简易日志输出功能

    这篇文章主要为大家详细介绍了Unity实现简易日志输出功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • 解决C#中Linq GroupBy 和OrderBy失效的方法

    解决C#中Linq GroupBy 和OrderBy失效的方法

    最近发现了一个问题,在服务器端的Linq GroupBy 和OrderBy居然不管用,后来终于解决了所以现在分享给大家,有需要的朋友们可以参考借鉴。
    2016-09-09
  • C# Onnx实现轻量实时的M-LSD直线检测

    C# Onnx实现轻量实时的M-LSD直线检测

    这篇文章主要为大家详细介绍了C#如何结合Onnx实现轻量实时的M-LSD直线检测,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-11-11
  • C# WPF数据绑定模板化操作的完整步骤

    C# WPF数据绑定模板化操作的完整步骤

    WPF中的数据绑定提供了很强大的功能,与普通的WinForm程序相比,其绑定功能为我们提供了很多便利,下面这篇文章主要给大家介绍了关于C# WPF数据绑定模板化操作的完整步骤,需要的朋友可以参考下
    2022-01-01
  • 详解C#如何对ListBox控件中的数据进行操作

    详解C#如何对ListBox控件中的数据进行操作

    这篇文章主要为大家详细介绍了C#中对ListBox控件中的数据进行的操作,主要包括添加、删除、清空、选择、排序等,感兴趣的小伙伴可以了解下
    2024-03-03
  • C#实现网页画图功能

    C#实现网页画图功能

    这篇文章主要为大家详细介绍了C#实现网页画图功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03

最新评论