有限状态机游戏编程,java实现状态机

  有限状态机游戏编程,java实现状态机

  这些不同的操作如何在游戏中表现出不同的效果?通过在程序中设置不同的状态,根据当前状态执行任何逻辑。其实这叫:有限状态机!让我们和边肖一起来看看吧。

  在不同的阶段,游戏的逻辑和显示的界面都是不同的。

  以五子棋为例。对应的界面和逻辑在游戏开始时、游戏过程中、胜负已分后都是不同的。

  游戏中分为:自己下棋、对方下棋、暂停游戏、后悔下棋等状态。

  比如RPG游戏中的人物,站立,行走,奔跑,攻击,死亡,都是不同的动画。

  发一颗子弹,从出现到前进,击中目标,或者飞出屏幕,都是不同的逻辑。

  如何达到这些效果?

  在程序中设置不同的状态,根据当前状态执行什么逻辑。

  这叫:有限状态机!

  不是很简单吗?不要小看它。复杂的游戏功能都是靠它实现的。相关教程:Java视频教程

  接下来,我们使用代码来实现一个简单的效果。

  以一个小正方形为例。让它在屏幕上按规定的方式移动。

  包game6

  导入Java . awt . color;

  导入Java . awt . graphics;

  导入javax . swing . jpanel;

  /**

  *谈论Java游戏开发

  *-演示6:有限状态机

  *

  * @作者泰格编程教室

  * https://www.cnblogs.com/chaohi/

  *

  * @日期2019-04-25

  */

  公共类GamePanel扩展JPanel{

  /* *屏幕的宽度和高度*/

  private int width,height

  公共游戏面板(int width,int height) {

  this.width=宽度;

  this.height=高度;

  this.setSize(宽度,高度);

  //设置当前画布以获得焦点。

  this . setfocusable(true);

  }

  /* *正方形的位置*/

  private int fk _ x=60

  private int fk _ y=60

  /**

  *画布的绘制

  */

  public void paint component(Graphics g){

  super . paint component(g);

  //绘制绿色背景

  g.setColor(新颜色(0x 9391d 6));

  g.fillRect(0,0,width,height);

  //画一个大小为80的正方形

  g . set color(color . red);

  g.fillRect(fk_x,fk_y,80,80);

  }

  //四个状态,对应于四个方向的运动

  private static final int stage _ left=0;

  private static final int stage _ right=1;

  private static final int stage _ up=2;

  private static final int stage _ down=3;

  //当前状态,最初在右侧

  私有int stage=stage _ right

  /**

  *游戏逻辑,处理方块的移动,每次在横坐标和纵坐标移动1个像素。

  */

  公共void逻辑()

  {

  开关(阶段)

  {

  案例阶段_右:

  if(fk_x 260){

  fk _ x=fk _ x 1;//向右移动一个像素

  }否则{

  阶段=阶段_下降;//超出指定范围,更改为down状态。

  }

  打破;

  案例阶段_向下:

  如果(fk_y 260){

  fk _ y=fk _ y 1;

  }否则{

  阶段=阶段_左;

  }

  打破;

  案例阶段_左:

  if(fk_x 60){

  fk _ x=fk _ x-1;

  }否则{

  stage=stage _ up

  }

  打破;

  案例阶段_开始:

  如果(fk_y 60){

  fk _ y=fk _ y-1;

  }否则{

  阶段=阶段_右;

  }

  打破;

  }

  }

  }另外两个类GameFrame和GameThread和上一篇博客里的一样,这里就不贴了。

  如何解决写爬虫IP受阻的问题?立即使用。

  运行程序的效果是红色方块从左上角开始,向右、下、左、上移动,顺时针循环。

  在代码中,我们定义了四种状态,对应于四个方向的运动。

  游戏线程的逻辑方法,根据当前状态,改变位置属性,然后线程调用接口重绘。

  有代码示例,界面很粗糙,因为目的是介绍知识点。越简单越容易理解。以上是java游戏开发有限状态机的细节。更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: