我用Java创建了我的第一个游戏.这场比赛是垄断.我正在努力设计游戏以模拟其回合制结构(管理玩家转弯).我想允许单个人控和一个或多个AI控制的玩家玩游戏.

我的具体问题是我不知道是否实现游戏循环,这意味着可以管理玩家的循环以及与大富翁游戏直接相关的变量,(想想诸如提示每个玩家轮到他们的事情,将转弯增加到下一个玩家,或者依次从每个玩家获得骰子.我并不是指“游戏循环”这个术语的更低级含义,它更多地涉及屏幕上的绘图框架,更新物理或以特定的时间更新AI.

我的理解是,我尝试实现我需要的选择是:

>实现完全事件驱动的程序,没有这样的游戏循环,或

>实现一个游戏循环 – 在后台长时间运行并且只要游戏正在运行就基本上永无止境.这将是更具程序性的方法.

当我第一次尝试解决这个问题时,我遇到了我的UI冻结的问题,因为我的游戏循环永无止境,并且完全消耗了它运行的线程(我只是做了一个非常简单的while循环来说明这一点) .所以我开始创建一个SwingWorker来封装我的游戏循环.这解决了UI冻结的问题,但仍然让我想知道我是否走错了路.

作为一般规则,我发现网上的大多数建议似乎都支持任何事件驱动的方法,因此我使用SwingWorker的当前实现可能是朝错误方向迈出的一步.但是我无法完全理解如何为这个特定任务实现一个完全事件驱动的系统(意味着没有游戏循环存在).在我看来,一个循环必须存在于某个地方,以管理玩家转弯.

以下是我的具体问题:

>游戏循环(正如我所描述的那样)适用于基于回合制的游戏,例如Monopoly – 专门用于排队玩家轮流并提示适当的玩家轮流,一次一个玩家(并排队/序列的整个过程)包含转弯的步骤)?

>如果要创建一个纯粹的事件驱动系统来管理玩家回合,你如何迭代每个玩家来提示他们轮到他们并继续迭代直到游戏结束?

>如果要使用游戏循环来解决上述特定问题,是否必须在其自己的线程中运行(可能使用SwingWorker)以避免冻结UI?我的情况是特定于Java的,但我想我也会对非Java特定情况的答案感兴趣.

目前,我使用MVC模式组织了我的代码.我的控制器是我的游戏循环(实际的SwingWorker线程)所在的位置.它远非完整,但它有助于说明我如何管理玩家转向我称之为“游戏循环”.

来自控制器的SwingWorker代码:

swingWorker = new SwingWorker() {

@Override

protected Void doInBackground() throws InterruptedException {

gameLoopRunning = true;

while (gameLoopRunning) {

//to do: use a timer instead of thread.sleep

Thread.sleep(1000);

//user turn prompt

if (model.getActivePlayer().isUserControlled()) {

boolean userRolled = false;

while(!userRolled) {

System.out.println("Roll the dice please...");

Thread.sleep(3000);

}

}

//bot turn prompt

else {

//insert code for bot rolling dice here

model.rollDice();

}

publish(model);

Thread.sleep(1000);

model.incrementPlayerTurn();

publish(model);

}

return null;

}

@Override

protected void process(List chunks) {

Model gameModel = chunks.get(chunks.size() - 1);

//hard-coded for 6 players

for (int i = 0; i < 6; i++) {

view.getPlayerPanel(i).setTurn(gameModel.getPlayers().get(i).isTurn());

}

view.getGamePanel().getDice().setDie1(model.getDie1());

view.getGamePanel().getDice().setDie2(model.getDie2());

}

};

swingWorker.execute();

