模拟人工洗牌
编写一个模拟人工洗牌的程序,将洗好的牌分别发给四个人。
使用结构 card 来描述一张牌,用随机方法来模拟人工洗牌的过程,最后将洗好的 52 张牌顺序分别发给四个人。
设计要求:
1)要求使用 java 类包中的 Math.Random()方法进行随机处理。
2)要求在 dos 控制台窗口中显示每个人手上的扑克牌
3)要求将每个人手上的 13 张牌按照四种花色,从小到大排列整齐后显示出来。
*4)可以设计成图形用户界面,通过按钮进行洗牌、发牌的动作,并按上面的要求显示东西南北四个人手上的牌型。
作者:方贵深
吉林大学珠海学院
import java.awt.*;
import javax.swing.*;
import javax.swing.border.BevelBorder;
import javax.swing.border.SoftBevelBorder;
import java.awt.event.*;
public class Test extends JFrame implements ActionListener
{
private JButton swrapCardButton=new JButton("洗牌");
private JButton dealButton=new JButton("发牌");
//private JTextArea textArea=new JTextArea();
private JTextArea []textAreas=new JTextArea[52];
private JPanel panel1=new JPanel(new GridLayout(1,12,6,10));
private JPanel panel2=new JPanel(new GridLayout(1,12,6,10));
private JPanel panel3=new JPanel(new GridLayout(1,12,6,10));
private JPanel panel4=new JPanel(new GridLayout(1,12,6,10));
private JPanel panel5=new JPanel(new GridBagLayout());
private JLabel south=new JLabel("南");
private JLabel north=new JLabel("北");
private JLabel east=new JLabel("东");
private JLabel west=new JLabel("西");
Container container=null;
Poker poker=null;
public Test()
{
super("洗牌程序");
container=this.getContentPane();
container.setLayout(null);
this.setResizable(false);
container.add(panel1);
container.add(panel2);
container.add(panel3);
container.add(panel4);
container.add(panel5);
container.add(south);
container.add(west);
container.add(east);
container.add(north);
for(int i=0;i<52;i++)
{
panel1.add(textAreas[i]);
textAreas[i]=new JTextArea();
textAreas[i].setBorder(new SoftBevelBorder(BevelBorder.RAISED));
if(i<13)
else if(i<26)
else if(i<39)
else
panel2.add(textAreas[i]);
panel3.add(textAreas[i]);
panel4.add(textAreas[i]);
}
GridBagConstraints gbc=new GridBagConstraints();
gbc.anchor=GridBagConstraints.CENTER;
gbc.fill=GridBagConstraints.NONE;
//container.add(textArea,gbc);
gbc.gridwidth=1;
gbc.weightx=50;
gbc.weighty=10;
gbc.fill=GridBagConstraints.NONE;
panel5.add(swrapCardButton,gbc);
panel5.add(dealButton,gbc);
east.setBounds(5,20,20,15);
panel1.setBounds(5,45,830,85);
south.setBounds(5,150,20,15);
panel2.setBounds(5,175,830,85);
west.setBounds(5,300,20,15);
panel3.setBounds(5,325,830,85);
north.setBounds(5,445,20,15);
panel4.setBounds(5,465,830,85);
panel5.setBounds(5,575,800,50);
//textArea.setBorder(BorderFactory.createRaisedSoftBevelBorder());
Font font=new Font("宋体",Font.BOLD,20);
dealButton.setFont(font);
swrapCardButton.setFont(font);
dealButton.addActionListener(this);
swrapCardButton.addActionListener(this);
}
public static void main(String[] args) {
Test test=new Test();
test.setSize(850,700);
test.setVisible(true);
test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// TODO Auto-generated method stub
}
public void actionPerformed(ActionEvent e)
{
JButton button=(JButton)e.getSource();
if(button==swrapCardButton)
{
//点击了洗牌按钮
poker=new Poker();
for(int i=0;i<52;i++)
{
int j=(int)(52*Math.random());
Object []tStrings=poker.card[i];
poker.card[i]=poker.card[j];
poker.card[j]=tStrings;
}
}
else //点击了发牌按钮
{
sort();
for(int i=0;i<52;i++)
{
textAreas[i].setText("");
if(poker.card[i][1].toString().indexOf("10")==-1)
//牌号不是10
textAreas[i].setText(poker.card[i][1]+" "+poker.card[i][0]+
"\n\n\n\n
"+poker.card[i][1]+" "+poker.card[i][0]);
else
textAreas[i].setText(poker.card[i][1]+" "+poker.card[i][0]+
"\n\n\n\n
"+poker.card[i][1]+" "+poker.card[i][0]);
}
}
}
private void sort()
{
for(int i=0;i<4;i++)
{
for(int j=i*13;j<(i+1)*13-1;j++)
{
int t=j;
for(int k=j+1;k<(i+1)*13;k++)
t=k;
t=k;
}
}
if(t!=j)
{
Object []tObject=poker.card[t];
poker.card[t]=poker.card[j];
poker.card[j]=tObject;
}
}
}
}
private class Poker
{
private Object [][]card={
{
//花色顺序
Integer p2=(Integer)poker.card[t][2];
Integer q2=(Integer)poker.card[k][2];
//大小顺序
Integer p3=(Integer)poker.card[t][3];
Integer q3=(Integer)poker.card[k][3];
if(p3.compareTo(q3)==1)
{
}
else if(p3.compareTo(q3)==0&&p2.compareTo(q2)==1)
{
Integer(3)},{" ♦ ","4",new
Integer(1),new
Integer(10)},{" ♦ ","J",new
Integer(1),new
{" ♦ ","A",new Integer(1),new Integer(1)},{" ♦ ","2",new Integer(1),new Integer(2)},{" ♦
Integer(1),new
Integer(4)},{" ♦ ","5",new
","3",new
Integer(1),new Integer(5)},{" ♦ ","6",new Integer(1),new Integer(6)},{" ♦ ","7",new Integer(1),new
Integer(7)},
{" ♦ ","8",new Integer(1),new Integer(8)},{" ♦ ","9",new Integer(1),new Integer(9)},{" ♦
","10",new
Integer(11)},{" ♦ ","Q",new
Integer(1),new
Integer(1),new Integer(12)},{" ♦ ","K",new Integer(1),new Integer(13)},{" ♣ ","A",new Integer(2),new
Integer(1)},{" ♣ ","2",new Integer(2),new Integer(2)},{" ♣ ","3",new Integer(2),new Integer(3)},{" ♣
","4",new Integer(2),new Integer(4)},{"♣","5",new Integer(2),new Integer(5)},
{" ♣ ","6",new Integer(2),new Integer(6)},{" ♣ ","7",new Integer(2),new Integer(7)},{" ♣
Integer(8)},{" ♣ ","9",new
","8",new
Integer(2),new
Integer(9)},{" ♣ ","10",new
Integer(2),new Integer(10)},{" ♣ ","J",new Integer(2),new Integer(11)},{" ♣ ","Q",new Integer(2),new
Integer(12)},{"♣","K",new Integer(2),new Integer(13)},
{" ♥ ","A",new Integer(3),new Integer(1)},{" ♥ ","2",new Integer(3),new Integer(2)},{" ♥
","3",new
Integer(3)},{" ♥ ","4",new
Integer(3),new
Integer(4)},{" ♥ ","5",new
Integer(3),new Integer(5)},{" ♥ ","6",new Integer(3),new Integer(6)},{" ♥ ","7",new Integer(3),new
Integer(7)},{" ♥ ","8",new Integer(3),new Integer(8)},{" ♥ ","9",new Integer(3),new Integer(9)},{" ♥
","10",new Integer(3),new Integer(10)},
{" ♥ ","J",new Integer(3),new Integer(11)},{" ♥ ","Q",new Integer(3),new Integer(12)},{" ♥
","K",new
Integer(3),new
Integer(1)},{" ♠ ","2",new
Integer(4),new Integer(2)},{" ♠ ","3",new Integer(4),new Integer(3)},{" ♠ ","4",new Integer(4),new
Integer(4)},{"♠","5",new Integer(4),new Integer(5)},{"♠","6",new Integer(4),new Integer(6)},
{" ♠ ","7",new Integer(4),new Integer(7)},{" ♠ ","8",new Integer(4),new Integer(8)},{" ♠
","9",new
Integer(4),new
Integer(10)},{" ♠ ","J",new
Integer(13)},{" ♠ ","A",new
Integer(9)},{" ♠ ","10",new
Integer(4),new
Integer(4),new
Integer(2),new
Integer(3),new
Integer(4),new Integer(11)},{" ♠ ","Q",new Integer(4),new Integer(12)},{" ♠ ","K",new Integer(4),new
Integer(13)}
};
}
}