📄 snakefood.java
字号:
package com.fengbo;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.Rectangle;
import java.util.Random;
/**
* 详细说明了蛇食的生命和位置的控制方法
* @author fengbo
*
*/
public class SnakeFood {
//蛇食物的大小
private int FOOD_WIDTH = 20;
private int FOOD_HEIGHT = 20;
private Random r = new Random();
SnakeGame sg;
int x, y;
public SnakeFood(int x, int y, SnakeGame sg) {
this.x = x;
this.y = y;
this.sg = sg;
}
//画出蛇食物
public void darw(Graphics g) {
Color c = g.getColor();
g.setColor(Color.BLUE);
g.fillOval(x, y, FOOD_WIDTH, FOOD_HEIGHT);
g.setColor(c);
}
//拿到蛇食物占有的区域大小
public Rectangle getRec() {
return new Rectangle(x, y, FOOD_WIDTH, FOOD_HEIGHT);
}
/**
* 介绍了贪吃蛇撞上食物后的处理
* @param sf 是蛇头
* @return 若相撞返回true,否则返回false
*/
public boolean hitSnake(Snake sf) {
if(this.getRec().intersects(sf.getRecFirst())) {
sg.foods.remove(this);
sg.snake.eatFood();
int x = r.nextInt(sg.GAME_WIDTH );
int y = r.nextInt(sg.GAME_HEIGHT);
/*
* 解决SnakeFood出界问题
*/
if(x <= 0) {
x = sg.GAME_WIDTH - sf.SNAKE_WIDTH;
}
if(x >= (sg.GAME_WIDTH - sf.SNAKE_WIDTH)) {
x = sf.SNAKE_WIDTH;
}
if(y <= 50) {
y = sg.GAME_HEIGHT - sf.SNAKE_HEIGHT;
}
if(y > sg.GAME_HEIGHT - sf.SNAKE_HEIGHT) {
y = sf.SNAKE_HEIGHT + 50;
}
//打印出蛇位的位置
System.out.println(x + " " + y);
SnakeFood m = new SnakeFood(x, y, sg);
sg.foods.add(m);
return true;
}
return false;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -