当前位置:编程学习 > JAVA >>

新学JAVA,求大哥们帮写一下发牌程序。。。

--------------------编程问答-------------------- 我喜欢先洗牌 然后按顺序发 --------------------编程问答-------------------- 随机一个0-51的数字,不能重复。
0-51对应某一张牌。

从图中看,还是有序的啊。 --------------------编程问答--------------------
import java.util.Random;

public class Poker {
public static void main(String args[]) throws Exception {
Random random = new Random();
int[] poker = getPoker();
int j = 0;
int temp =0;
for (int i = 0; i < 52; i++) {
temp = poker[i];
j = random.nextInt(52);
poker[i] = poker[j];
poker[j] = temp;
}
String A = "A:";
String B = "B:";
String C = "C:";
String D = "D:";
for(int i = 0;i<52 ;i++){
if(i%4==0){
A+=getColor(poker[i])+format(poker[i]%13)+"\t";
}
if(i%4==1){
B+=getColor(poker[i])+format(poker[i]%13)+"\t";
}
if(i%4==2){
C+=getColor(poker[i])+format(poker[i]%13)+"\t";
}
if(i%4==3){
D+=getColor(poker[i])+format(poker[i]%13)+"\t";
}
}
System.out.println(A);
System.out.println(B);
System.out.println(C);
System.out.println(D);

}

public static String getColor(int i ){
if((i-1)/13==0){
return "红桃:";
}else if((i-1)/13==1){
return "黑桃:";
}else if((i-1)/13==2){
return "方块:";
}else{
return "梅花:";
}
}

public static String format(int i ){
if(i==11){
return "J";
}else if(i==12){
return "Q";
}else if (i == 0){
return "K";
}else{
return String.valueOf(i);
}
}

public static int[] getPoker() {
int[] poker = new int[52];
for (int i = 0; i < 52; i++) {
poker[i] = i + 1;
}
return poker;
}
}

--------------------编程问答-------------------- http://www.java3z.com/cwbwebhome/article/article5/5579.html?id=885这个好 --------------------编程问答-------------------- 每天回帖即可获得10分可用分!小技巧: --------------------编程问答-------------------- 汗..还有问这样问题的~ ~ --------------------编程问答-------------------- 好难啊 --------------------编程问答-------------------- 不知道可以不

/*
 * file: PlayPoker.java
 * class: PlayPoker
 *
 * description: 
 *
 * @author:  leisore
 * @version: V1.0.0
 */
package cn.leisore.daily._2010_06_21;

import java.lang.reflect.Array;
import java.util.Random;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;

import javax.swing.JTextArea;

public class PlayPoker {

    private Thread master = null;
    private Thread[] players = null;

    public PlayPoker(JTextArea[] text) {
        BlockingQueue<Integer>[] pokerQueues = (BlockingQueue<Integer>[]) Array
                .newInstance(BlockingQueue.class, 4);
        for (int i = 0; i < 4; i++) {
            pokerQueues[i] = new ArrayBlockingQueue<Integer>(13);
        }

        master = new Thread(new Master(pokerQueues));
        players = new Thread[4];
        for (int i = 0; i < 4; i++) {
            players[i] = new Thread(new Player(pokerQueues[i], text[i]));
        }
    }

    public void start() {
        master.start();
        for (Thread t : players) {
            t.start();
        }
    }

    public void stop() {
        master.interrupt();
        for (Thread t : players) {
            t.interrupt();
        }
    }

    public static void main(String[] args) {
        /*
         * PlayPoker p = new PlayPoker(); p.start();
         */
    }

    public static class Master implements Runnable {

        final int[] pokers = new int[52];
        final Random rand = new Random();
        final BlockingQueue<Integer>[] pokerQueues;

        Master(BlockingQueue<Integer>[] pokerQueue) {
            this.pokerQueues = pokerQueue;
            initPokers();
        }

        private void initPokers() {
            for (int i = 1; i < 53; i++) {
                pokers[i - 1] = i;
            }
        }

        private void swap(int i, int j) {
            int temp = pokers[i];
            pokers[i] = pokers[j];
            pokers[j] = temp;
        }

        private void washPoker() {
            for (int t = 0; t < 52; t++) {
                int i = Math.abs(rand.nextInt(52));
                int j = Math.abs(rand.nextInt(52));
                swap(i, j);
            }
        }

