1 写在前面
前面已经写完了蛇类以及食物类,接下来我们完成图形界面类,用到的是java gui
how2j的gui教程
先定义一个图像缓冲区iBuffer,然后取得图像缓冲区的画笔gBuffer//类属性定义:双缓冲,避免gui闪烁
private Image iBuffer;
private Graphics gBuffer;
//获取图像缓冲区的画笔
if(iBuffer==null)
{
iBuffer=createImage(this.getSize().width,this.getSize().height);
gBuffer=iBuffer.getGraphics();
}
super.paint(gBuffer);将要输出的内容放在缓冲区gBuffer(实际上是画在了iBuffer图片上,然后通过画笔g直接显示出来this.setBackground(Color.white);//设置背景板为白色
//绘制游戏区域
gBuffer.setColor(Color.GRAY);
gBuffer.fillRect(0,0,this.console_x+block_x,this.console_y+block_y);
//获取蛇的位置
ArrayList snakePos=snake.getSnakePos();
int len=snake.getLength();
//获取当前蛇头方向
Dir headDir=snake.getDir();
//获取食物位置
Pos foodPos=food.getPos();
//画贪吃蛇头部
switch (headDir){
case UP :
Source.up.paintIcon(this,gBuffer,snakePos.get(0).x+block_x,snakePos.get(0).y+block_y);
break;
case DOWN :
Source.down.paintIcon(this,gBuffer,snakePos.get(0).x+block_x,snakePos.get(0).y+block_y);
break;
case LEFT :
Source.left.paintIcon(this,gBuffer,snakePos.get(0).x+block_x,snakePos.get(0).y+block_y);
break;
case RIGHT :
Source.right.paintIcon(this,gBuffer,snakePos.get(0).x+block_x,snakePos.get(0).y+block_y);
break;
default:
System.out.println("error head dir");
break;
}
//画贪吃蛇身体
for(int i=1;i
项目包下载链接
3 小结
到这里整个贪吃蛇就已经初步完成了,并且边学边做已经学习了how2j中最底下两行的大部分内容了。