java模拟回合制游戏大小姐_java – 回合制游戏设计:事件驱动与游戏...相关推荐

  1. java 模拟栈底层用数组_java用数组模拟栈

    package stack2; public interface StackADT { /** * 添加元素 * @param object */ void push(Object object); ...

  2. java 模拟post上传文件_Java模拟post请求上传文件

    Java代码实现 /** * 模拟文件post上传 * @param urlStr(接口地址) * @param formName(接口file接收名) * @param fileName(需要上传文 ...

  3. java 模拟post上传文件_JAVA模拟HTTP post请求上传文件

    在开发中,我们使用的比较多的HTTP请求方式基本上就是GET.POST.其中GET用于从服务器获取数据,POST主要用于向服务器提交一些表单数据,例如文件上传等.而我们在使用HTTP请求时中遇到的比较 ...

  4. JAVA飞机移动斜着走_java复习 做一个简易的飞机游戏

    最近闲来无事复习下java基础,没有特别复杂的功能,一切从简,旨在回顾知识点!!! 游戏效果如下: 我们通过键盘控制飞机前后移动躲避炮弹,如果碰到炮弹则会爆炸,游戏结束并显示游戏坚持的时间 基本的功能 ...

  5. java班级管理系统用到数据库_java班级管理课程设计报告--班级管理系统.docx

    java班级管理课程设计报告--班级管理系统 <Java程序设计>课程设计报告课设题目: 班级管理系统 学院:信息技术工程学院 专 业:计算机科学与技术 目 录1 引言11.1 开发背景及 ...

  6. 猜数字小c语言游戏课程任务书,C语言课程设计猜数字游戏姚成.doc

    课 程 设 计 报 告 课程名称 C语言程序设计报告 课题名称 猜数字游戏 专 业 电气工程及其自动化 班 级 1104 学 号 23 姓 名 姚成 指导教师 黄晓宇 丁敬忠 谭小兰 2012年 6月 ...

  7. HTML期末大学生网页-游戏官网 web期末作业设计网页(游戏主题)

    Web前端开发技术 描述 网页设计题材,DIV+CSS 布局制作,HTML+CSS网页设计期末课程大作业,游戏官网 | 游戏网站 | 电竞游戏 | 游戏介绍 | 等网站的设计与制作 | HTML期末大 ...

  8. java回合制游戏女主牺牲自己_java – 回合制游戏设计:事件驱动与游戏循环

    我用Java创建了我的第一个游戏.这场比赛是垄断.我正在努力设计游戏以模拟其回合制结构(管理玩家转弯).我想允许单个人控和一个或多个AI控制的玩家玩游戏. 我的具体问题是我不知道是否实现游戏循环,这意 ...

  9. java模拟回合打怪游戏

    java模拟回合打怪游戏 玩家的血值:w = 315 怪物的血值:g = 500 玩家和怪物互打 玩家每次攻击怪物产生5-8点伤害 怪物每次攻击玩家产生3-5点伤害 采用回合制,一方血量<=0游 ...

最新文章

  1. ListView 常用属性
  2. 这样就算会了PHP么?-11
  3. PL/SQL Developer Initialization erro
  4. mysql bigint 转int_技术分享 | MySQL ?删库不跑路(建议收藏)
  5. qi接收启动协议_基于QI协议的无线充电通信系统
  6. 学习Python大数据之后,将来主要能做什么?
  7. Linux系统配置静态IP地址步骤
  8. mars老师android开发视频教程5季+java4android视频教程
  9. mysql静默安装_Windows环境Mysql静默安装
  10. 模仿excel复合饼图 (饼-柱)
  11. JS处理文本框只能输入中文、英文、数字,防止SQL特殊字符注入(解决MAC中文输入法下会取得拼音的值的问题)
  12. 利用zui上传excel文件,并通过java后台读取excel中的内容
  13. DATEDIF函数:
  14. 运用类判断三角形的形状
  15. 使用you-get调用本地播放器观看在线视频
  16. aspnet+sqlserver同学录校友录网站系统
  17. Access point name(APN)
  18. 借助ADB冻结与卸载Android系统应用(免ROOT)
  19. coreldraw x7 分布_CorelDRAW-X7教程(全部)
  20. 怎么判断膝关节错位_膝关节基础(三):髌骨脱位查体和诊断

热门文章

  1. Java代理模式之Java外观模式
  2. 一文明白docker是什么
  3. 计算机毕业设计(5)python毕设作品之校园新生报到系统
  4. Educational Codeforces Round 98 (Rated for Div. 2) E. Two Editorials 细节题
  5. 计算机导论广东高等教育出版社,计算机导论课程标准.DOC
  6. 入侵sf服务器技术_如何更高效地实现服务器安全巡检管理?
  7. ASR 隐马尔可夫模型(HMM)
  8. 模电视频笔记:视频补充内容(场效应管的参数)
  9. 如何与意大利人做生意
  10. 小鱼丸粗面~开始了CSDN之旅