| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 17035 人关注过本帖
标题:[分享]我写的贪吃蛇,大家可以看一下
只看楼主 加入收藏
lw8484654
Rank: 1
等 级:新手上路
帖 子:223
专家分:0
注 册:2005-12-1
收藏
得分:0 
if(dir!=Direction.WEST)
dir=Direction.EAST;
}

else if(code==KeyEvent.VK_LEFT){
if(dir!=Direction.EAST)
dir=Direction.WEST;
}

else if(code==KeyEvent.VK_UP){
if(dir!=Direction.SOUTH)
dir=Direction.NORTH;
}

else if(code==KeyEvent.VK_DOWN){
if(dir!=Direction.NORTH)
dir=Direction.SOUTH;
}
楼主能否说名下这些代码的意思啊?不好意思啊,由于我的是1.4版本的,看不到效果......
2006-06-25 18:52
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
上面的代码的意思是判断才不能转向,如果蛇向上走的话,那么就不能把方向改为向下,只能向左,向右
其它的也是一样的

还有,这里的WEST等不是boolean,而是一个Direction 的对象
这个程序里用了很多1.5里面的新特性,所以你最好还是下载个1.5版本的来用一用

可惜不是你,陪我到最后
2006-06-25 18:58
桂圆
Rank: 1
等 级:新手上路
威 望:1
帖 子:101
专家分:0
注 册:2006-5-15
收藏
得分:0 
不错不错,

2006-06-25 19:24
┶车子┵
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2006-6-24
收藏
得分:0 

看不懂,不过还是要谢谢斑竹啊```


Ρs;ヤ成大事者:狠→ゞ毒! Java爱好者群:17657327
2006-06-25 21:30
lw8484654
Rank: 1
等 级:新手上路
帖 子:223
专家分:0
注 册:2005-12-1
收藏
得分:0 

楼主,不好意思啊.我把你的代码当中的蛇给抽出来了......
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class Snake extends JFrame
{
private int sleep=400;
public int loc;
private MySnake ms;
public Snake()
{
Container c=getContentPane();

ms=new MySnake();

setSize(800,600);
setLocation(400,300);
show();

addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});

new Thread(new Runnable()
{
public void run()
{
while(true)
{
try
{
Thread.sleep(sleep);
}
catch (Exception e)
{
return;
}
repaint();
}
}
}).start();
}

public void paint(Graphics g)
{
addKeyListener(new KeyAdapter()
{
public void keyPressed(KeyEvent e)
{
loc=e.getKeyCode();
}
});
super.paint(g);
ms.move(loc);
ms.drawMe(g);
}

public static void main(String args[])
{
new Snake();
}
}
class MySnake
{
private ArrayList list,array;
private Rectangle rec;
private int block=20;
private int bolckSpace=2;
private int j=0;
public MySnake()
{
list=new ArrayList();
array=new ArrayList();
list.add(new Rectangle(10,20,20,20));
list.add(new Rectangle(10+22,20,20,20));
list.add(new Rectangle(10+44,20,20,20));
}
public void move(int x)
{
if(x==40)
{
rec=(Rectangle)list.get(0);
Rectangle rec1=new Rectangle(rec.x,rec.y+(block+bolckSpace),rec.width,rec.height);
list.add(j,rec1);
}
else if(x==38)
{
rec=(Rectangle)list.get(0);
Rectangle rec1=new Rectangle(rec.x,rec.y-(block+bolckSpace),rec.width,rec.height);
list.add(j,rec1);
}
else if(x==37)
{
rec=(Rectangle)list.get(0);
Rectangle rec1=new Rectangle(rec.x-(block+bolckSpace),rec.y,rec.width,rec.height);
list.add(j,rec1);
}
else if(x==39)
{
rec=(Rectangle)list.get(0);
Rectangle rec1=new Rectangle(rec.x+(block+bolckSpace),rec.y,rec.width,rec.height);
list.add(j,rec1);
}
if(isEat())
{
}
else
list.remove(list.size()-1);
}
public boolean isEat()
{
return false;
}
public void drawMe(Graphics g)
{
g.setColor(Color.RED);
for(int i=0;i<list.size();i++)
{
rec=(Rectangle)list.get(i);
g.fillRect(rec.x,rec.y,rec.width,rec.height);
}
list.remove(list.size()-1);
}
};
在这句代码上:list.remove(list.size()-1);如果不用键盘控制的话,这条蛇会自动的消亡......
因为我没有1.5版本......所以我自己把你的程序抽来改去...不好意思啊.....
我不知道楼主的蛇会不会自动的消亡呢?还是用什么方法给控制了节奏.......请楼主指教下.....

2006-06-25 21:38
lw8484654
Rank: 1
等 级:新手上路
帖 子:223
专家分:0
注 册:2005-12-1
收藏
得分:0 
还有Rectangle rec1=new Rectangle(rec.x+(blockWidth+blockSpace),rec.y,rec.width,rec.height);
我总以为,这句代码只会运行一下,就是当我点右键的时候,蛇只能想右动一下,然后原地踏步,为什么会连续的动呢?
2006-06-25 21:58
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
因为有一个线程一直在控制着蛇,
这个程序当然也包括了判断蛇是否已经死的情况
比如,蛇碰到四周的壁会死掉,蛇碰到自己也会死掉

可惜不是你,陪我到最后
2006-06-26 10:05
aiyuheng
Rank: 1
等 级:新手上路
威 望:1
帖 子:656
专家分:0
注 册:2006-1-12
收藏
得分:0 
斑竹做的果然不错,顶一下!

when i want to ask anyone,i will ask myself first.
2006-06-26 10:34
lw8484654
Rank: 1
等 级:新手上路
帖 子:223
专家分:0
注 册:2005-12-1
收藏
得分:0 

斑竹,我分析一下,是否是这样的呢?list.remove(list.size()-1);主要是这句话吧,每一次只移除最后一个元素,然后重画第一个元素,让蛇看起来象动一样,是吗?

2006-06-26 10:41
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
你的理解是对的,
就是在动的时候,把第一个位置加上,把最后一个位置减去
这样看上去就像在动一样了

可惜不是你,陪我到最后
2006-06-26 11:15
快速回复:[分享]我写的贪吃蛇,大家可以看一下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016473 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved