bingoserver.java

来自「java learn PPT java learn PPT java learn」· Java 代码 · 共 138 行

JAVA
138
字号
     import java.applet.*;
     import java.awt.*;
     import java.awt.event.*; 
     import java.net.*;
     import java.util.*;
     
     public class BingoServer extends Applet 
     {
          // 用户广播数字的多点传送连接 
          protected MulticastConnection service;

          // 放置内部服务器消息的区域
          protected TextArea textArea;

          // 容纳可用的bingo叫号
          protected int[] numbers;

          // 这句游戏中bingo叫号数目
          protected int numbersCalled;

          // 产生bingo叫号
          protected Random random;

          // 在叫号之间等待的时间
          protected final int CALL_PAUSE = 3000;

          public void init()
          {
               textArea = new TextArea("", 15, 60, TextArea.SCROLLBARS_VERTICAL_ONLY);
               textArea.setEditable(false);
               add(textArea);

               random = new Random();
               reset();

               // 连接到bingo组
               String address = "224.0.0.21";
               int port = 1234;
               try
               {
                    service = new MulticastConnection(address, port);
                    textArea.append("System Message: Java BINGO Server online\n");
               }
               catch(Exception e)
               {
                    textArea.append("System Error: Could not create BINGO Server! " + e + "\n");
               }
          }

          // 填充有效bingo叫号的数组 (1-75)
          public void reset()
          {
               numbers = new int[75];
               for(int i = 0; i < 75; i++)
               {
                    numbers[i] = i+1;
               }
               numbersCalled = 0;

               // 清除文本域
               textArea.setText("");
          }

          public void callNumber()
          {
               // 检查是否所有的数字都被叫过
               if(numbersCalled == 75)
               { 
                    reset();
                    textArea.append("All numbers called!  Restarting game...\n");
               
                    // 向整个组广播"Reset"动作
                    service.send("Reset");

                    // 在开始一局新游戏前等待10秒
                    try
                    {
                         Thread.sleep(10000);
                    }
                    catch(InterruptedException e) {  }
               }

               // 产生下一个叫号数字
               int i = random.nextInt(75);
               while(numbers[i] == -1)
               {
                    i = random.nextInt(75);
               }
                
               // 保存下一个数字并从数组中清除它
               int n = numbers[i];
               numbers[i] = -1;

               // 叫小一个数字
               textArea.append("Calling " + n + "\n");
               service.send(""+n);
               ++ numbersCalled;
          }

          // 启动服务器,不断叫号               
          public void start()
          {
               while(true)
               {
                    callNumber();
                    
                    // 在下一次叫号前暂停
                    try
                    {
                         Thread.sleep(CALL_PAUSE);
                    }
                    catch(InterruptedException e) {  }
               } 
          }

          // 创建一个BingoServer applet并把它加载到一个Frame中
          public static void main(String[] args)
          {
               Applet a = new BingoServer();

               a.init();
               Frame f = new Frame("Java BINGO Server");
               f.setSize(500, 320);
               f.addWindowListener(new WindowAdapter()
                    {
                         public void windowClosing(WindowEvent e) 
                         {
                              System.exit(0);
                         }
                    } );

               f.add(a);
               f.show();
               a.start();
          }

     }    // BingoServer 

⌨️ 快捷键说明

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