* 贪吃蛇
*/
i包含文件
import javax.swing.*;
import java.awt.event.*;
public class GreedSnack extends JFrame{
定义WH_panel的实例
定义菜单实例
构造函数
贪吃蛇-框架名称
获得框架容器
设置frame的大小
c.setLayout(null); //设置框架布局
wh_bar=new JMenuBar(); //定义菜单实例
setJMenuBar(wh_bar); //设置菜单
文件"),new JMenu("编辑"主菜单
下拉菜单项
开始"),new JMenuItem("退出")}, //设计菜单的内容
分数"),new JMenuItem("记录分")}
添加菜单
添加下拉菜单
小于菜单的长度
添加
设置菜单监听
开始线程
直接执行right函数
对线程进行捕获错误
键盘监听
监听左键
执行left函数
监听右键
执行right函数
监听上键
panel.up(); //执行up函数
监听下键
执行down函数
} //键盘事件
布局
添加panel
主函数
设置frame的实例
关闭窗口
设置成可见
c函数
{
定义线程
设置变量
初始食物的位置
定义行使方向
定义食物数
定义数组
构造函数
设置panel的大小
创建线程thread
给数组付初值
列标小于20
将数组赋为0
函数
假设现在向右行进
为1
标记左不能运行
标记上可以运行
标记下可以运行
假设现在不是向右行进
向左可以运行
右键函数
假设现在向左行进
为2
向右不可以运行
向上可以运行
向下可以运行
假设没有向左行进
向右可以运行
向上键函数
假设现在向下行进
为3
向上不可以运行
向左可以行进
向右可以运行
假设现在没有向下运行
可以向上行进
向下键的函数
如果现在向上运行
为4
现在不可向下行进
现在可向右行进
现在向左行进
如果现在没有向上行进
可以向下行进
线程函数
循环
向左方
规定范围
当下一个有蛇身
坐标减小变化
向右方
规定范围
当下一个有蛇身
x=x+20; //x坐标增大变化
向上方
规定范围
当下一个有蛇身
坐标减小变化
向下方
规定范围
当下一个有蛇身
坐标增大变化
蛇头的坐标与食物相同
随机食物坐标X
随机食物坐标Y
刷新绘图
食物数进行自加
到达边界跳出循环
蛇身行进函数
此函数为贪吃蛇的重点函数,实现蛇身的各种变化,主要思路是:
将面板分割成20X30的数组,并将其初始值赋为0,每次将蛇头
值赋为1,然后对数组非0的数进行加1操作,若数组内的值大于
蛇本身应有的长度,就将其值改为0,最后对数组不为0的进行绘
图。
当坐标满足数组范围时
此时蛇头数组值为1
检测整个数组
小于20
如果数组中含有不为0的值
wh_array[i][j]=wh_array[i][j]+1; //对其加1操作
} //for
repaint(); //从绘窗口
wh_sleep(200); //睡眠
给数组付初值
小于20
若蛇身长度大于食物数加1
将值变为0
} //for
绘图函数
背景颜色
检测数组
坐标小于20
在wh_array不为0时
蛇身颜色
g.fillRect(20*i, 20*j, 20, 20); //画蛇身
g.setColor(Color.lightGray); //蛇身外框颜色
g.drawRect(20*i, 20*j, 20, 20); //蛇身外框
食物颜色
画食物
当蛇撞墙时
背景颜色
画矩形充当背景
设置字符串颜色
输出game over
自定义sleep函数
调用线程休眠
捕获错误
输出错误
}