⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tframe.java

📁 java 版的俄罗斯方块在原来的基础上的网络版
💻 JAVA
字号:
import java.awt.*;import java.awt.event.*;import dialog.*;import javax.swing.*;import server.*;import client.*;import java.util.*;public class TFrame extends JFrame implements NetRead{    public Tetrics m_tetrics;//    public JPanel m_pStatus;    public StatusBar m_pStatus;//    public JLabel m_lStatus;    //用于网络    public MyServer m_server;    public MyClient m_client;    //定义表征现在网络状态的常量。    //NOCONNECT表示单机运行。    //SERVE表示这个游戏用作服务器。    //CLIENT表示这个游戏用作客户端    public static final int NOCONNECT=0,SERVER=1,CLIENT=2;    public int m_nNetStatus=NOCONNECT;    public TFrame()    {        super();        try        {            jbInit();            myInit();        }        catch(Exception e)        {            e.printStackTrace();        }    }    public static void main(String[] args)    {        TFrame mframe=new TFrame();        mframe.show();    }    private void jbInit() throws Exception    {        this.addWindowListener(new java.awt.event.WindowAdapter() {            public void windowClosing(WindowEvent e) {                this_windowClosing(e);            }        });        this.addWindowListener(new java.awt.event.WindowAdapter()        {            public void windowClosing(WindowEvent e)            {                this_windowClosing(e);            }        });    }    private void myInit()    {        setSize(750,580);        setLocation(500,400);        addMenu();        //setLayout(null);        JPanel gameP=new JPanel();        gameP.setLayout(null);        m_tetrics=new Tetrics(this);        m_tetrics.setBounds(0,0,Tetrics.WIDTH,Tetrics.HEIGHT);/*        m_pStatus=new JPanel();        m_pStatus.setBackground(Color.lightGray);        m_lStatus=new JLabel("游戏装载完毕");        m_lStatus.setBackground(Color.lightGray);        m_pStatus.add(m_lStatus);*/        m_pStatus=new StatusBar(this);        m_pStatus.setBounds(0,Tetrics.HEIGHT,Tetrics.WIDTH,Tetrics.HEIGHT+130);        gameP.add(m_tetrics);        gameP.add(m_pStatus);//        add(m_tetrics);//        add(m_pStatus);        getContentPane().add(gameP);    }    void this_windowClosing(WindowEvent e)    {        if(m_nNetStatus==SERVER)m_server.close();        if(m_nNetStatus==CLIENT)m_client.close();        System.exit(0);    }    private void addMenu()    {        MenuBar menuBar=new MenuBar();        MenuListener menuListener=new MenuListener(this);        MenuShortcut ms=new MenuShortcut(KeyEvent.VK_S);        Menu menu1=new Menu("游戏");        Menu menu2=new Menu("控制");        Menu menu3=new Menu("关于");        menuBar.add(menu1);        menuBar.add(menu2);        menuBar.add(menu3);        MenuItem menuItem1_1=new MenuItem("开始游戏");        MenuItem menuItem1_2=new MenuItem("暂停游戏");        MenuItem menuItem1_3=new MenuItem("结束游戏");        MenuItem menuItem1_4=new MenuItem("关闭");        menu1.add(menuItem1_1);        menu1.add(menuItem1_2);        menu1.add(menuItem1_3);        menu1.addSeparator();        menu1.add(menuItem1_4);   		//安装监听器        menuItem1_1.addActionListener(menuListener);        menuItem1_2.addActionListener(menuListener);        menuItem1_3.addActionListener(menuListener);        MenuItem menuItem2_1=new MenuItem("设置级别");        MenuItem menuItem2_2=new MenuItem("查看分数");        MenuItem menuItem2_3=new MenuItem("等待对方连接");        MenuItem menuItem2_4=new MenuItem("连接对方");//        MenuItem menuItem2_1=new MenuItem("设置游戏级别");        menu2.add(menuItem2_1);        menu2.add(menuItem2_2);        menu2.addSeparator();        menu2.add(menuItem2_3);        menu2.add(menuItem2_4);        menuItem2_1.addActionListener(menuListener);        menuItem2_2.addActionListener(menuListener);        menuItem2_3.addActionListener(menuListener);        menuItem2_4.addActionListener(menuListener);        MenuItem menuItem3_1=new MenuItem("关于");        menu3.add(menuItem3_1);        menuItem3_1.addActionListener(menuListener);        setMenuBar(menuBar);    }    public void insertScoreReport(int nScore)    {        Score score=new Score();        if(score.isScoreTop(nScore))        {            JDialog d=new JDialog(this,"恭喜");            InsertURScoreP ius=new InsertURScoreP(nScore,d);            d.add(ius);            d.setSize(306,231);            d.setLocation(400,300);            d.show();        }    }    /**     * 从对方读来字串时,调用这个方法     * @param str 读来的字串     */    public void readStr(String str)    {        //如果读来的数据是对方的状态信息        if(str.startsWith("Status:"))        {            int[] nRivalField=new int[Tetrics.m_nCols*(Tetrics.m_nRows+4)];            str=str.substring(7,str.length());            StringTokenizer st=new StringTokenizer(str,"|");            int i=0;            try            {                while(st.hasMoreTokens())                {                      nRivalField[i]=Integer.parseInt(st.nextToken());                      i++;                }            }catch(Exception e){}            i=0;            for(int col=0;col<Tetrics.m_nCols;col++)                for(int row=0;row<Tetrics.m_nRows;row++)                {                    m_tetrics.m_nRivalField[col][row]=nRivalField[i];                    i++;                }        }        //如果读来的数据是对方消去一行的消息。        else if(str.equals("RemoveLine"))        {            m_tetrics.addRandomLine();        }        //如果读来的数据是对方开始游戏的信息        else if(str.equals("StartGame"))        {            m_tetrics.start();        }        //如果读来的数据是对方暂停游戏的信息        else if(str.equals("PauseGame"))        {            m_tetrics.pause();        }        //如果读来的数据是对方中止游戏的信息        else if(str.equals("StopGame"))        {            m_tetrics.stop();        }        //如果读来的数据是对方要求改变游戏级别的信息        else if(str.startsWith("Level:"))        {            str=str.substring(6,str.length());            try{                m_tetrics.setPlayLevel(Integer.parseInt(str));            }            catch(Exception e){}        }        //如果读来的数据是对方对你谈话的内容        else if(str.startsWith("Talk:"))        {            str=str.substring(5,str.length());            m_pStatus.appendStr("对手:"+str+"\n");        }        //如果读来的数据是对方的游戏已经结束的信息        else if(str.startsWith("GameOver:"))        {            str=str.substring(9,str.length());            if(m_tetrics.m_bGameInPlay)            {                m_tetrics.m_bGameInPlay=false;                m_tetrics.stop();                sendStr("GameOver:"+m_tetrics.m_nTheScore);            }            try{                int nRivalScore=Integer.parseInt(str);                new GameOverD(this,m_tetrics.m_nTheScore,nRivalScore);            }catch(Exception e){e.printStackTrace();}        }    }    /**     * 用来在StatusBar里显示现在的联网状况     */    public void showMessage(String str)    {        m_pStatus.appendStr(str+"\n");    }    /**     * 将信息发给对方     */    public void sendStr(String str)    {        switch(m_nNetStatus)        {            case SERVER:                if(m_server!=null)                    m_server.writeStr(str+"\n");                break;            case CLIENT:                if(m_client!=null)                    m_client.writeStr(str+"\n");                break;        }    }    private class MenuListener implements ActionListener    {        TFrame m_tFrame;        public MenuListener(TFrame tFrame)        {            m_tFrame=tFrame;        }        public void actionPerformed(ActionEvent e)        {        //Invoked when an action occurs.            String sCommand=e.getActionCommand();            if(sCommand.equals("开始游戏"))            {                //控制开始玩游戏的代码加到这儿//                System.out.println("开始游戏");                if(m_tFrame.m_nNetStatus==TFrame.CLIENT)                {                    new WarningD(m_tFrame);                    return;                }                if(m_tFrame.m_nNetStatus==TFrame.SERVER)                {                    m_tFrame.sendStr("StartGame");                    m_tFrame.sendStr("Level:"+m_tFrame.m_tetrics.getPlayLevel());                }                m_tetrics.start();//                m_lStatus.setText("开始游戏");            }            else if(sCommand.equals("结束游戏"))            {                //控制结束游戏的代码加到这儿。                if(m_tFrame.m_nNetStatus==TFrame.CLIENT)                {                    new WarningD(m_tFrame);                    return;                }                if(m_tFrame.m_nNetStatus==TFrame.SERVER)m_tFrame.sendStr("StopGame");                m_tetrics.stop();//                m_lStatus.setText("结束游戏");            }            else if(sCommand.equals("暂停游戏"))            {                //控制暂停游戏的代码加到这儿。                if(m_tFrame.m_nNetStatus==TFrame.CLIENT)                {                    new WarningD(m_tFrame);                    return;                }                if(m_tFrame.m_nNetStatus==TFrame.SERVER)m_tFrame.sendStr("PauseGame");                m_tetrics.pause();//                m_lStatus.setText("暂停游戏");            }            else if(sCommand.equals("关闭游戏"))            {                //控制关闭游戏的代码加到这儿。                dispose();//                m_lStatus.setText("关闭游戏");            }            else if(sCommand.equals("设置级别"))            {                //控制设置级别的代码加到这儿。                if(m_tFrame.m_nNetStatus==TFrame.CLIENT)                {                    new WarningD(m_tFrame);                    return;                }                JDialog d=new JDialog(m_tFrame,"设置级别");                selectLevelP slp=new selectLevelP(m_tFrame,d);                d.getContentPane().add(slp);                d.setSize(252,126);                d.setLocation(400,300);//                System.out.println("ddddd");                d.show();            }            else if(sCommand.equals("查看分数"))            {                //控制设置级别的代码加到这儿。                JDialog d=new JDialog(m_tFrame,"分数报告-Top10");                ScoreReportP srp=new ScoreReportP(d);                d.getContentPane().add(srp);                d.setSize(643,300);                d.setLocation(400,300);                d.show();            }            else if(sCommand.equals("等待对方连接"))            {            //做一个服务器,等待对方连接                if(m_tFrame.m_nNetStatus==TFrame.CLIENT)                {                    new WarningD(m_tFrame);                    return;                }                m_tFrame.m_server=new MyServer(m_tFrame);                System.out.println("开始监听");                m_nNetStatus=SERVER;            }            else if(sCommand.equals("连接对方"))            {            //连接对方                JDialog d=new JDialog(m_tFrame,"连接对方");                d.getContentPane().add(new ConnectP(d,m_tFrame));                d.setSize(284,131);                d.setLocation(400,300);                d.show();            }            else if(sCommand.equals("关于"))            {                JDialog d=new JDialog(m_tFrame,"关于");                d.getContentPane().add(new AboutP(d));                d.setSize(400,320);                d.setLocation(400,300);                d.show();                //控制显示游戏的关于对话框的代码加到这儿。            }        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -