singlenumbercreator.java
来自「软件工程实践课程的答案哦」· Java 代码 · 共 125 行
JAVA
125 行
class SingleNumberCreator implements Runnable
{
private SingleQueue numQueue;
private Thread numCreator;
SingleNumberCreator()
{
}
public void numCreatorStart()
{
numCreator = new Thread(this);
numQueue = new SingleQueue();
createColorSet(15);
numCreator.start();
}
/**
* @return an random number in the range of 1-5
* */
private int createNum()//1~5
{
return (int)(Math.random()*6)+1;
}
/**
* create i colorsets
* @param i the number of ColorSet to create*/
public void createColorSet(int i)
{
int color0 = 0;
int color1 = 0;
int color2 = 0;
for(int t=0;t<i;t++)
{
color0 = this.createNum();
////////////color1////////////
color1 = this.createNum();
while(color1==color0)
{
color1 = this.createNum();
}
////////////color2////////////
color2 = this.createNum();
while(color2==color0||color2==color1)
{
color2 = this.createNum();
}
numQueue.enQueue(new SingleColorSet(color0,color1,color2));
}
}
/**@return the next SigleColorSet*/
public SingleColorSet getNext()
{
SingleColorSet tempColor = numQueue.getNext();
return tempColor;
}
/**
* this thread daemons the Queue, keeping there is always enouth SingleColorSet objects
* */
public void run()
{
while(true)
{
try
{
numCreator.sleep(2000);
if( numQueue.getQueLen()<=2)//has 3 chances
{
int a = numQueue.getQueLen();
if(a==0)
createColorSet(15);
else if(a==1)
createColorSet(14);
else if(a==2)
createColorSet(13);
}
}
catch(InterruptedException e){}
catch(Exception e){}
}
}
public void print()
{
int ptr = numQueue.head;
while(ptr!=numQueue.rear)
{
System.out.println(numQueue.queue[ptr].getColor0()+","
+numQueue.queue[ptr].getColor1()+","
+numQueue.queue[ptr].getColor2()+"->");
ptr = (ptr+1)%15;
}
}
/**
* @return return the number of the block*/
public SingleColorSet getColorSet()
{
SingleColorSet tempColor = numQueue.deQueue();
return tempColor;
}
/*public static void main(String[] args)
{
SingleNumberCreator creator = new SingleNumberCreator();
creator.createColorSet(10);
creator.print();
System.out.println("next is"+creator.getNext().getColor0()+","
+creator.getNext().getColor1()+","
+creator.getNext().getColor2()
);
}*/
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?