//drawNode():绘画某一结点(蛇身或食物)
//-
私有空绘图节点(图形g,节点n)
{
g.fillRect(n.x*nodeWidth,n.y*nodeHeight,nodeWidth-1,node height-1);
}
//-
//updateScore():改变计分牌
//-
public void updateScore()
{
字符串s='Score: '蛇模型。分数;[第页]
labelScore.setText
}
//-
//begin():游戏开始,放置贪吃蛇
//-
void begin()
{
如果(蛇模型==null||!snakeModel.running)
{
蛇模型=新蛇模型(这个,canvasWidth/nodewidth,
这个。canvasheight/node head);
(新线程(蛇形模型))。start();
}
}
//-
//main():主函数
//-
公共静态void main(字符串[]参数)
{
GreedSnake GS=new GreedSnake();
}
}
/**************************************************************************
*文件名:蛇模型。爪哇岛
*作者列车员:杰森
*要点分析:
*1)数据结构:矩阵[][]用来存储地图上面的信息,如果什么也没有设置为假的,
* 如果有食物或蛇,设置为真的;节点阵列,一个链接列表,用来保存蛇的每
* 一节;食物用来保存食物的位置;而结节类是保存每个位置的信息。
*2)重要函数:
*更改方向(内部新方向),用来改变蛇前进的方向,而且只是
* 保存头部的前进方向,因为其他的前进方向已经用位置来指明了。其中新方向
* 必须和原来的方向不是相反方向,所以相反方向的值用了同样的奇偶性。在测试
* 的时候使用了方向%2!=新方向%2进行判断。
* moveOn(),用来更新蛇的位置,对于当前方向,把头部位置进行相应改变。如果越界,
* 结束;否则,检测是否遇到食物(加头部)或身体(结束);如果什么都没有,加上头部,
* 去掉尾部。由于用了合框架数据结构,省去了相当多的麻烦。
*************************************************************************/
导入Java。乌提尔。*;
导入javax。摇摆。*;
//-
//Node:结点类
//-
节点类
{
int x;
int y;
节点(int x,int y)
{
this.x=x
this.y=y
}
}
//-
//蛇形模型:贪吃蛇模型
//-
类蛇模型实现了可追捕的
{
GreedSnake gs
布尔[][]矩阵;//界面数据保存在数组里
链表节点数组=新链表();
节点食物;
int maxX//最大宽度
int maxY//最大长度
(同Internationalorganizations)国际组织方向=2;//方向
布尔运行=假;
int timeInterval=200//间隔时间(速度)
double speedChangeRate=0.75//速度改变程度[第页]
布尔暂停=假;//游戏状态
(同Internationalorganizations)国际组织得分=0;
int计数移动=0;
//UP和向下是偶数对吧和左边的是奇数
公共静态最终int UP=2;
公共静态最终int DOWN=4;
公共静态最终int LEft=1;
public static final int RIGHT=3;
//-
//GreedModel():初始化界面
//-
公共蛇模型(GreedSnake gs,int maxX,int maxY)
{
this.gs=gs
this.maxX=maxX
this.maxY=maxY
matrix=new boolean[MaxX][];
for(int I=0;i20?10 : MaxX/2;
for(int I=0;我