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 的话,那我们就提示 它 一个 字符串。也就是 画上去 一个字符串。