教你用java做贪吃蛇 java贪吃蛇

java蛇(教你把Java当蛇用)
用java写snake,要掌握这些知识点 。
1.数组列表的应用 。
用于存储蛇块对象 。
2.摆动编程
你需要画一个图形界面 。
3.事件监督
键盘监控和按钮点击事件监控
4.线程或定时器的应用(这里我们使用线程)
5.食蛇者的核心算法
(面向对象作为java的基本功这里就不写了)
掌握了这些知识点,就可以做贪吃蛇了 。
1.创建蛇块对象
蛇属性有一个位置 。位置由x和y表示,
包snakeeat
公共类蛇法{
私有int x;
私有int y;
public int getX() {
返回x;
}
public void setX(int x) {
this.x = x
}
public int getY() {
返回y;
}
公共空集合(int y) {
this.y = y
}
}
2.创建一个窗口
包snakeeat
导入javax . swing . *;
公共类Snake扩展JFrame{
公共蛇(){
Snakewin win = new Snakewin();
加(赢);
SetTitle(“食蛇者”);
setSize (435,390);
setLocation(200,200);
set visible(true);
}
公共静态void main(String[] args) {
new Snake();
}
}
3.绘图面板(许多逻辑方法都在这个类中)
包snakeeat
导入javax . swing . *;
导入Java . awt . *;
导入Java . awt . event . *;
导入Java . util . *;
导入Java . util . list;
公共类Snakewin扩展JPanel实现ActionListener、KeyListener、Runnable {
JButton newGame,stopGame//开始和结束按钮
int得分= 0;//分数
int speed = 1;//蛇移动的速度
int rx = 0;//食物的X坐标
int ry = 0;
int num1 = 0,num 2 = 0;
int temp = 0;//确定方向
布尔start = false//判断游戏是否已经开始 。
JLabel标签;
list list = new ArrayList();
Random r = new Random();
JDialog die = new JDialog();
JButton ok
【教你用java做贪吃蛇 java贪吃蛇】//构造方法来初始化各种值 。
公共Snakewin() {
new game = new JButton(" start ");
stop game = new JButton(" end ");
this.setLayout(新流程布局(流程布局 。左));
new game . addactionlistener(this);
stop game . addactionlistener(this);
this . addkey listener(this);
this . add(new game);
this . add(stop game);
die.setLayout(new GridLayout(2,1));
ok = new JButton(" Continue ");
ok.addActionListener(这个);
die.setSize(200,200);
die.setLocation(400,300);
die . add(ok);
die . set visible(false);
如果(开始){
Lable = new JLabel("你的分数是:"+分数);
die.add(标签);
}
}
//绘制图形界面和蛇
public void paint component(Graphics g){
super . paint component(g);
g.drawRect(10,40,400,300);
G.drawString ("score:"+score,150,20);
g .拉绳("速度:"+速度,150,35);
g.setColor(新颜色(0,255,0));
如果(开始){
g.fillRect(10 + rx * 10,40 + ry * 10,10,10);
g.setColor(新颜色(255,0,0));
for(int I = 0;I < list . size();i++) {
g.fillRect(10 + list.get(i)) 。getX() * 10,40 + list.get(i) 。getY() * 10,10,10);
}
吃();
}
}
//如何吃食物
public void eat() {
if (list.size()!= 0) {
if (list.get(0) 。getX() == rx && list.get(0) 。getY() == ry) {
得分++;
如果(分数% 10 == 0) {
speed++;
}
rx = r . nextint(40);
ry = r . nextint(30);
snake act tempAct = new snake act();
tempact . setx(list . get(list . size()-1) 。getX());
tempact . sety(list . get(list . size()-1) 。getY());
list . add(tempAct);
}
}
}
//蛇身移动方法
公共void sonMove() {
snake act tempAct = new snake act();
for(int I = 0;I < list . size();i++) {
if (i == 1) {
list.get(i) 。setX(list.get(0)) 。getX());
list.get(i) 。setY(list.get(0)) 。getY());
} else if (i > 1) {
tempAct = list . get(I-1);
list.set(i - 1,list . get(I));
list.set(i,tempAct);
}
}
}
//蛇头移动方法
public void move(int x,int y) {
if (list.size()!= 0) {
if (minYes(x,y)) {
son move();
list.get(0) 。setX(list.get(0)) 。getX()+x);
list.get(0) 。setY(list.get(0)) 。getY()+y);
}否则{
die . set visible(true);
}
}
}
//按钮事件监控
public void action performed(action event e){
if (e.getSource() == newGame) {
new game . set enabled(false);
start = true


推荐阅读