📄 c4slot.java
字号:
// C4Slot.java
/**
*
* @author Sean Bridges
* @version 1.0
* class C4 Slot extends Object
*
* a slot represents one slot in the game board
* a slot stores the player number of the player
* who owns it.
* If the slot is empty then it stores the
* nullPlayer value, C4Board.NULL_PLAYER_NUMBER
*/
import java.util.Vector;
public final class C4Slot
{
//--------------------------------------------
//instance variables
private int contents = C4Board.NULL_PLAYER_NUMBER;//what we store
//listeners are stored in an array to minimize access time.
//the array is grown as listeners are added.
//Vectors arent ideal since all methods are synchronized and slow
//cant use new collection framework since we want to maintain
//compatability with older VM's.
private int numberOfListeners = 0;
private C4SlotListener[] listeners = new C4SlotListener[11];
//--------------------------------------------
//constructors
/** Creates new C4Slot */
public C4Slot()
{
}
//--------------------------------------------
//instance methods
//--------------------------------------------
//listeners
/**
* Add a new listener to the slot.
*/
public void addSlotListener(C4SlotListener listener)
{
//if we have to grow the array
if(numberOfListeners == listeners.length)
{
int newArrayLength = numberOfListeners + 5;
C4SlotListener[] newListeners = new C4SlotListener[newArrayLength];
for(int i = 0; i < numberOfListeners; i++)
{
newListeners[i] = listeners[i];
}
listeners = newListeners;
}
listeners[numberOfListeners] = listener;
numberOfListeners++;
}
/**
* Remove a listener to the slot.
*/
public void removeListener(C4SlotListener listener)
{
//find the listener in the array.
for(int i = 0; i < numberOfListeners; i++)
{
//when we find it, move the last listener into that
//listeners spot, and remove the reference to the last
//listener, decrement the number of listeners, and stop.
if(listeners[i] == listener)
{
listeners[i] = listeners[numberOfListeners - 1];
listeners[numberOfListeners - 1] = null;
numberOfListeners --;
break;
}
}
}
private void notifyListenersContentsChanged(int oldContents, int newContents)
{
for(int i = 0; i < numberOfListeners; i++)
{
listeners[i].contentsChanged(oldContents, newContents);
}
}
//--------------------------------------------
//contents
public void setContents(int newContents)
{
int oldContents = contents;
contents = newContents;
notifyListenersContentsChanged(oldContents, newContents);
}
public int getContents()
{
return contents;
}
//--------------------------------------------
//printing
public String toString()
{
return String.valueOf(contents);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -