加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java 2D回合制游戏编程:每个玩家可以处理2次鼠标点击

发布时间:2020-12-15 08:32:41 所属栏目:Java 来源:网络整理
导读:所以假设我正在使用 Java的Swing开发一个类似国际象棋的程序.我添加了一个MouseListener来处理用户输入.要进行移动,用户必须单击有效的部分,然后单击有效的位置.在转弯时跟踪2次鼠标点击的最佳方法是什么?我正在考虑使用某种变量来记录转弯的第一次点击或第
所以假设我正在使用 Java的Swing开发一个类似国际象棋的程序.我添加了一个MouseListener来处理用户输入.要进行移动,用户必须单击有效的部分,然后单击有效的位置.在转弯时跟踪2次鼠标点击的最佳方法是什么?我正在考虑使用某种变量来记录转弯的第一次点击或第二次点击.

解决方法

你必须区分两种游戏状态,使用变量就可以了.你也可以按照NomeN评论的建议来思考,并通过交换它们来使用两个不同的监听器.

你的情况很简单,但总的来说,你用来处理这些东西的形式主义是一种有限的状态机,描述你的游戏状态以及如何从一个传递到另一个.

在这种情况下,你可以有一些状态,如:

>球员1转
>球员2回合
>主屏幕
>暂停屏幕
>选项屏幕

例如,你决定如何以及何时从一个州传递到另一个州

>在player1移动后,你转到了player2转身
>在player2移动后,你回到player1转
>当游戏开始时你进入主屏幕
>如果你开始一个新游戏,那么你去玩转1
>如果你在游戏中按下暂停键,你会从转到暂停屏幕,当你关闭时你会回到暂停前的转弯

这只是为了给你一个想法,例如你的MouseListener可以关心状态:

enum State { TURN_P1,TURN_P2,MAIN,PAUSE,... }
public State gameState
...

public void mouseClicked(MouseEvent e)
{
  if (gameState == TURN_P1)
  {
    ...

    if (move_is_legal and so on)
      gameState = TURN_P2;
  }
  else if (gameState == TURN_P2)
  {
    ...

    if (move_is_legal and so on)
      gameState = TURN_P1;
  }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读