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中最底下两行的大部分内容了。