//Food食物类
import java.awt.Rectangle;
import java.util.ArrayList;
import java.util.List;
public class Food {
private List flist = new ArrayList();
final int WIDTH = 10;
final int HEIGTH = 10;
public Food(){
Rectangle rt = new Rectangle(WIDTH, HEIGTH);
flist.add(rt);
}
public List
getFood(){
return flist;
}
}
//ZhangAi障碍物类
import java.awt.*;
import java.util.*;
import java.util.List;
public class ZhangAi {
private List zlist = new ArrayList();
final int WIDTH = 10;
final int HEIGTH = 10;
public ZhangAi(){
for(int i = 0;i<8;i++){
Rectangle rz = new Rectangle(WIDTH, HEIGTH);
zlist.add(rz);
}
}
public List getZhangAi(){
return zlist;
}
}
//snack蛇类
import java.awt.Rectangle;
import java.util.ArrayList;
import java.util.List;
public class Snake {
private List slist = new ArrayList();
final int WIDTH = 10;
final int HEIGTH = 10;
public Snake(){
for(int i=0;i<4;i++){
Rectangle rt = new Rectangle(WIDTH, HEIGTH);
slist.add(rt);
}
}
public List getSnake(){
return slist;
}
}
//MyPanel面板
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import javax.swing.JPanel;
public class MyPanel extends JPanel {
//蛇
Snake sk;
//食物
Food fd;
//障碍物
ZhangAi za;
public MyPanel(){
sk = new Snake();
List slist = sk.getSnake(); //泛型,此List中只能存放 Rectangle类型的对象
int x = 0;
/*
* 画出初始状态的蛇
*/
for(Rectangle rt : slist){ //新的循环。 1.5版本后出的新内容
//Rectangle rt = slist.get(i);
rt.x = x;
rt.y = 20;
x += sk.WIDTH;
}
fd = new Food();
List flist = fd.getFood();
Random rn = new Random();
for(Rectangle rt : flist){
rt.x = rn.nextInt(50)*10;//产生一个0-500的随机整数
rt.y = rn.nextInt(42)*10;
}
za = new ZhangAi();
List zlist = za.getZhangAi();
for(Rectangle rz : zlist ){
rz.x = rn.nextInt(50)*10;
rz.y = rn.nextInt(50)*10;
}
}
public void paint(Graphics g){
//画蛇
List slist = sk.getSnake();
for(int i=0;i Rectangle rt = slist.get(i);
g.fillRect(rt.x, rt.y, rt.width, rt.height);
}
Rectangle rt = slist.get(slist.size()-1);
g.setColor(Color.red);
g.fillRect(rt.x, rt.y, rt.width, rt.height);
//画食物
List flist = fd.getFood();
g.setColor(Color.green);
for(Rectangle rt_f : flist){
g.drawRect(rt_f.x, rt_f.y, rt_f.width, rt_f.height);
g.fillOval(rt_f.x, rt_f.y, rt_f.width, rt_f.height);//填充圆形
}
//画障碍物
List zlist = za.getZhangAi();
g.setColor(Color.BLUE);
for(Rectangle rt_z : zlist){
g.fillRect(rt_z.x, rt_z.y, rt_z.width
, rt_z.height);
}
}
}
//主类
/**
* 蛇头为队列里的最后一个
*/
import java.awt.BorderLayout;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.List;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
public class GameMain {
private JFrame jf;
private MyPanel mp;
private int sign = 1; //代表移动的方向 1:右。2:左.3:上。4:下
private long time = 200; //移动的时间