首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

基于java平台设计-游戏大厅

2012-09-09 
基于java平台设计--游戏大厅import java.awt.*import java.awt.event.*import javax.swing.*import jav

基于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();}}}}
?

热点排行