事件驱动的棋盘游戏和GUI:如何连接?

时间:2015-03-20 00:15:01

标签: java swing user-interface event-driven

所以我一直在Java上制作有趣兔子(儿童游戏)的棋盘游戏。我首先使它基于文本,但现在我已经使用Swing为它构建了一个GUI。麻烦的是,我以前从来没有制作过GUI,而且GUI本身也很容易制作,我发现将游戏和GUI结合起来非常困难。

我首先要解释游戏的基本概念。

游戏

  • 有2-4名玩家,他们都有四个游戏。
  • 这是一张特殊牌的牌组,"运行"游戏(4种类型:移动1,2或3步和更换棋盘卡。

  • 一回合由玩家揭示卡

      

    如果是移动卡,则移动一块   如果它更换了板卡,则电路板会发生变化并且可能会打开孔。 (棋盘上的某些地方不安全,游戏棋子可能掉进洞里)

因此,游戏背后的想法非常简单。

麻烦,我不知道如何让它与GUI一起工作。我认为它应该是并且开始热情地构建我的GUI。我制作了游戏视图(我将添加图片),主菜单,玩家菜单数量和所有这些东西,只是为了意识到我不知道如何真正使它与事件驱动的游戏一起工作。

Game view, work in progress, never mind the colors

我希望沿着这些方面进行GUI版本的工作  1.首先,用于设置玩家和东西的大量菜单。没关系。  2.在游戏视图中,玩家通过推送"显示卡"来显示卡片。  3.根据卡的类型输入任一阶段:  3.1移动游戏块。这可以通过点击游戏块(侧面的按钮或游戏板上的一块)来实现 - >这将开始移动一个过程 - >最后需要更新电路板 要么 3.2更改电路板,这将更新GUI板。 我真的迷失了如何做到这一点。

我应该使用线程或Swing Worker之类的东西,或者我该怎么办? 你有人想看一些示例代码吗?这可能会有所帮助。请告诉我,我会发布一些内容(它需要对一些内容进行翻译,以及为什么我不想在此处随机发布部分代码)

所有帮助,评论,反馈......一切都将受到高度赞赏,真的很有帮助。我是否已经提到我迷路了?我真的是。

2 个答案:

答案 0 :(得分:1)

你想要培养Model-View-Controller的概念。我们的想法是将您的计划分为多个职责层。

模型

该模型负责维护有关该计划的数据和有状态信息。

该模型提供有关其状态变化的事件通知,感兴趣的各方可能需要知道

视图

负责在屏幕上表示模型的当前状态。它还与用户直接连接,负责收集传递给...的用户输入。

控制器

负责将它们绑定在一起。控制器从视图中获取输入,并根据其规则对模型进行修改。

控制器甚至可以控制从模型流向视图的信息。

在MVC的某些实现中,视图和模型没有任何连接,只能通过控制器进行通信。这既好又坏。它有点不好,因为控制器需要将来自模型的通信加倍并将它们传递给视图,充当代理,可以复制代码。它很好,因为它保护视图和模型免受控制器可能不允许的修改,基于它的规则。我倾向于尝试遵循这个模型,但Swing本身隐藏了视图中的控制器,所以它看起来更加耦合。

这个概念也与code to interface and not implementation的概念有关。这意味着模型,视图和控制器只知道"合同"而不是细节。

这使您可以灵活地更改实现(例如,添加网络播放能力),而无需更改整个程序结构,因为组件仅通过定义的方式相互通信接口

这里的总体意图是分离责任并允许每一层处理它自己的一组问题,而不会混淆整个代码。这也意味着您可以随着时间的推移更改某些图层而不会对程序的其余部分产生负面影响,因为它们没有紧密耦合在一起

既然您可能完全感到困惑,可以查看演示登录MVC的this example

答案 1 :(得分:0)

不久前,我已经在java中制作了纸牌游戏。 不会给出具体的代码细节因为这是不可能的,但我能给你的最佳建议就是这个。

找一个关于秋千的教程。这将有助于您了解gui制作的基础知识以及可用的基本组件。

还要搜索听众,以便根据游戏逻辑使你的gui工作。

仅这些东西足以创造一些基本的东西(甚至是先进的)。

祝你的项目好运