C#使用二維數(shù)組模擬斗地主
更新時(shí)間:2015年04月21日 12:15:31 作者:森林森
這篇文章主要介紹了C#使用二維數(shù)組模擬斗地主的方法,通過C#的二維數(shù)組簡(jiǎn)單實(shí)現(xiàn)撲克隨機(jī)發(fā)牌的功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
本文實(shí)例講述了C#使用二維數(shù)組模擬斗地主的方法。分享給大家供大家參考。具體如下:
package com.pb.demo;
import java.util.Arrays;
import java.util.Random;
/**
* 撲克牌隨機(jī)發(fā)牌♠♥♣♦ 二維數(shù)組實(shí)現(xiàn)
*
*/
public class Puker {
public static void main(String[] args) {
// 定義數(shù)組
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個(gè)玩家和底牌
String[] player1 = new String[17];
String[] player2 = new String[17];
String[] player3 = new String[17];
String[] temp = new String[3];
// 二維數(shù)據(jù)洗牌
Random random = new Random();
int i1 = 0, i2 = 0, j1 = 0, j2 = 0;// 定義4個(gè)變量,用來存放數(shù)組的下標(biāo)
// 洗牌1000次
for (int i = 0; i < 1000; i++) {
// 下標(biāo)i1等于,隨機(jī)0~4的整數(shù) 一維的下標(biāo)
i1 = random.nextInt(5); // 0~4之間
if (i1 == 4) {
// 如果一維的下標(biāo)是4,則2維的的元素只有2個(gè)大王和小王,只有2個(gè)元素
j1 = random.nextInt(2);
} else {
// 如果不是4,則有13張牌
j1 = random.nextInt(13); // 0~12 共13個(gè)元素
}
// 因?yàn)樽疃痰臄?shù)組是2個(gè)元素,所以要2次,如果是多個(gè)就要多次
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] + " ");
}
}
// 開始發(fā)牌
for (int i = 0; i < 54; i++) {
int p = i % 3; // 定義發(fā)給哪個(gè)玩家
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==========發(fā)牌完成=============");
// 玩家一
System.out.println("玩家一" + Arrays.toString(player1));
// 玩家二
System.out.println("玩家二" + Arrays.toString(player2));
// 玩家三
System.out.println("玩家三" + Arrays.toString(player3));
// 底牌
System.out.println("底牌" + Arrays.toString(temp));
}
}
希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。
相關(guān)文章
Unity實(shí)現(xiàn)簡(jiǎn)易日志輸出功能
這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)簡(jiǎn)易日志輸出功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09
解決C#中Linq GroupBy 和OrderBy失效的方法
最近發(fā)現(xiàn)了一個(gè)問題,在服務(wù)器端的Linq GroupBy 和OrderBy居然不管用,后來終于解決了所以現(xiàn)在分享給大家,有需要的朋友們可以參考借鑒。2016-09-09
C# Onnx實(shí)現(xiàn)輕量實(shí)時(shí)的M-LSD直線檢測(cè)
這篇文章主要為大家詳細(xì)介紹了C#如何結(jié)合Onnx實(shí)現(xiàn)輕量實(shí)時(shí)的M-LSD直線檢測(cè),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-11-11
詳解C#如何對(duì)ListBox控件中的數(shù)據(jù)進(jìn)行操作
這篇文章主要為大家詳細(xì)介紹了C#中對(duì)ListBox控件中的數(shù)據(jù)進(jìn)行的操作,主要包括添加、刪除、清空、選擇、排序等,感興趣的小伙伴可以了解下2024-03-03

