JavaGUI 18 绘制静态小蛇

8.2 绘制静态小蛇


8.2.1 定义蛇的数据结构

程序肯定是要存储数据的,而不是直接上来 就显示图片,即使上来就显示图片,也很难显示。。你都不知道往哪里显示。怎么显示。。

850 x 600 / 25 = 816 个单元格(也就是说只能存储 816 个 提供的关于蛇的图片素材。)

那我们要存储 多少个 坐标呢?肯定 最大是 816 个,所以 我们 要 新建 两个数组,定义大小 都为 900 就行了。用来 存储 每一个 蛇身的 坐标,当然包括蛇头的坐标。还得存储 蛇的长度,还有蛇头的方向。这都是必要的 数据存储。

	//蛇的长度
    public int length;
    //蛇头的 X坐标 和 Y坐标
    int[] snakeX = new int[900];
    int[] snakeY = new int[900];
    //蛇头方向
    String snakeDirection = null;
  • 编写 init() 初始化 方法 进行数据的初始化
//初始化
    public void init() {
        //初始化蛇的长度
        length = 3;
        //初始化蛇头 坐标
        snakeX[0] = 125;snakeY[0] = 100;
        //初始化蛇身 坐标
        snakeX[1] = 100;snakeY[1] = 100;
        snakeX[2] = 75;snakeY[2] = 100;
        //蛇头方向
        snakeDirection = "right";

    }
  • 先绘制静态小蛇
//画静态小蛇
        switch(snakeDirection)
        {
            case "right":
                Data.right.paintIcon(this, g, snakeX[0], snakeY[0]);
                break;
            case "left":
                Data.left.paintIcon(this, g, snakeX[0], snakeY[0]);
                break;
            case "up":
                Data.up.paintIcon(this, g, snakeX[0], snakeY[0]);
                break;
            case "down":
                Data.down.paintIcon(this, g, snakeX[0], snakeY[0]);
                break;
            default:break;
        }
        System.out.println(length);
        for(int i = 1;i<length;++i)
        {
            Data.body.paintIcon(this, g, snakeX[i], snakeY[i]);
        }

首先 判断蛇头当前的方向是什么,然后来画响应的 图片上去!再遍历 所有蛇身的坐标,进行 蛇身的绘画!

  • 设定游戏当前状态:开始、停止
//蛇头方向
        snakeDirection = "right";

//游戏状态
        if(!isStart)
        {
            g.setColor(Color.white);
            //设置字体
            Font 微软雅黑 = new Font("微软雅黑", Font.BOLD, 40);
            g.setFont(微软雅黑);
            g.drawString("按下空格开始游戏",300,300);
        }

如果我们 的游戏状态是 false 的话,那我们就提示 它 一个 字符串。也就是 画上去 一个字符串。

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值