当前位置: 首页 > 编程笔记 >

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

赵雅懿
2023-03-14
本文向大家介绍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#程序设计有所帮助。

 类似资料:
  • 本文向大家介绍C语言数组入门之数组的声明与二维数组的模拟,包括了C语言数组入门之数组的声明与二维数组的模拟的使用技巧和注意事项,需要的朋友参考一下 语言中指针与数组这两个概念之间的联系是密不可分的,以至于如果不能理解一个概念,就无法彻底理解另一个概念。 C语言中的数组值得注意的地方有以下两点: C语言中只有一维数组,而且数组的大小必须在编译期就作为一个常数确定下来。然而,C语言中数组的元素可以是任

  • 主要内容:二维数组的初始化(赋值)上节讲解的数组可以看作是一行连续的数据,只有一个下标,称为 一维数组。在实际问题中有很多数据是二维的或多维的,因此C语言允许构造多维数组。多维数组元素有多个下标,以确定它在数组中的位置。本节只介绍 二维数组,多维数组可由二维数组类推而得到。 二维数组的定义 二维数组定义的一般形式是: 其中,dataType 为数据类型,arrayName 为数组名,length1 为第一维下标的长度,length

  • 本文向大家介绍详解C++中的一维数组和二维数组,包括了详解C++中的一维数组和二维数组的使用技巧和注意事项,需要的朋友参考一下 C++一维数组 定义一维数组 定义一维数组的一般格式为:     类型标识符  数组名[常量表达式]; 例如: 它表示数组名为a,此数组为整型,有10个元素。 关于一维数组的几点说明: 1) 数组名定名规则和变量名相同,遵循标识符定名规则。 2) 用方括号括起来的常量表达

  • 本文向大家介绍C#二维数组基本用法实例,包括了C#二维数组基本用法实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#二维数组基本用法。分享给大家供大家参考,具体如下: 据说这种形式的C#二维数组叫做锯齿数组, 一段例子以供参考: 希望本文所述对大家C#程序设计有所帮助。

  • 受到这个问题的启发。我创建了这个函数: 不幸的是,它不起作用。为什么?是否可以用C返回一个指向二维数组的指针,并使用上面的方法保留[][]符号?如果不是,原因何在?我在这里遗漏了什么? 我知道通过创建外部数组,通过引用将其传递给函数,可以解决这个问题。但是它有点难看,我想把所有的东西都封装在一个函数中。

  • 我的任务是用C#为二维数组创建合并排序算法。数组看起来像这样 我需要从文件中取数组并按x的升序对行进行排序,同时程序要检查是否有相同x值同时不同Y值的坐标对,当数组排序后,程序要将其写入文件中。我已经为一维数组创建了算法,但是不懂如何为二维数组重写算法,这是我的代码,请帮助我