        private void sendPoker() {
            for (int t = 0; t < 52; t++) {
                try {
                    pokerQueues[t % 4].put(pokers[t]);
                    Thread.sleep(1 * 1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }

        public void run() {
            while (true) {
                washPoker();
                sendPoker();
            }
        }
    }

    public static class Player implements Runnable {

        static int idCounter = 0;
        int id = idCounter++;
        int pokerCount = 0;
        final int[] pokers = new int[13];
        final BlockingQueue<Integer> pokerQueue;
        final private JTextArea textarea;

        Player(BlockingQueue<Integer> pokerQueue, JTextArea textarea) {
            this.pokerQueue = pokerQueue;
            this.textarea = textarea;
        }

        public void run() {
            try {
                while (true) {
                    int poker = pokerQueue.take();
                    Thread.sleep(1000);
                    pokers[pokerCount++ % 13] = poker;
                    textarea.append(poker + " ");
                    if (pokerCount % 8 == 0 || pokerCount % 13 == 0) {
                        textarea.append("\n");
                    }
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        
        public void replay() {
            textarea.setText("");
        }
    }
}
--------------------编程问答-------------------- ui:

package cn.leisore.daily._2010_06_21;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.GroupLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.LayoutStyle;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;

public class PlayPokerUI extends JFrame {
    PlayPoker p = null;

    public PlayPokerUI() {
        initComponents();
    }

    private void initComponents() {

        jScrollPane1 = new JScrollPane();
        poker1 = new JTextArea();
        jScrollPane2 = new JScrollPane();
        poker2 = new JTextArea();
        jScrollPane3 = new JScrollPane();
        poker3 = new JTextArea();
        jScrollPane4 = new JScrollPane();
        poker4 = new JTextArea();
        start = new JButton();
        stop = new JButton();

        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setName("Poker");
        setResizable(false);

        jScrollPane1.setName("jScrollPane1");

        poker1.setColumns(16);
        poker1.setRows(5);
        poker1.setName("poker1");
        jScrollPane1.setViewportView(poker1);

        jScrollPane2.setName("jScrollPane2");

        poker2.setColumns(16);
        poker2.setRows(5);
        poker2.setName("poker2");
        jScrollPane2.setViewportView(poker2);

        jScrollPane3.setName("jScrollPane3");

        poker3.setColumns(16);
        poker3.setRows(5);
        poker3.setName("poker3");
        jScrollPane3.setViewportView(poker3);

        jScrollPane4.setName("jScrollPane4");

        poker4.setColumns(16);
        poker4.setRows(5);
        poker4.setName("poker4");
        jScrollPane4.setViewportView(poker4);

        start.setText("start");
        start.setName("start");
        start.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (p == null) {
                    p = new PlayPoker(new JTextArea[] { poker1, poker2, poker3,
                            poker4 });
                    p.start();
                }
            }
        });

        stop.setText("stop");
        stop.setName("stop");
        stop.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                if (p != null) {
                    p.stop();
                    p = null;
                }
            }
        });

        GroupLayout layout = new GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout
                .setHorizontalGroup(layout
                        .createParallelGroup(GroupLayout.Alignment.LEADING)
                        .addGroup(
                                layout
                                        .createSequentialGroup()
                                        .addGroup(
                                                layout
                                                        .createParallelGroup(
                                                                GroupLayout.Alignment.LEADING)
                                                        .addGroup(
                                                                layout
                                                                        .createSequentialGroup()
                                                                        .addContainerGap()
                                                                        .addGroup(
                                                                                layout
                                                                                        .createParallelGroup(
                                                                                                GroupLayout.Alignment.LEADING)
                                                                                        .addComponent(
                                                                                                jScrollPane1,
                                                                                                GroupLayout.PREFERRED_SIZE,
                                                                                                193,
                                                                                                GroupLayout.PREFERRED_SIZE)
                                                                                        .addComponent(
                                                                                                jScrollPane3,
                                                                                                GroupLayout.PREFERRED_SIZE,
                                                                                                193,
                                                                                                GroupLayout.PREFERRED_SIZE))
                                                                        .addGap(
                                                                                10,
                                                                                10,
                                                                                10)
                                                                        .addGroup(
                                                                                layout
                                                                                        .createParallelGroup(
                                                                                                GroupLayout.Alignment.LEADING)
                                                                                        .addComponent(
                                           
--------------------编程问答-------------------- ui:

 jScrollPane2,
                                                                                                GroupLayout.PREFERRED_SIZE,
                                                                                                201,
                                                                                                GroupLayout.PREFERRED_SIZE)
                                                                                        .addComponent(
                                                                                                jScrollPane4,
                                                                                                GroupLayout.PREFERRED_SIZE,
                                                                                                201,
                                                                                                GroupLayout.PREFERRED_SIZE)))
                                                        .addGroup(
                                                                layout
                                                                        .createSequentialGroup()
                                                                        .addGap(
                                                                                79,
                                                                                79,
                                                                                79)
                                                                        .addComponent(
                                                                                start)
                                                                        .addGap(
                                                                                106,
                                                                                106,
                                                                                106)
                                                                        .addComponent(
                                                                                stop)))
                                        .addContainerGap(
                                                GroupLayout.DEFAULT_SIZE,
                                                Short.MAX_VALUE)));
        layout.setVerticalGroup(layout.createParallelGroup(
                GroupLayout.Alignment.LEADING).addGroup(
                layout.createSequentialGroup().addContainerGap().addGroup(
                        layout.createParallelGroup(
                                GroupLayout.Alignment.LEADING).addComponent(
                                jScrollPane1, GroupLayout.PREFERRED_SIZE, 137,
                                GroupLayout.PREFERRED_SIZE).addComponent(
                                jScrollPane4, GroupLayout.DEFAULT_SIZE, 137,
                                Short.MAX_VALUE)).addPreferredGap(
                        LayoutStyle.ComponentPlacement.RELATED).addGroup(
                        layout.createParallelGroup(
                                GroupLayout.Alignment.LEADING, false)
                                .addComponent(jScrollPane2,
                                        GroupLayout.Alignment.TRAILING)
                                .addComponent(jScrollPane3,
                                        GroupLayout.Alignment.TRAILING,
                                        GroupLayout.DEFAULT_SIZE, 137,
                                        Short.MAX_VALUE)).addPreferredGap(
                        LayoutStyle.ComponentPlacement.RELATED, 21,
                        Short.MAX_VALUE).addGroup(
                        layout.createParallelGroup(
                                GroupLayout.Alignment.BASELINE).addComponent(
                                start).addComponent(stop)).addContainerGap()));

