public class StartGame1 {
public static void main(String[] args) {
JFrame jFrame = new JFrame();
jFrame.setBounds(10,10,900,720);
jFrame.setResizable(true);
jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
jFrame.add(new Panel1());
jFrame.setVisible(true);
}
}
public class Panel1 extends JPanel implements KeyListener, ActionListener {
int length;
int[] snakex = new int[600];
int[] snakey = new int[500];
String fx;
int foodx;
int foody;
Random random =new Random();
int score;
boolean isStart = false;
boolean isFail= false;
Timer timer = new Timer(100,this);
@Override
public void actionPerformed(ActionEvent e) {
if (isStart&& isFail==false){
if (snakex[0]==foodx && snakey[0] == foody){
length++;
score = score +10;
foodx = 25+25*random.nextInt(34);
foody = 75+25*random.nextInt(24);
}
for (int i = length-1; i >0; i--) {
snakex[i] = snakex[i-1];
snakey[i] = snakey[i-1];
}
if (fx.equals("R")){
snakex[0] = snakex[0]+25;
if (snakex[0]>850){ snakex[0] = 25; }
}else if (fx.equals("L")){
snakex[0] = snakex[0]-25;
if (snakex[0]<25){ snakex[0] = 850; }
}else if (fx.equals("U")){
snakey[0] = snakey[0]-25;
if (snakey[0]<75){ snakey[0] = 650; }
}else if (fx.equals("D")){
snakey[0] = snakey[0]+25;
if (snakey[0]>650){ snakey[0] = 75; }
}
for (int i = 1; i < length; i++) {
if (snakex[0]==snakex[i]&&snakey[0]==snakey[i]){
isFail =true;
}
}
repaint();
}
timer.start();
}
public Panel1() {
init();
this.setFocusable(true);
this.addKeyListener(this);
timer.start();
}
public void init(){
length =3;
snakex[0] = 100;snakey[0] = 100;
snakex[1] = 75;snakey[1] = 100;
snakex[2] = 50;snakey[2] = 100;
fx= "R";
foodx = 25+25*random.nextInt(34);
foody = 75+25*random.nextInt(24);
score = 0;
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
this.setBackground(Color.WHITE);
GameData01.header1.paintIcon(this,g,25,11);
g.fillRect(20,75,850,600);
g.setColor(Color.WHITE);
g.setFont(new Font("微软雅黑",Font.BOLD,18));
g.drawString("长度"+length,750,35);
g.drawString("分数"+score,750,50);
GameData01.food.paintIcon(this,g,foodx,foody);
if (fx.equals("R")){
GameData01.right.paintIcon(this,g,snakex[0],snakey[0]);
}else if (fx.equals("L")){
GameData01.left.paintIcon(this,g,snakex[0],snakey[0]);
}else if (fx.equals("U")){
GameData01.up.paintIcon(this,g,snakex[0],snakey[0]);
}else if (fx.equals("D")){
GameData01.down.paintIcon(this,g,snakex[0],snakey[0]);
}
for (int i = 1; i < length; i++) {
GameData01.body1.paintIcon(this,g,snakex[i],snakey[i]);
}
if (isStart==false){
g.setColor(Color.WHITE);
g.setFont(new Font("微软雅黑",Font.BOLD,50));
g.drawString("按下空格开始游戏",250,300);
}
if (isFail){
g.setColor(Color.RED);
g.setFont(new Font("微软雅黑",Font.BOLD,50));
g.drawString("李洋牺牲了",250,300);
}
}
@Override
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
if (keyCode==KeyEvent.VK_SPACE){
if (isFail){
isFail = false;
init();
}else {
isStart=!isStart;
}
repaint();
}
if (keyCode==KeyEvent.VK_UP){
fx="U";
}else if (keyCode==KeyEvent.VK_DOWN){
fx="D";
}else if (keyCode==KeyEvent.VK_LEFT){
fx="L";
}else if (keyCode==KeyEvent.VK_RIGHT){
fx="R";
}
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
}
}
public class GameData01 {
public static URL headerURL = GameData01.class.getResource("make.png");
public static ImageIcon header1 = new ImageIcon(headerURL);
public static URL upURL = GameData01.class.getResource("statics/snaku.png");
public static URL downURL = GameData01.class.getResource("statics/snakd.png");
public static URL leftURL = GameData01.class.getResource("statics/snakl.png");
public static URL rightURL = GameData01.class.getResource("statics/snak1.png");
public static ImageIcon up = new ImageIcon(upURL);
public static ImageIcon down = new ImageIcon(downURL);
public static ImageIcon left = new ImageIcon(leftURL);
public static ImageIcon right = new ImageIcon(rightURL);
public static URL bodyURL = GameData01.class.getResource("statics/snak2.png");
public static ImageIcon body1 = new ImageIcon(bodyURL);
public static URL foodURL = GameData01.class.getResource("statics/food.png");
public static ImageIcon food = new ImageIcon(foodURL);
}