【Java开源代码栏目提醒】:网学会员为需要Java开源代码的朋友们搜集整理了BingoServer.java相关资料,希望对各位网友有所帮助!
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