Rumah  >  Artikel  >  Java  >  Bagaimana untuk melaksanakan fungsi shuffling dan berurusan mudah di Jawa

Bagaimana untuk melaksanakan fungsi shuffling dan berurusan mudah di Jawa

WBOY
WBOYke hadapan
2023-05-10 20:22:04980semak imbas

Idea Kod

Untuk menangani dan mengocok kad, kita perlu bermain kad terlebih dahulu Setiap kad yang berbeza sepadan dengan sut dan nombor yang berbeza Di sini kita perlu mengabstrakkan sepasang objek kad permainan, dan kemudian Kepada kocok kad, kami kocok secara rawak susunan kad bermain, dan kemudian berurusan dengan kad Semua orang mengedarkan bilangan kad permainan yang sama.

Pelaksanaan kod

Kami mencipta pakej Poker di sini untuk membungkus kelas berkaitan poker kami. Cipta tiga fail Java dalam pakej Poker: fail Poker digunakan untuk menjana kad permainan, termasuk sut dan mata fail digunakan untuk melaksanakan fungsi mencipta satu set kad permainan, kocok dan kad transaksi; digunakan oleh kami Diuji.

Fail Java Poker mengabstraksi kad bermain

package poker;

public class Poker {

//扑克牌的点数
    private int rank;
//扑克牌的花色
    private String suit;

//创建构造方法
    public Poker(int rank, String suit) {
        this.rank = rank;
        this.suit = suit;
    }

//以下这些方法我们今天暂时用不上
    public int getRank() {
        return rank;
    }

    public void setRank(int rank) {
        this.rank = rank;
    }

    public String getSuit() {
        return suit;
    }

//重写toString方法
    @Override
    public String toString() {
        return "{ "+rank+" "+suit+"}";
    }
}

Fail Java Permainan melaksanakan fungsi mengocok dan berurusan kad

Mencipta pembolehubah ahli untuk menyimpan tatasusunan rentetan sut

Warna ini tidak boleh ditukar dan hanya boleh digunakan dalam kelas semasa, jadi kami terus menggunakan
pengubahsuaian akhir statik peribadi untuk memastikan keselamatan.

private static final String[] suit = {"♥","♣","♦","♠"};

Buat dek bermain kad

Kami menggunakan tatasusunan untuk menyimpan kad permainan

public List<Poker> buyPoker() {
        List<Poker> pokers = new ArrayList<>();
        for (int i = 0; i < 4; i++) {
            for (int j = 1; j <=13 ; j++) {
                Poker poker = new Poker(j,suit[i]);
                pokers.add(poker);
            }
        }
        return pokers;
    }

Gunakan Ujian untuk melihat sama ada penciptaan itu berjaya apabila menulis kod Mempunyai tabiat menguji semasa menulis supaya kesilapan dapat ditemui dalam masa.

public class Test {
    public static void main(String[] args) {
        Game game = new Game();
        List<Poker> poker = game.buyPoker();
    }
}

Bagaimana untuk melaksanakan fungsi shuffling dan berurusan mudah di Jawa

Shuffle

	public void shuffle(List<Poker> poker) {
        for (int i = poker.size()-1; i > 0 ; i--) {
            Random random = new Random();
            int index = random.nextInt(i);
            swap(poker,i,index);
        }
    }
    
//创建私有方法来实现交换
	private void swap(List<Poker> pokers,int i,int j) {
        Poker tmp = pokers.get(i);
        pokers.set(i,pokers.get(j));
        pokers.set(j,tmp);
    }

Begitu juga, mari kita buat ujian.

Bagaimana untuk melaksanakan fungsi shuffling dan berurusan mudah di Jawa

Kita dapat lihat: Fungsi shuffling kami telah dilaksanakan, dan susunan kad permainan yang dijana adalah berbeza setiap kali.

Menguruskan kad

Di sini kami mencipta tatasusunan dua dimensi untuk menyimpan tangan tiga pemain.

public List<List<Poker>> game(List<Poker> pokers) {
        List<List<Poker>> hand = new ArrayList<>();
        List<Poker> hand1 = new ArrayList<>();
        List<Poker> hand2 = new ArrayList<>();
        List<Poker> hand3 = new ArrayList<>();
        hand.add(hand1);
        hand.add(hand2);
        hand.add(hand3);

        for (int i = 0; i < 3; i++) {
        //我们这里测试每人分发五张
            for (int j = 0; j < 5; j++) {
//我们默认每次从下标为0的位置分发,并且分发一次就移除这个下表为0的扑克牌,
//移除之后,它后面的数字也会自动补齐到0位置
                Poker tmp = pokers.remove(0);
                hand.get(i).add(tmp);
            }
        }
        return hand;
    }

Pelaksanaan fungsi keseluruhan

Poker.java

public class Poker {
    private int rank;
    private String suit;

    public Poker(int rank, String suit) {
        this.rank = rank;
        this.suit = suit;
    }

    public int getRank() {
        return rank;
    }

    public void setRank(int rank) {
        this.rank = rank;
    }

    public String getSuit() {
        return suit;
    }

    @Override
    public String toString() {
        return "{ "+rank+" "+suit+"}";
    }
}

Game.java

import java.util.ArrayList;
import java.util.List;
import java.util.Random;


public class Game {
    private static final String[] suit = {"♥","♣","♦","♠"};
    public List<Poker> buyPoker() {
        List<Poker> pokers = new ArrayList<>();
        for (int i = 0; i < 4; i++) {
            for (int j = 1; j <=13 ; j++) {
                Poker poker = new Poker(j,suit[i]);
                pokers.add(poker);
            }
        }
        return pokers;
    }

    //洗牌
    public void shuffle(List poker) {
        for (int i = poker.size()-1; i > 0 ; i--) {
            Random random = new Random();
            int index = random.nextInt(i);
            swap(poker,i,index);
        }
    }

    private void swap(List pokers,int i,int j) {
        Poker tmp = pokers.get(i);
        pokers.set(i,pokers.get(j));
        pokers.set(j,tmp);
    }

    public List> game(List pokers) {
        List> hand = new ArrayList<>();
        List hand1 = new ArrayList<>();
        List hand2 = new ArrayList<>();
        List hand3 = new ArrayList<>();
        hand.add(hand1);
        hand.add(hand2);
        hand.add(hand3);

        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 5; j++) {
                Poker tmp = pokers.remove(0);
                hand.get(i).add(tmp);
            }
        }
        return hand;
    }
}

Test.java

public class Test {
    public static void main(String[] args) {
        Game game = new Game();
        List<Poker> poker = game.buyPoker();
        System.out.println(poker);
        game.shuffle(poker);
        System.out.println(poker);
        List<List<Poker>> hand = game.game(poker);
        for (int i = 0; i < hand.size(); i++) {
            System.out.println("第"+(i+1)+"个人的牌"+hand.get(i));
        }
        System.out.println("剩下的牌");
        System.out.println(poker);
    }
}

Bagaimana untuk melaksanakan fungsi shuffling dan berurusan mudah di Jawa

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan fungsi shuffling dan berurusan mudah di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam