基于java+swing的贪吃蛇游戏(java+swing)
功能简介:
贪吃蛇游戏
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
this.color = color;
}
public void changeDir(int direction){
this.direction = direction;
}
* 此处只负责鱼的角度的变化,不负责鱼的重绘。 * 重绘在鱼池中实现。
* 这样的好处:保证鱼的绘制和步伐分开。显示层和逻辑层单独处理。(面向对象的责任问题)。 * @param e 事件对象 */ public void actionPerformed(ActionEvent e) { if(isOpen){ monthsize -= 2; if(monthsize<=0) isOpen = false; }else{ monthsize += 2; if(monthsize>=maxMonth) isOpen = true; } } private void initEye(){ switch (direction) { case 0: eyeposx = posx+size/7; eyeposy = posy+size/2-eyesize; break; case 1:
public void paint(Graphics g){
//保存画笔的颜色
Color c = g.getColor();
//绘制鱼脸
g.setColor(color);
//从(posx,posy)点开始,绘制宽为size,高为size,开始角度为(direction%2==0?(direction+1):(direction-1))*90+monthsize,弧度为360-2*maxMonth的弧形
g.fillArc(posx, posy, size, size, (direction%2==0?(direction+1):(direction-1))*90+monthsize, 360-2*monthsize);
//绘制鱼眼
initEye();
g.setColor(eyecolor);
g.fillOval(eyeposx, eyeposy, eyesize, eyesize);
//恢复画笔颜色
g.setColor(c);
}
public void move(){
switch (direction) {
case 0:
posy--;
break;
case 1:
posx++;
break;
case 2:
posy++;
break;
case 3:
posx--;
break;
default:
break;
this.size = size;
if(direction==1 || direction==2 || direction==3 || direction==4)
this.direction = direction;
this.color = color;
this.speed = speed;
eyesize = size/7;
initEye();
time = new Timer(FishPool.reTime,this);
time.start();
}
public void move(){
switch (direction) {
case 0:
posy--;
break;
case 1:
posx++;
break;
case 2:
posy++;
break;
case 3:
public int size = 50; public int direction = RIGHT; private Color color = Color.CYAN; public int posx = 80; public int posy = 80; public int speed = 4;
default:
break;
}
}
public void changeColor(Color color){
this.color = color;
}
public static int randomInt(int a,int b){
int t,n=0;
if(a>b)
{
t=a;a=b;b=t;
}
t=(int)(Math.ceil(Math.log10(b)));//对b向上取整
while(true)
{
n=(int)(Math.random()*Math.pow(10,t));//随机数*10的t次方
if(n>=a && n<=b)
break;
}
//System.out.println("生成的随机数如下:"+n);
return n;
}
public BigMouthFish(int posx,int posy,int size,int direction,Color color,int speed) {
this.posx = posx;
this.posy = posy;
this.size = size;
if(direction==1 || direction==2 || direction==3 || direction==4)
this.direction = direction;
this.color = color;
this.speed = speed;
eyesize = size/7;
initEye();
time = new Timer(FishPool.reTime,this);
time.start();
}
private Color color = Color.CYAN; public int posx = 80; public int posy = 80; public int speed = 4; private int eyesize = size/5; private int eyeposx = posx+size/2; private int eyeposy = posy+size/5; private Color eyecolor = Color.RED; private int maxMonth = 30;



