生活随笔
收集整理的這篇文章主要介紹了
JavaGUI 简易贪吃蛇代码详解+图片素材
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
簡易貪吃蛇
運行截圖
圖片素材
代碼詳解
package com.du.snake;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Random;
public class GamePanel extends JPanel implements KeyListener, ActionListener {int length
; int[] snakeX
=new int[600]; int[] snakeY
=new int[500]; String fx
; int score
; int foodx
;int foody
;Random random
=new Random();boolean isStart
=false;boolean isFail
=false;Timer timer
=new Timer(100,this); public GamePanel(){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";score
=0;foodx
=25+25*random
.nextInt(34);foody
=75+25*random
.nextInt(24);}
@Overrideprotected void paintComponent(Graphics g
) {super.paintComponent(g
);Data.header
.paintIcon(this,g
,25,11);this.setBackground(Color.WHITE
); g
.setFont(new Font("微軟雅黑",Font.BOLD
,18));g
.setColor(Color.WHITE
);g
.drawString("長度"+length
,750,35);g
.setFont(new Font("微軟雅黑",Font.BOLD
,18));g
.setColor(Color.WHITE
);g
.drawString("分數"+score
,750,55);g
.setColor(Color.BLACK
);g
.fillRect(25,75,850,600);if (fx
.equals("R")){Data.right
.paintIcon(this,g
,snakeX
[0],snakeY
[0]); }else if (fx
.equals("L")){Data.left
.paintIcon(this,g
,snakeX
[0],snakeY
[0]); } else if(fx
.equals("U")){Data.up
.paintIcon(this,g
,snakeX
[0],snakeY
[0]); }else if(fx
.equals("D")){Data.down
.paintIcon(this,g
,snakeX
[0],snakeY
[0]); }for (int i
= 1; i
< length
; i
++) {Data.body
.paintIcon(this,g
,snakeX
[i
],snakeY
[i
]); }Data.food
.paintIcon(this,g
,foodx
,foody
);if (isStart
==false){g
.setFont(new Font("微軟雅黑",Font.BOLD
,40));g
.setColor(Color.WHITE
);g
.drawString("按下空格開始游戲",300,300);}if (isFail
){g
.setFont(new Font("微軟雅黑",Font.BOLD
,40));g
.setColor(Color.RED
);g
.drawString("失敗按下空格重新開始",300,300);}}@Overridepublic void keyTyped(KeyEvent keyEvent
) {}@Overridepublic void actionPerformed(ActionEvent actionEvent
) {if (isStart
&&isFail
==false){if (snakeX
[0] == foodx
&& snakeY
[0] == foody
) {length
++;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();
}}@Overridepublic void keyPressed(KeyEvent keyEvent
) {int keyCode
=keyEvent
.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";}}@Overridepublic void keyReleased(KeyEvent keyEvent
) {}
}
package com.du.snake;
import javax.swing.*;
import java.net.URL
;
public class Data {public static URL headerURL
=Data.class.getResource("statics/header.png");public static URL upURL
=Data.class.getResource("statics/up.png");public static URL downURL
=Data.class.getResource("statics/down.png");public static URL leftURL
=Data.class.getResource("statics/left.png");public static URL rightURL
=Data.class.getResource("statics/right.png");public static URL bodyURL
=Data.class.getResource("statics/body.png");public static URL foodURL
=Data.class.getResource("statics/food.png");public static ImageIcon header
=new ImageIcon(headerURL
);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 ImageIcon body
=new ImageIcon(bodyURL
);public static ImageIcon food
=new ImageIcon(foodURL
);
}
package com.du.snake;
import javax.swing.*;
public class StarGame {public static void main(String[] args
) {JFrame frame
=new JFrame();frame
.setBounds(10,10,900,720);frame
.setResizable(false);frame
.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE
);frame
.add(new GamePanel());frame
.setVisible(true);}
}
總結
以上是生活随笔為你收集整理的JavaGUI 简易贪吃蛇代码详解+图片素材的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。