/** * 蛇移动的方法 */ public void move(){ //1.去尾。这个很简单,意思就是说去掉咱们snakeList的最后一个元素 snakeBody.removeLast(); //2.加头。这个就相对复杂一点,须要咱们根据蛇当前运动的方向来判断咱们的蛇头应该加在什么位置 Body head = snakeBody.getFirst();//得到当前蛇头的那个对象 int newX = head.x;//咱们要添加的蛇头的横坐标 int newY = head.y;//咱们要添加的蛇头的纵坐标 switch(direction){ case DIR_UP: //若是蛇跑出了上边界咱们就让蛇从下边跑出来 if(head.y <= 0){ newY = GameView.WINDOW_HEIGHT - BODY_SIZE; } else { newY -= BODY_SIZE; } break; case DIR_DOWN: //若是蛇跑出了下边界咱们就让蛇从上边跑出来 if(head.y >= GameView.WINDOW_HEIGHT - BODY_SIZE){ newY = 0; } else { newY += BODY_SIZE; } break; case DIR_LEFT: //若是蛇跑出了左边界咱们就让蛇从右边跑出来 if(head.x <= 0){ newX = GameView.WINDOW_WIDTH - BODY_SIZE; } else { newX -= BODY_SIZE; } break; case DIR_RIGHT: //若是蛇跑出了右边界咱们就让蛇从左边跑出来 if(head.x >= GameView.WINDOW_WIDTH - BODY_SIZE){ newX = 0; } else { newX += BODY_SIZE; } break; } snakeBody.addFirst(new Body(newX, newY)); }咱们须要修改蛇的move方法,咱们须要对蛇头当前的位置进行判断,根据咱们蛇头的临界位置来有选择性的计算出下一个蛇头的位置,这个应该不难理解。
/** * 改变蛇的运动方向 * @param direction 蛇的新的运动方向 */ public void changeDirection(int direction){ this.direction = direction; }有了变向的方法,接着咱们要作的就是在GameView中去监听用户按下键盘的事件了,在这里呢,咱们使用键盘上的上下左右四个方向键来控制蛇的移动,固然,你也能够选择其余的按键。那么,要实现对PC键盘的监听,在咱们的java中,咱们须要去实现一个叫作KeyListener的接口。 这里有一个很重要的概念——接口,孤狼在这里简单的讲一下接口的概念。你们要理解什么叫作接口,能够想象一下咱们的插线板,插线板上是否是有不少两孔的或者三孔的插口,那些就至关因而咱们的接口。接口有什么做用呢,一样以插线板为例,一个电器你要使用他是否是要插进插线板中的特定的那个插孔才能够,你不能说把一个有四个角的插头插到三个孔的插孔中吧。所以接口就是咱们的开发人员定义的一系列规范(具体来讲就是方法),这些方法之后会被什么程序拿去使用咱们在造插线板的时候还不知道。可是只要你之后电器的插头知足我给你的样式(即规范),那么你的电器(程序)就能够正常的运行。还不理解的同窗就只有去查查资料了,由于接口这个概念很重要,是咱们面向对象中的核心之一。
/** * 键盘被按下的事件 */ @Override public void keyPressed(KeyEvent e) { } /** * 键盘弹起的事件 */ @Override public void keyReleased(KeyEvent e) { switch(e.getKeyCode()){ case KeyEvent.VK_LEFT://向左 snake.changeDirection(Snake.DIR_LEFT); break; case KeyEvent.VK_RIGHT://向右 snake.changeDirection(Snake.DIR_RIGHT); break; case KeyEvent.VK_UP://向上 snake.changeDirection(Snake.DIR_UP); break; case KeyEvent.VK_DOWN://向下 snake.changeDirection(Snake.DIR_DOWN); break; } } @Override public void keyTyped(KeyEvent e) { // TODO Auto-generated method stub }这三个方法就是接口中定义好的,咱们的虚拟机会在监听到用户按键盘以后调用相应的方法来处理键盘事件。咱们选择其中的当键盘被松开弹起的事件来实现咱们对蛇的变向的操做。