package game;
import java.lang.*;
import net.*;
/**
*
* <p>Title: 俄罗斯方块游戏</p>
* <p>Description: 基于Internet的俄罗斯方块游戏</p>
* <p>Copyright: Copyright (c) 2005</p>
* <p>Company: WXHY/u2014ZJC</p>
* @author 赵建川
* @version 1.0
*/
public class Producer extends Thread {
/**存放Piece的缓冲区*/
private PieceBuffer buffer;
/**生产线程结束的标志*/
private boolean producing=true;
/**依赖的网络接口*/
private Net m_nNetRead;
/**
* 线程的构造器1
* @param pb 存放Piece的缓冲区
*/
public Producer(PieceBuffer pb) {
buffer=pb;
}
/**
* 线程的构造器2
* @param netread 网络接口
* @param pb 存放Piece的缓冲区
*/
public Producer(Net netread,PieceBuffer pb) {
m_nNetRead=netread;
buffer=pb;
}
/**
*重写线程的run方法
* @see #produce()
* @see buffer#finished(boolean)
*/
public void run()
{
produce();
buffer.finished(true);
}
/**
*不停地生产Piece
*/
private void produce()
{
int n;
while(producing)
{
/**这儿等待很重要*/
try {
sleep(1000);//1秒钟生产一次
}
catch (Exception e) {}
try
{
n = (int) (Math.random() * 7);
if(buffer.is_full())
sleep(10000);//等待10秒钟
else
{
if(!buffer.is_full())
{
buffer.put(n);
m_nNetRead.sendStr(m_nNetRead.GAMEPIECE + ":" + n);
}
}
}catch(Exception e){}
}
}
/**
*生产者线程结束
*/
public void stopProduce()
{
producing=false;
}
}