package com.wolf.server;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Random;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import com.wolf.common.Constant;
import com.wolf.entity.MajiangButton;
public class ServiceGUI extends JFrame implements ActionListener
{
/**
* 注释内容
*/
private static final long serialVersionUID = 1321412341234L;
JPanel mainPanel = new JPanel();
GridLayout gridLayout2 = new GridLayout();
JPanel viewPanel = new JPanel();
JPanel rightPanel = new JPanel();
JPanel shanshanPanel = new JPanel();
JPanel changanPanel = new JPanel();
JPanel leileiPanel = new JPanel();
JPanel ganggangPanel = new JPanel();
JPanel majiangPanel = new JPanel();
JPanel centerPanel = new JPanel();
JPanel NPanel = new JPanel();
JPanel WPanel = new JPanel();
JPanel SPanel = new JPanel();
JPanel EPanel = new JPanel();
/**
*
*/
JPanel NPanel1 = new JPanel();
JPanel WPanel1 = new JPanel();
JPanel SPanel1 = new JPanel();
JPanel EPanel1 = new JPanel();
JMenu file = new JMenu("文件");
JMenuItem startitem = new JMenuItem("登录");
JMenuItem exititem = new JMenuItem("退出");
JMenuBar bar = new JMenuBar();
private Icon icon = new ImageIcon("image/mamabeijing.JPG");
private Icon icon2 = new ImageIcon("image/mamabeijing2.JPG");
private Icon icon3 = new ImageIcon("image/mama3.JPG");
private Icon icon4 = new ImageIcon("image/mama4.JPG");
/**
* 麻将list的排序规则
*/
Comparator<? super MajiangButton> rule = new Comparator<MajiangButton>()
{
public int compare(MajiangButton button1, MajiangButton button2)
{
try
{
int value1 = Integer.valueOf(button1.getValue());
int value2 = Integer.valueOf(button2.getValue());
return value1 - value2;
}
catch (Exception e)
{
return button1.getValue().compareTo(button2.getValue());
}
}
};
/**
* 装麻将的list
*/
static ArrayList<MajiangButton> majiangList = MajiangService.getMajiang();
/**
*庄和闲的初始手牌List
*/
ArrayList<MajiangButton> homeList = new ArrayList<MajiangButton>(14);
ArrayList<MajiangButton> guest1List = new ArrayList<MajiangButton>(14);
ArrayList<MajiangButton> guest2List = new ArrayList<MajiangButton>(14);
ArrayList<MajiangButton> guest3List = new ArrayList<MajiangButton>(14);
/**
* 最后一张牌的位置
*/
//private int lastMajiang = 0;
/**
* 当前牌牌号
*/
private int nowMajiang = 0;
private JButton fapai = new JButton("FAPAI");
/**
* 初始化对象
* 将牌洗好
* @return void [返回类型说明]
* @exception throws [违例类型] [违例说明]
* @see [类、类#方法、类#成员]
*/
public void init()
{
Collections.shuffle(majiangList);
setForeground(Color.black);
setTitle("MNS Majiang v2.0");
setBounds(10, 10, 500, 500);
this.mainPanel.setLayout(new BorderLayout());
this.mainPanel.setMinimumSize(new Dimension(200, 200));
this.mainPanel.setPreferredSize(new Dimension(1200, 800));
viewPanel.setLayout(new BorderLayout());
//手牌显示区
//北区
//shanshanPanel = setJButton(shanshanPanel, Constant.MajiangType.MAJIANG2);
//西区
//changanPanel = setJButton(changanPanel, Constant.MajiangType.MAJIANG1);
//南区
//leileiPanel = setJButton(leileiPanel,Constant.MajiangType.MAJIANG2);
shanshanPanel.setPreferredSize(new Dimension(1000, 200));
changanPanel.setPreferredSize(new Dimension(200, 400));
leileiPanel.setPreferredSize(new Dimension(1000, 200));
ganggangPanel.setPreferredSize(new Dimension(200, 400));
int dianshu = new Random().nextInt(12) + 1;
dealMajiang(dianshu);
//东区
//ganggangPanel = setJButton(ganggangPanel, Constant.MajiangType.MAJIANG1);
//中间摸牌区
majiangPanel.setLayout(new BorderLayout());
majiangPanel.setPreferredSize(new Dimension(500, 500));
//北风区
NPanel = setJButton(NPanel, Constant.MajiangType.MAJIANG3);
//西风区
WPanel = setJButton(WPanel, Constant.MajiangType.MAJIANG4);
//南风区
SPanel = setJButton(SPanel, Constant.MajiangType.MAJIANG3);
//东风区
EPanel = setJButton(EPanel, Constant.MajiangType.MAJIANG4);
//出牌区
majiangPanel.add(NPanel1, BorderLayout.NORTH);
majiangPanel.add(WPanel1, BorderLayout.WEST);
majiangPanel.add(SPanel1, BorderLayout.SOUTH);
majiangPanel.add(EPanel1, BorderLayout.EAST);
//摸牌区
centerPanel.setLayout(new BorderLayout());
centerPanel.setPreferredSize(new Dimension(500, 400));
centerPanel.add(NPanel, BorderLayout.NORTH);
centerPanel.add(WPanel, BorderLayout.WEST);
centerPanel.add(SPanel, BorderLayout.SOUTH);
centerPanel.add(EPanel, BorderLayout.EAST);
centerPanel.add(majiangPanel, BorderLayout.CENTER);
viewPanel.add(shanshanPanel, BorderLayout.NORTH);
viewPanel.add(changanPanel, BorderLayout.WEST);
viewPanel.add(leileiPanel, BorderLayout.SOUTH);
viewPanel.add(ganggangPanel, BorderLayout.EAST);
viewPanel.add(centerPanel, BorderLayout.CENTER);
rightPanel.setLayout(new BorderLayout());
//发牌按钮事件
fapai.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if (14 <= homeList.size())
{
return;
}
MajiangButton nowmajiang = getNowMajiang();
nowmajiang.setPreferredSize(new Dimension(70, 107));
homeList.add(nowmajiang);
leileiPanel.add(nowmajiang);
leileiPanel.repaint();
}
});
rightPanel.add(fapai, BorderLayout.CENTER);
mainPanel.add(viewPanel, BorderLayout.CENTER);
mainPanel.add(rightPanel, BorderLayout.EAST);
file.add(startitem);
file.add(exititem);
bar.add(file);
setJMenuBar(bar);
getContentPane().add(this.mainPanel);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setVisible(true);
}
/**
* 抓麻将
* @param dianshu [参数说明]
*
* @return void [返回类型说明]
* @exception throws [违例类型] [违例说明]
* @see [类、类#方法、类#成员]
*/
private void dealMajiang(int dianshu)
{
if (8 < dianshu)
{
dianshu = dianshu - 8;
}
else if (4 < dianshu)
{
dianshu = dianshu - 4;
}
//开始抓牌的点数
int homeNum = 18 * dianshu - 2 * dianshu;
//lastMajiang = homeNum - 1;
int guest1Num = homeNum + 4;
int guest2Num = homeNum + 8;
int guest3Num = homeNum + 12;
//发牌
for (int j = 0; j < 3; j++)
{
for (int i = 1; i < 5; i++)
{
//如果牌张超过136张,从头循环抓取
if (136 <= homeNum)
{
homeNum = homeNum - 136;
}
if (136 <= guest1Num)
{
guest1Num = guest1Num - 136;
}
if (136 <= guest2Num)
{
guest2Num = guest2Num - 136;
}
if (136 <= guest3Num)
{
guest3Num = guest3Num - 136;
}
MajiangButton majiang_home = majiangList.get(homeNum);
majiang_home.setPreferredSize(new Dimension(70, 107));
majiang_home.addActionListener(this);
majiang_home.setId(homeNum);
homeList.add(majiang_home);
MajiangButton majiang_guest1 = majiangList.get(guest1Num);
majiang_guest1.setPreferredSize(new Dimension(80, 50));
//majiang_guest1.addActionListener(this);
guest1List.add(majiang_guest1);
MajiangButton majiang_guest2 = majiangList.get(guest2Num);
majiang_guest2.setPreferredSize(new Dimension(50, 80));
guest2List.add(majiang_guest2);
MajiangButton majiang_guest3 = majiangList.get(guest3Num);
majiang_guest3.setPreferredSize(new Dimension(80, 50));
guest3List.add(majiang_guest3);
//第十三张字和庄家第十四张字
if (4 == i && 2 == j)
{
MajiangButton majiang_home_13 = majiangList.get(homeNum + 13);
majiang_home_13.setPreferredSize(new Dimension(70, 107));
majiang_home.addActionListener(this);
majiang_home.setId(homeNum + 13);
homeList.add(majiang_home_13);
MajiangButton majiang_guest1_13 = majiangList.get(guest1Num + 10);
majiang_guest1_13.setPreferredSize(new Dimension(80, 50));
guest1List.add(majiang_guest1_13);
MajiangButton majiang_guest2_13 = majiangList.get(guest2Num + 7);
majiang_guest2_13.setPreferredSize(new Dimension(50, 80));
guest2List.add(majiang_guest2_13);
MajiangButton majiang_guest3_13 = majiangList.get(guest3Num + 4);
majiang_guest3_13.setPreferredSize(new Dimension(80, 50));
guest3List.add(majiang_guest3_13);
//庄家的第十四张字
MajiangButton majiang_home_14 = majiangList.get(homeNum + 17);
majiang_home_14.setPreferredSize(new Dimension(70, 107));
majiang_home.addActionListener(this);
majiang_home.setId(homeNum + 17);
homeList.add(majiang_home_14);
nowMajiang = homeNum + 18;
}
homeNum = homeNum + 1;
guest1Num = guest1Num + 1;
guest2Num = guest2Num + 1;
guest3Num = guest3Num + 1;
}
homeNum = homeNum + 13;
guest1Num = guest1Num + 13;
guest2Num = guest2Num + 13;
guest3Num = guest3Num + 13;
}
Collections.sort(homeList, rule);
Collections.sort(guest1List, rule);
Collections.sort(guest2List, rule);
Collections.sort(guest3List, rule);
for (int i = 0; i < 13; i++)
{
MajiangButton homeMajiang = homeList.get(i);
MajiangButton guest1Majiang = guest1List.get(i);
//麻将不可见
guest1Majiang.setIcon(Constant.MAJIANGBEIJING);
guest1Majiang.addActionListener( new NewActionListener());
MajiangButton guest2Majiang = guest2List.get(i);
//麻将不可见
guest2Majiang.setIcon(Constant.MAJIANGBEIJING);
guest2Majiang.addActionListener( new NewActionListener());
MajiangButton guest3Majiang = guest3List.get(i);
//麻将不可见
guest3Majiang.setIcon(Constant.MAJIANGBEIJING);
guest3Majiang.addActionListener( new NewActionListener());
homeMajiang.addActionListener(this);
leileiPanel.add(homeMajiang);
ganggangPanel.add(guest1Majiang);
shanshanPanel.add(guest2Majiang);
changanPanel.add(guest3Majiang);
}
//庄家第十四张字显示
MajiangButton homeMajiang = homeList.get(13);
homeMajiang.addActionListener(this);
leileiPanel.add(homeMajiang);
}
/**
* 传入一个JPanel对象和类型,返回所需要的一些设置。
* @param panel
* @param type
* @return [参数说明]
*
* @return JPanel [返回类型说明]
* @exception throws [违例类型] [违例说明]
* @see [类、类#方法、类#成员]
*/
private JPanel setJButton(JPanel panel, char type)
{
JPanel panell = new JPanel();
panel.setLayout(new FlowLayout(1, 1, 1));
switch (type)
{
case '1':
{
panel.setPreferredSize(new Dimension(80, 400));
for (int i = 0; i < 13; i++)
{
JButton majiang = new JButton();
majiang.setIcon(icon2);
majiang.setPreferredSize(new Dimension(44, 31));
panel.add(majiang);
}
}
break;
case '2':
{
panel.setPreferredSize(new Dimension(800, 70));
for (int i = 0; i < 13; i++)
{
JButton majiang = new JButton();
majiang.setIcon(icon);
majiang.setPreferredSize(new Dimension(31, 44));
panel.add(majiang);
}
}
break;
case '3':
{
panel.setPreferredSize(new Dimension(500, 50));
for (int i = 0; i < 17; i++)
{
JButton majiang = new JButton();
majiang.setIcon(icon3);
majiang.setPreferredSize(new Dimension(20, 30));
panel.add(majiang);
}
}
break;
case '4':
{
panel.setPreferredSize(new Dimension(50, 300));
for (int i = 0; i < 17; i++)
{
JButton majiang = new JButton();
majiang.setIcon(icon4);
majiang.setPreferredSize(new Dimension(28, 17));
panel.add(majiang);
}
}
break;
default:
{
panel.setPreferredSize(new Dimension(800, 70));
for (int i = 0; i < 13; i++)
{
JButton majiang = new JButton();
majiang.setIcon(icon);
majiang.setPreferredSize(new Dimension(31, 44));
panel.add(majiang);
}
}
break;
}
panell = panel;
return panell;
}
/**
* 按钮的监听方法
* @param e
*/
public void actionPerformed(ActionEvent e)
{
if (14 != homeList.size())
{
System.out.println("再出牌你就小相公了!!!");
return;
}
MajiangButton majiang = (MajiangButton) e.getSource();
System.out.println("麻将牌数:"+homeList.size());
System.out.println("麻将是:"+majiang.getValue());
for (int i = 0; i < homeList.size(); i++)
{
MajiangButton majiangButton = homeList.get(i);
if (majiang.getId() == majiangButton.getId())
{
homeList.remove(i);
majiangButton.addActionListener(new NewActionListener());
leileiPanel.remove(majiangButton);
SPanel1.add(majiangButton);
break;
}
}
leileiPanel.removeAll();
Collections.sort(homeList, rule);
for (MajiangButton majiangButton : homeList)
{
leileiPanel.add(majiangButton);
}
leileiPanel.repaint();
SPanel1.repaint();
xianOutPai(ganggangPanel, guest1List, EPanel1, 1);
xianOutPai(shanshanPanel, guest2List, NPanel1, 2);
xianOutPai(changanPanel, guest3List, WPanel1, 1);
/*//庄家摸牌
MajiangButton nowmajiang = getNowMajiang();
homeList.add(nowmajiang);
leileiPanel.add(nowmajiang);
leileiPanel.repaint();*/
}
/**
* 三个电脑玩家出牌
* @param panel
* @param list
* @param panel1 [参数说明]
*
* @return void [返回类型说明]
* @exception throws [违例类型] [违例说明]
* @see [类、类#方法、类#成员]
*/
private void xianOutPai(JPanel panel, ArrayList<MajiangButton> list,
JPanel panel1, int type)
{
MajiangButton nowmajiang = null;
nowmajiang = getNowMajiang();
switch (type)
{
case 1:
{
nowmajiang.setPreferredSize(new Dimension(80, 50));
break;
}
case 2:
{
nowmajiang.setPreferredSize(new Dimension(50, 80));
break;
}
default:
{
nowmajiang.setPreferredSize(new Dimension(80, 50));
break;
}
}
nowmajiang.setIcon(Constant.MAJIANGBEIJING);
nowmajiang.addActionListener(new NewActionListener());
list.add(nowmajiang);
Collections.sort(list, rule);
MajiangButton outmajiang = MajiangService.outMajiang(list);
panel.removeAll();
panel1.add(outmajiang);
Collections.sort(list, rule);
for (MajiangButton majiangButton2 : list)
{
panel.add(majiangButton2);
}
panel.repaint();
panel1.repaint();
}
/**
* 拿到当前麻将
* @return [参数说明]
*
* @return MajiangButton [返回类型说明]
* @exception throws [违例类型] [违例说明]
* @see [类、类#方法、类#成员]
*/
private MajiangButton getNowMajiang()
{
nowMajiang++;
if (136 <= nowMajiang)
{
nowMajiang = nowMajiang - 136;
}
MajiangButton nowmajiang = majiangList.get(nowMajiang);
nowmajiang.addActionListener(this);
nowmajiang.setId(nowMajiang);
return nowmajiang;
}
class NewActionListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
}
}
/**
* 启动游戏main方法
* @param args [参数说明]
*
* @return void [返回类型说明]
* @exception throws [违例类型] [违例说明]
* @see [类、类#方法、类#成员]
*/
public static void main(String[] args)
{
ServiceGUI Servicegui = new ServiceGUI();
Servicegui.init();
}
}
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Random;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import com.wolf.common.Constant;
import com.wolf.entity.MajiangButton;
public class ServiceGUI extends JFrame implements ActionListener
{
/**
* 注释内容
*/
private static final long serialVersionUID = 1321412341234L;
JPanel mainPanel = new JPanel();
GridLayout gridLayout2 = new GridLayout();
JPanel viewPanel = new JPanel();
JPanel rightPanel = new JPanel();
JPanel shanshanPanel = new JPanel();
JPanel changanPanel = new JPanel();
JPanel leileiPanel = new JPanel();
JPanel ganggangPanel = new JPanel();
JPanel majiangPanel = new JPanel();
JPanel centerPanel = new JPanel();
JPanel NPanel = new JPanel();
JPanel WPanel = new JPanel();
JPanel SPanel = new JPanel();
JPanel EPanel = new JPanel();
/**
*
*/
JPanel NPanel1 = new JPanel();
JPanel WPanel1 = new JPanel();
JPanel SPanel1 = new JPanel();
JPanel EPanel1 = new JPanel();
JMenu file = new JMenu("文件");
JMenuItem startitem = new JMenuItem("登录");
JMenuItem exititem = new JMenuItem("退出");
JMenuBar bar = new JMenuBar();
private Icon icon = new ImageIcon("image/mamabeijing.JPG");
private Icon icon2 = new ImageIcon("image/mamabeijing2.JPG");
private Icon icon3 = new ImageIcon("image/mama3.JPG");
private Icon icon4 = new ImageIcon("image/mama4.JPG");
/**
* 麻将list的排序规则
*/
Comparator<? super MajiangButton> rule = new Comparator<MajiangButton>()
{
public int compare(MajiangButton button1, MajiangButton button2)
{
try
{
int value1 = Integer.valueOf(button1.getValue());
int value2 = Integer.valueOf(button2.getValue());
return value1 - value2;
}
catch (Exception e)
{
return button1.getValue().compareTo(button2.getValue());
}
}
};
/**
* 装麻将的list
*/
static ArrayList<MajiangButton> majiangList = MajiangService.getMajiang();
/**
*庄和闲的初始手牌List
*/
ArrayList<MajiangButton> homeList = new ArrayList<MajiangButton>(14);
ArrayList<MajiangButton> guest1List = new ArrayList<MajiangButton>(14);
ArrayList<MajiangButton> guest2List = new ArrayList<MajiangButton>(14);
ArrayList<MajiangButton> guest3List = new ArrayList<MajiangButton>(14);
/**
* 最后一张牌的位置
*/
//private int lastMajiang = 0;
/**
* 当前牌牌号
*/
private int nowMajiang = 0;
private JButton fapai = new JButton("FAPAI");
/**
* 初始化对象
* 将牌洗好
* @return void [返回类型说明]
* @exception throws [违例类型] [违例说明]
* @see [类、类#方法、类#成员]
*/
public void init()
{
Collections.shuffle(majiangList);
setForeground(Color.black);
setTitle("MNS Majiang v2.0");
setBounds(10, 10, 500, 500);
this.mainPanel.setLayout(new BorderLayout());
this.mainPanel.setMinimumSize(new Dimension(200, 200));
this.mainPanel.setPreferredSize(new Dimension(1200, 800));
viewPanel.setLayout(new BorderLayout());
//手牌显示区
//北区
//shanshanPanel = setJButton(shanshanPanel, Constant.MajiangType.MAJIANG2);
//西区
//changanPanel = setJButton(changanPanel, Constant.MajiangType.MAJIANG1);
//南区
//leileiPanel = setJButton(leileiPanel,Constant.MajiangType.MAJIANG2);
shanshanPanel.setPreferredSize(new Dimension(1000, 200));
changanPanel.setPreferredSize(new Dimension(200, 400));
leileiPanel.setPreferredSize(new Dimension(1000, 200));
ganggangPanel.setPreferredSize(new Dimension(200, 400));
int dianshu = new Random().nextInt(12) + 1;
dealMajiang(dianshu);
//东区
//ganggangPanel = setJButton(ganggangPanel, Constant.MajiangType.MAJIANG1);
//中间摸牌区
majiangPanel.setLayout(new BorderLayout());
majiangPanel.setPreferredSize(new Dimension(500, 500));
//北风区
NPanel = setJButton(NPanel, Constant.MajiangType.MAJIANG3);
//西风区
WPanel = setJButton(WPanel, Constant.MajiangType.MAJIANG4);
//南风区
SPanel = setJButton(SPanel, Constant.MajiangType.MAJIANG3);
//东风区
EPanel = setJButton(EPanel, Constant.MajiangType.MAJIANG4);
//出牌区
majiangPanel.add(NPanel1, BorderLayout.NORTH);
majiangPanel.add(WPanel1, BorderLayout.WEST);
majiangPanel.add(SPanel1, BorderLayout.SOUTH);
majiangPanel.add(EPanel1, BorderLayout.EAST);
//摸牌区
centerPanel.setLayout(new BorderLayout());
centerPanel.setPreferredSize(new Dimension(500, 400));
centerPanel.add(NPanel, BorderLayout.NORTH);
centerPanel.add(WPanel, BorderLayout.WEST);
centerPanel.add(SPanel, BorderLayout.SOUTH);
centerPanel.add(EPanel, BorderLayout.EAST);
centerPanel.add(majiangPanel, BorderLayout.CENTER);
viewPanel.add(shanshanPanel, BorderLayout.NORTH);
viewPanel.add(changanPanel, BorderLayout.WEST);
viewPanel.add(leileiPanel, BorderLayout.SOUTH);
viewPanel.add(ganggangPanel, BorderLayout.EAST);
viewPanel.add(centerPanel, BorderLayout.CENTER);
rightPanel.setLayout(new BorderLayout());
//发牌按钮事件
fapai.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if (14 <= homeList.size())
{
return;
}
MajiangButton nowmajiang = getNowMajiang();
nowmajiang.setPreferredSize(new Dimension(70, 107));
homeList.add(nowmajiang);
leileiPanel.add(nowmajiang);
leileiPanel.repaint();
}
});
rightPanel.add(fapai, BorderLayout.CENTER);
mainPanel.add(viewPanel, BorderLayout.CENTER);
mainPanel.add(rightPanel, BorderLayout.EAST);
file.add(startitem);
file.add(exititem);
bar.add(file);
setJMenuBar(bar);
getContentPane().add(this.mainPanel);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setVisible(true);
}
/**
* 抓麻将
* @param dianshu [参数说明]
*
* @return void [返回类型说明]
* @exception throws [违例类型] [违例说明]
* @see [类、类#方法、类#成员]
*/
private void dealMajiang(int dianshu)
{
if (8 < dianshu)
{
dianshu = dianshu - 8;
}
else if (4 < dianshu)
{
dianshu = dianshu - 4;
}
//开始抓牌的点数
int homeNum = 18 * dianshu - 2 * dianshu;
//lastMajiang = homeNum - 1;
int guest1Num = homeNum + 4;
int guest2Num = homeNum + 8;
int guest3Num = homeNum + 12;
//发牌
for (int j = 0; j < 3; j++)
{
for (int i = 1; i < 5; i++)
{
//如果牌张超过136张,从头循环抓取
if (136 <= homeNum)
{
homeNum = homeNum - 136;
}
if (136 <= guest1Num)
{
guest1Num = guest1Num - 136;
}
if (136 <= guest2Num)
{
guest2Num = guest2Num - 136;
}
if (136 <= guest3Num)
{
guest3Num = guest3Num - 136;
}
MajiangButton majiang_home = majiangList.get(homeNum);
majiang_home.setPreferredSize(new Dimension(70, 107));
majiang_home.addActionListener(this);
majiang_home.setId(homeNum);
homeList.add(majiang_home);
MajiangButton majiang_guest1 = majiangList.get(guest1Num);
majiang_guest1.setPreferredSize(new Dimension(80, 50));
//majiang_guest1.addActionListener(this);
guest1List.add(majiang_guest1);
MajiangButton majiang_guest2 = majiangList.get(guest2Num);
majiang_guest2.setPreferredSize(new Dimension(50, 80));
guest2List.add(majiang_guest2);
MajiangButton majiang_guest3 = majiangList.get(guest3Num);
majiang_guest3.setPreferredSize(new Dimension(80, 50));
guest3List.add(majiang_guest3);
//第十三张字和庄家第十四张字
if (4 == i && 2 == j)
{
MajiangButton majiang_home_13 = majiangList.get(homeNum + 13);
majiang_home_13.setPreferredSize(new Dimension(70, 107));
majiang_home.addActionListener(this);
majiang_home.setId(homeNum + 13);
homeList.add(majiang_home_13);
MajiangButton majiang_guest1_13 = majiangList.get(guest1Num + 10);
majiang_guest1_13.setPreferredSize(new Dimension(80, 50));
guest1List.add(majiang_guest1_13);
MajiangButton majiang_guest2_13 = majiangList.get(guest2Num + 7);
majiang_guest2_13.setPreferredSize(new Dimension(50, 80));
guest2List.add(majiang_guest2_13);
MajiangButton majiang_guest3_13 = majiangList.get(guest3Num + 4);
majiang_guest3_13.setPreferredSize(new Dimension(80, 50));
guest3List.add(majiang_guest3_13);
//庄家的第十四张字
MajiangButton majiang_home_14 = majiangList.get(homeNum + 17);
majiang_home_14.setPreferredSize(new Dimension(70, 107));
majiang_home.addActionListener(this);
majiang_home.setId(homeNum + 17);
homeList.add(majiang_home_14);
nowMajiang = homeNum + 18;
}
homeNum = homeNum + 1;
guest1Num = guest1Num + 1;
guest2Num = guest2Num + 1;
guest3Num = guest3Num + 1;
}
homeNum = homeNum + 13;
guest1Num = guest1Num + 13;
guest2Num = guest2Num + 13;
guest3Num = guest3Num + 13;
}
Collections.sort(homeList, rule);
Collections.sort(guest1List, rule);
Collections.sort(guest2List, rule);
Collections.sort(guest3List, rule);
for (int i = 0; i < 13; i++)
{
MajiangButton homeMajiang = homeList.get(i);
MajiangButton guest1Majiang = guest1List.get(i);
//麻将不可见
guest1Majiang.setIcon(Constant.MAJIANGBEIJING);
guest1Majiang.addActionListener( new NewActionListener());
MajiangButton guest2Majiang = guest2List.get(i);
//麻将不可见
guest2Majiang.setIcon(Constant.MAJIANGBEIJING);
guest2Majiang.addActionListener( new NewActionListener());
MajiangButton guest3Majiang = guest3List.get(i);
//麻将不可见
guest3Majiang.setIcon(Constant.MAJIANGBEIJING);
guest3Majiang.addActionListener( new NewActionListener());
homeMajiang.addActionListener(this);
leileiPanel.add(homeMajiang);
ganggangPanel.add(guest1Majiang);
shanshanPanel.add(guest2Majiang);
changanPanel.add(guest3Majiang);
}
//庄家第十四张字显示
MajiangButton homeMajiang = homeList.get(13);
homeMajiang.addActionListener(this);
leileiPanel.add(homeMajiang);
}
/**
* 传入一个JPanel对象和类型,返回所需要的一些设置。
* @param panel
* @param type
* @return [参数说明]
*
* @return JPanel [返回类型说明]
* @exception throws [违例类型] [违例说明]
* @see [类、类#方法、类#成员]
*/
private JPanel setJButton(JPanel panel, char type)
{
JPanel panell = new JPanel();
panel.setLayout(new FlowLayout(1, 1, 1));
switch (type)
{
case '1':
{
panel.setPreferredSize(new Dimension(80, 400));
for (int i = 0; i < 13; i++)
{
JButton majiang = new JButton();
majiang.setIcon(icon2);
majiang.setPreferredSize(new Dimension(44, 31));
panel.add(majiang);
}
}
break;
case '2':
{
panel.setPreferredSize(new Dimension(800, 70));
for (int i = 0; i < 13; i++)
{
JButton majiang = new JButton();
majiang.setIcon(icon);
majiang.setPreferredSize(new Dimension(31, 44));
panel.add(majiang);
}
}
break;
case '3':
{
panel.setPreferredSize(new Dimension(500, 50));
for (int i = 0; i < 17; i++)
{
JButton majiang = new JButton();
majiang.setIcon(icon3);
majiang.setPreferredSize(new Dimension(20, 30));
panel.add(majiang);
}
}
break;
case '4':
{
panel.setPreferredSize(new Dimension(50, 300));
for (int i = 0; i < 17; i++)
{
JButton majiang = new JButton();
majiang.setIcon(icon4);
majiang.setPreferredSize(new Dimension(28, 17));
panel.add(majiang);
}
}
break;
default:
{
panel.setPreferredSize(new Dimension(800, 70));
for (int i = 0; i < 13; i++)
{
JButton majiang = new JButton();
majiang.setIcon(icon);
majiang.setPreferredSize(new Dimension(31, 44));
panel.add(majiang);
}
}
break;
}
panell = panel;
return panell;
}
/**
* 按钮的监听方法
* @param e
*/
public void actionPerformed(ActionEvent e)
{
if (14 != homeList.size())
{
System.out.println("再出牌你就小相公了!!!");
return;
}
MajiangButton majiang = (MajiangButton) e.getSource();
System.out.println("麻将牌数:"+homeList.size());
System.out.println("麻将是:"+majiang.getValue());
for (int i = 0; i < homeList.size(); i++)
{
MajiangButton majiangButton = homeList.get(i);
if (majiang.getId() == majiangButton.getId())
{
homeList.remove(i);
majiangButton.addActionListener(new NewActionListener());
leileiPanel.remove(majiangButton);
SPanel1.add(majiangButton);
break;
}
}
leileiPanel.removeAll();
Collections.sort(homeList, rule);
for (MajiangButton majiangButton : homeList)
{
leileiPanel.add(majiangButton);
}
leileiPanel.repaint();
SPanel1.repaint();
xianOutPai(ganggangPanel, guest1List, EPanel1, 1);
xianOutPai(shanshanPanel, guest2List, NPanel1, 2);
xianOutPai(changanPanel, guest3List, WPanel1, 1);
/*//庄家摸牌
MajiangButton nowmajiang = getNowMajiang();
homeList.add(nowmajiang);
leileiPanel.add(nowmajiang);
leileiPanel.repaint();*/
}
/**
* 三个电脑玩家出牌
* @param panel
* @param list
* @param panel1 [参数说明]
*
* @return void [返回类型说明]
* @exception throws [违例类型] [违例说明]
* @see [类、类#方法、类#成员]
*/
private void xianOutPai(JPanel panel, ArrayList<MajiangButton> list,
JPanel panel1, int type)
{
MajiangButton nowmajiang = null;
nowmajiang = getNowMajiang();
switch (type)
{
case 1:
{
nowmajiang.setPreferredSize(new Dimension(80, 50));
break;
}
case 2:
{
nowmajiang.setPreferredSize(new Dimension(50, 80));
break;
}
default:
{
nowmajiang.setPreferredSize(new Dimension(80, 50));
break;
}
}
nowmajiang.setIcon(Constant.MAJIANGBEIJING);
nowmajiang.addActionListener(new NewActionListener());
list.add(nowmajiang);
Collections.sort(list, rule);
MajiangButton outmajiang = MajiangService.outMajiang(list);
panel.removeAll();
panel1.add(outmajiang);
Collections.sort(list, rule);
for (MajiangButton majiangButton2 : list)
{
panel.add(majiangButton2);
}
panel.repaint();
panel1.repaint();
}
/**
* 拿到当前麻将
* @return [参数说明]
*
* @return MajiangButton [返回类型说明]
* @exception throws [违例类型] [违例说明]
* @see [类、类#方法、类#成员]
*/
private MajiangButton getNowMajiang()
{
nowMajiang++;
if (136 <= nowMajiang)
{
nowMajiang = nowMajiang - 136;
}
MajiangButton nowmajiang = majiangList.get(nowMajiang);
nowmajiang.addActionListener(this);
nowmajiang.setId(nowMajiang);
return nowmajiang;
}
class NewActionListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
}
}
/**
* 启动游戏main方法
* @param args [参数说明]
*
* @return void [返回类型说明]
* @exception throws [违例类型] [违例说明]
* @see [类、类#方法、类#成员]
*/
public static void main(String[] args)
{
ServiceGUI Servicegui = new ServiceGUI();
Servicegui.init();
}
}