Java中简单棋盘游戏的Canvas或Swing?

Posted

技术标签:

【中文标题】Java中简单棋盘游戏的Canvas或Swing?【英文标题】:Canvas or Swing for simple board game in Java? 【发布时间】:2017-04-27 19:49:17 【问题描述】:

所以我正在尝试用 Java 构建一个非常基本的棋盘游戏原型。游戏本身的棋盘视图基本上只会显示数字和其他元素,根本无法与此视图交互,还有其他视图将与挥杆编程,用于与游戏交互.我应该仍然使用摇摆来构建像带有分层窗格的游戏板的棋盘,还是应该使用相当过时的 awt 画布?是否还有其他可能的候选人不会过于矫枉过正?

我想摇摆仍然是获得方法,将它用于仅显示具有不同层的几张图像的东西似乎太不直观了。

【问题讨论】:

欢迎来到 Stack Overflow!要求我们推荐或查找书籍、工具、软件库、教程或其他场外资源的问题对于 Stack Overflow 来说是题外话,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,describe the problem 以及迄今为止为解决它所做的工作。 不小心混合 Swing 和 AWT 组件可能会产生unexpected results。 (我没有投反对票,但是)这个问题非常不具体。 CanvasJPanel 之间的区别对于实现它的内容和方式来说可以忽略不计。由于trashgod 提到的几点,您几乎不应该永远在Swing 中使用Canvas。通常,您在JPanel 上进行自定义绘画。但实际的绘制代码基本上是相同的(并且您没有必须在 Swing 中使用一些花哨的分层窗格 - 您可以像在 Canvas 上一样在 JPanel 上绘制...) 【参考方案1】:

游戏应该有一个游戏循环,所以 Swing 并不是最好的方法。最好将CanvasThread 一起使用,或者将JPanelTimer 一起使用。

【讨论】:

我不确定我是否同意,它基本上是一个棋盘游戏的原型,所以不需要动画,而且需要很长时间才能改变棋盘。 如果 OP 想在棋盘上制作带有动画的实时战略游戏,可能是的。如果没有,实现游戏循环将是一种矫枉过正。

以上是关于Java中简单棋盘游戏的Canvas或Swing?的主要内容,如果未能解决你的问题,请参考以下文章

prepareRenderer的Java swing问题

在简单的 Java Swing 游戏中使用哪些容器/图形组件?

原生JS+Canvas实现五子棋游戏

原生JS+Canvas实现五子棋游戏

原生 JS + Canvas 实现五子棋游戏

强制 Java 刷新 Java Swing GUI