基于java平台设计--游戏大厅
Posted Jan丶X
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于java平台设计--游戏大厅相关的知识,希望对你有一定的参考价值。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.net.*;
public class Second
public static JFrame jf2 = new JFrame();
public static JFrame jf3;
private JTabbedPane jtp2 = new JTabbedPane(); //创建标签面板
private JTabbedPane jtp3 = new JTabbedPane();
private JPanel jp1 = new JPanel();
private JPanel jp11= new JPanel();
private JPanel jp112 = new JPanel();
private JPanel jp12 = new JPanel();
private JPanel jp2 = new JPanel();
private JPanel jp22 = new JPanel();
private JButton jb1 = new JButton();
private JButton jb2 = new JButton();
private JButton lc[] = new JButton[10];
private JButton rc[] = new JButton[10];
private JLabel jl22 = new JLabel();
private JLabel jl23 = new JLabel();
private JLabel lcn[] = new JLabel[10]; //左边桌子名字
private JLabel rcn[] = new JLabel[10]; //右边桌子名字
private JLabel desk[] = new JLabel[10];
private JLabel jl111 = new JLabel("<< 象棋游戏 >>");
private JLabel jl21 = new JLabel(new ImageIcon("./res/img/boy2.gif"));
private JTextField name = new JTextField();
private JTextArea jta1 = new JTextArea(50,11);
private ImageIcon headicon = new ImageIcon();
private int lnum = 0;
private int rnum = 0;
private DrawQiPan chessboard = new DrawQiPan();
private Third th;
public Socket s = new Socket();
public static DataInputStream dis;
public static DataOutputStream dos;
public Second(JTextField name, JFrame jf2, ImageIcon headicon)
this.name = name; //继承上一届面用户图片
this.jf2 = jf2;
this.headicon = headicon; //继承上一届面用户图片
public void connect() //连接服务器
try
s = new Socket("10.0.162.52",9978);
dos = new DataOutputStream(s.getOutputStream()); //获得服务器的输出流即能写信息给服务器
dis = new DataInputStream(s.getInputStream()); //获得服务器的输入流即能读取来自服务器的信息
dos.writeUTF(name.getText()); //将用户的名称写入客户端
catch(Exception e)
e.printStackTrace();
public void createThread() //线程处理,主要用于接收信息
Client player = new Client(this);
player.start(); //开始线程
public JSplitPane createPane() //第二个界面编辑
J_Action a = new J_Action();
JSplitPane mainSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT); //平衡分割
JSplitPane rightSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT); //竖直分割
jp112.setLayout(new FlowLayout()); //流式布局
jb1 = new JButton("加入");
jb2 = new JButton("退出");
jb1.addActionListener(a); //加入和退出设置监听器
jb2.addActionListener(a);
jp112.add(jb1);
jp112.add(jb2);
jp11.setLayout(new BorderLayout()); //默认布局
jp11.add(jl111, "West");
jp11.add(jp112, "East");
jp12.setLayout(new GridLayout(5,2)); //整个座位面板网格式布局5行2列
int count = 1;
for(int i = 0; i < 10; i++ )
lcn[i] = new JLabel(name.getText());
lcn[i].setVisible(false);
lc[i] = new JButton(new ImageIcon("./res/img/noone.gif"));
lc[i].setBackground(new Color(153,153,153));
lc[i].setActionCommand(String.valueOf(i));
lc[i].addActionListener(a);
JPanel jp121 = new JPanel();
jp121.setLayout(new GridLayout(2,1));
jp121.setBackground(new Color(153,153,153));
jp121.add(lc[i]); //左边桌子
jp121.add(lcn[i]); //椅子下面的人物名字
rcn[i] = new JLabel(name.getText());
rcn[i].setVisible(false);
rc[i] = new JButton(new ImageIcon("./res/img/noone.gif"));
rc[i].setBackground(new Color(153,153,153));
rc[i].setActionCommand(String.valueOf(i + 10));
rc[i].addActionListener(a);
JPanel jp122 = new JPanel();
jp122.setLayout(new GridLayout(2,1));
jp122.setBackground(new Color(153,153,153));
jp122.add(rc[i]);
jp122.add(rcn[i]);
desk[i]= new JLabel(new ImageIcon("./res/img/xqnoone.gif"));
JLabel deskNum = new JLabel( " -" + count + "- ");
JPanel jp123 = new JPanel();
jp123.setLayout(new GridLayout(2,1));
jp123.add(desk[i]);
jp123.add(deskNum);
jp123.setBackground(new Color(153,153,153));
JPanel jpdesk = new JPanel();
jpdesk.add(jp121);
jpdesk.add(jp123);
jpdesk.add(jp122);
jpdesk.setBackground(new Color(153,153,153));
jp12.add(jpdesk);
count++;
jp1.setLayout(new BoxLayout(jp1, BoxLayout.Y_AXIS)); //合式布局
jp1.add(jp11);
jp1.add(jp12);
jl22 = new JLabel(headicon); //将人物图标和名字添加进面板
jl23 = new JLabel(name.getText());
jp22.add(jl22);
jp22.add(jl23);
jp2.add(jl21,BorderLayout.NORTH);
jp2.add(jp22,BorderLayout.SOUTH);
jtp2.addTab("个人信息",new ImageIcon("./res/img/star.gif"),jp2,"个人信息");
JScrollPane jsp = new JScrollPane(jta1);
jtp3.addTab("服务器信息", null, jsp, "服务器信息");
rightSplitPane.setBottomComponent(jtp3);
rightSplitPane.setTopComponent(jtp2);
rightSplitPane.setDividerLocation(310); //分割面板
rightSplitPane.setDividerSize(5);
mainSplitPane.setRightComponent(rightSplitPane);
mainSplitPane.setLeftComponent(jp1);
mainSplitPane.setDividerLocation(450);
mainSplitPane.setDividerSize(5);
return mainSplitPane;
class J_Action implements ActionListener //第二个界面的事件响应
public void actionPerformed(ActionEvent e)
JButton b =(JButton)e.getSource();
if(b == jb1)
String iconstring = headicon.toString();
String desknum = String.valueOf(1);
try
dos.writeUTF("sit");
dos.writeUTF(desknum);
dos.writeUTF(iconstring);
catch(Exception ee)
ee.printStackTrace();
else if(b == jb2)
try
dos.writeUTF("exit");
System.exit(0);
catch(Exception ee)
ee.printStackTrace();
else
String s = e.getActionCommand();
int num = Integer.parseInt(s);
String iconstring = headicon.toString();
String desknum = String.valueOf(num + 1);
try
dos.writeUTF("sit");
dos.writeUTF(desknum);
dos.writeUTF(iconstring);
catch(Exception ee)
ee.printStackTrace();
public DataInputStream getDataInputStream()
return dis;
public JTextArea getTextArea()
return jta1;
class Client extends Thread
private Second client;
public Client(Second client)
this.client = client;
public void run()
DataInputStream dis = client.getDataInputStream();
try
while(true)
String info = dis.readUTF();
if(info.equals("comein"))
String desknum = dis.readUTF();
int num = Integer.parseInt(desknum);
for(int i = 0; i < num; ++i)
try
String DeskNum = dis.readUTF();
String ClientName = dis.readUTF();
String IconString = dis.readUTF();
int Num = Integer.parseInt(DeskNum);
if (Num >= 11)
rc[Num-11].setIcon(new ImageIcon(IconString));
rcn[Num-11].setText(ClientName);
rcn[Num-11].setVisible(true);
else
lc[Num-1].setIcon(new ImageIcon(IconString));
lcn[Num-1].setText(ClientName);
lcn[Num-1].setVisible(true);
catch(Exception e)
e.printStackTrace();
String ServerInfo = dis.readUTF();
client.getTextArea().append(ServerInfo+"\\n");
else if (info.equals("sit"))
try
String desknum = dis.readUTF();
String name = dis.readUTF();
String iconstring = dis.readUTF();
int num = Integer.parseInt(desknum);
for(int i=0;i<10;i++)
if(lc[i].getIcon().toString().equals(iconstring)&&lcn[i].getText().equals(name))
lc[i].setIcon(new ImageIcon("./res/img/noone.gif"));
lcn[i].setVisible(false);
if(rc[i].getIcon().toString().equals(iconstring)&&rcn[i].getText().equals(name))
rc[i].setIcon(new ImageIcon("./res/img/noone.gif"));
rcn[i].setVisible(false);
if (num<11)
lc[num-1].setIcon(new ImageIcon(iconstring));
lcn[num-1].setText(name);
lcn[num-1].setVisible(true);
lnum = num;
else
rc[num-11].setIcon(new ImageIcon(iconstring));
rcn[num-11].setText(name);
rcn[num-11].setVisible(true);
rnum = num-10;
catch(Exception e)
e.printStackTrace();
else if (info.equals("exit"))
try
int num = Integer.parseInt(dis.readUTF());
if (num<11)
lc[num - 1].setIcon(new ImageIcon("./res/img/noone.gif"));
lcn[num - 1].setVisible(false);
else
num = num-10;
rc[num - 1].setIcon(new ImageIcon("./res/img/noone.gif"));
rcn[num - 1].setVisible(false);
catch(Exception e)
e.printStackTrace();
else if(info.equals("play"))
try
String name2 = dis.readUTF();
String iconstring2 = dis.readUTF();
Third.headicon2 = iconstring2;
Third.name2 = name2;
Third.talk.append(Third.name2+"进入房间"+"\\n");
chessboard.dispaySelect = 1;
jf3 = new JFrame("象棋游戏");
th = new Third(th,jf3,chessboard,name,jl22);
JSplitPane jsp = th.createPane();
JTabbedPane jtp = new JTabbedPane();
jtp.addTab("象棋游戏", null, jsp, "象棋游戏");
jf3.setContentPane(jtp);
jf3.setLocationRelativeTo(null);
jf3.setSize(800,700);
jf3.setVisible(true);
catch(Exception e)
e.printStackTrace();
else if(info.equals("Move"))//当对手有移动棋子时
int H_YS = dis.readInt();//得到对手移动的坐标
int H_XS = dis.readInt();//得到对手移动的坐标
int B_YS = dis.readInt();//得到对手移动的坐标
int B_XS = dis.readInt();//得到对手移动的坐标
boolean Rule = dis.readBoolean();
H_YS = 9 - H_YS;//转换成对方的移动
H_XS = 8 - H_XS;
B_YS = 9 - B_YS;
B_XS = 8 - B_XS;
chessboard.MoveMethod(H_YS, H_XS, B_YS, B_XS, Rule);//运用下一个类方法重画棋盘
else if(info.equals("Chat"))
String Chat = dis.readUTF();
Third.talk.append("对手:"+Chat+"\\n");
else if(info.equals("Start"))
try
JOptionPane.showMessageDialog(null,"游戏开始", "开始游戏", JOptionPane.INFORMATION_MESSAGE);
catch(Exception ee)
ee.printStackTrace();
chessboard.HaveStart = true;
chessboard.repaint();
else
client.getTextArea().append(info+"\\n");
catch(Exception e)
e.printStackTrace();
以上是关于基于java平台设计--游戏大厅的主要内容,如果未能解决你的问题,请参考以下文章
计算机毕业设计之java+springboot基于vue的游戏攻略分享平台
springboot基于vue的MOBA类游戏攻略分享平台游戏资讯分享平台,附源码+数据库+lw文档+PPT,包运行