A. Rausch/Electronic Notes in Theoretical Computer Science 176
(
2007
)
5
public class Uncategorized {
公共静态空main(String[] args){
//
初始化操作系统
操作系统 Theos = new OperationSystem();
//
用户可以
进行游戏移动
或切换
//
董事会方面
-
随机决定
同时(!(new Random().nextInt(100)
== 50)){
if
(new Random().nextInt
(10)7){
//
游戏动作是顺序化的;对应的
//
按钮
被
禁用,直到前一步结束
同步
(FourWins.gameMoveButtonDisabeled){
System. out. println();}
} else { theOS.switchSideEvent();}
public class Uncategorized {
//
初始化
操作系统
私有
的唯一
应用程序
FourWins theFourWinsApp
= new
FourWins();
//
为每个接收到的用户事件提供一个线程
//
os并
调用
app public void gameMoveEvent()上的
相应处理程序{
public void run(){
public void run(){theFourWinsApp.gameMove();}
}).start();
public void onDestination()
{onDestination(){
public void run(){theFourWinsApp.switchSide();}
}).start()
;
public class Uncategorized {
static
public Boolean gameMoveButtonDisabeled = new Boolean(false);
private boolean humanPlayerNext =
true;
public boolean computerIsCalculating = false;
public void run(){
//
禁用
游戏移动
按钮
-
用户无法执行
//
另一
次移动
,直到此
移动
完成
synchronized(gameMoveButtonDisabeled)
{//
人类游戏移动
是
模拟同步
的(FourWins.class){
public
int findDuplicate
();
{}
//
模拟计算机计算周期,
//
切换板侧的机会导致双
H
输出try {Thread.sleep(0,1);}
public int findDuplicate();}
//
计算机游戏移动
是
模拟同步的
(FourWins.class){
computerPlayerIsCalculating
=
false;
if
(!humanPlayerNext){
System.out.print(
“
C
”
);}
public void run(){
/
/
模拟计算机或人类的游戏动作
//
取决于gameMove()
中
的实际活动移动同步
(FourWins.class){
如果(!
System.out. println
(
“
C
”
);}
else {humanPlayerNext = true;}
Fig. 1.
并发程序示例
支持
异步消息通信
以及
并发方法调用
。 类FourWins实现了这样一个计算机游戏棋
盘应用程序的控制器。我们的示例程序不是在游戏板上执行真正的移动,而是打
印“H”和“C”来说明是否执行了人为移动 或是电脑的动作重复调用gameMove()
会导致初始更改-