        pack();
    }

    public static void main(String args[]) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new PlayPokerUI().setVisible(true);
            }
        });
    }

    private JScrollPane jScrollPane1;
    private JScrollPane jScrollPane2;
    private JScrollPane jScrollPane3;
    private JScrollPane jScrollPane4;
    private JTextArea poker1;
    private JTextArea poker2;
    private JTextArea poker3;
    private JTextArea poker4;
    private JButton start;
    private JButton stop;
}
--------------------编程问答-------------------- 这不提还不要紧,一提牛人都把代码晒晒了 --------------------编程问答-------------------- 学习虽然不太懂以后会懂的 --------------------编程问答-------------------- 同道中人!啊 --------------------编程问答-------------------- 有时间也写一个玩玩、、、 --------------------编程问答-------------------- 真是牛人呀,顶下。 --------------------编程问答-------------------- 我同意2楼的··洗牌之后再发··发的顺序可以有序··但是牌的顺序随即··这个更符合事实··至于使用多线程··我觉得没有必要·· --------------------编程问答-------------------- ……LZ这是召唤牛人们晒代码啊……
--------------------编程问答-------------------- 不会啊 --------------------编程问答-------------------- 怎么都没有注释啊  看着累 --------------------编程问答-------------------- 先洗牌,利用随机数就行了
import java.util.*;
public class TestCard {

/**
 * 随机发牌程序
 */ 
public static void main(String[] args) {
String[] shape={"红桃","黑桃","梅花","方片"};
String[] nums={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
String[] hands={"玩家一:","玩家二:","玩家三:","玩家四:"};
String[] cards=new String[52];
int k=0;
//下面循环用于产生一副牌
for(int i=0;i<shape.length;i++){
for(int j=0;j<nums.length;j++){
cards[k++]=shape[i]+nums[j];
}
}
Random r=new Random();
int next=r.nextInt(51)+1;
//将牌的顺序打乱
for(int i=0;i<52;i++){
String temp="";
//用于和数组的第一个元素进行交换
temp=cards[0];
cards[0]=cards[next];
cards[next]=temp;
next=r.nextInt(51)+1;
}
//下面的循环用于发牌hands
int j=0;
for(int i=0;i<cards.length;i++){
if(i%13==0){
System.out.print(hands[j]);
}
System.out.print(cards[i]+" ");
if((i+1)%13==0){
System.out.println();
j++;
}
}
}
}
--------------------编程问答-------------------- 学习啦!! --------------------编程问答-------------------- 楼上的有很强大的啊  真牛逼啊   小弟领教了  --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 其实三楼的已经做的很好了,不用多线程,节省了不少资源 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答--------------------

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class CardShuffle {
public static void main(String[] args) {
List list=new ArrayList();
String[] players={"小王","小张","小赵","小白"};
String[] f={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
String[] s={"♥","♣","♦","♠"};
for(int i=0;i<s.length;i++)
{
for(int j=0;j<f.length;j++)
{
list.add(s[i]+f[j]);
}
}

Collections.shuffle(list);
for(int i=0;i<players.length;i++)
{
System.out.print(players[i]+"的手牌是");
System.out.println(dealHand(list, 13));


}
}

public static List dealHand(List Ls,int n){
        int sizePai = Ls.size();
        List handView = Ls.subList(sizePai - n, sizePai);
        List hand = new ArrayList(handView);
        handView.clear();
        return hand;
    }
}
--------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 小弟刚学java过来看看,学习一下。 --------------------编程问答-------------------- 不就是发牌嘛,不用那么复杂。。

System.out.println("开始发牌!!");
for(int i=0;i<18;i++){
System.out.println("你的");
System.out.println("他的");
System.out.println("我的");
}
System.out.println("发完了!!"); --------------------编程问答--------------------
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,