本文需求實現了java通過方向鍵控制小球移動的具體過程,供大家參考,具體內容如下
需求分析:
第一 要畫出一個小球
第二 要能通過控制方向鍵控制它的移動
第一部分的實現
1.首先要畫一個大窗體
1
|
public class BallMove extends JFrame |
在開發Java應用程序時,通常情況下利用JFrame創建大窗口。利用JFrame創建的窗口分別包含一個標題、最小化按鈕、最大化按鈕和關閉按鈕
用主類去繼承JFrame類就可以使用它的方法啦
2.接著用一個類來繼承JPanel 如果說JFrame是一個窗口 JPanel就相當于一個畫板 我們可以在上面添加不同的按鈕 文字等元素
1
|
class MyPanel extends JPanel |
3.接下來我們就可以在畫板上畫畫啦
1
2
3
4
5
6
7
|
int x = 10 ; int y = 10 ; @Override public void paint(Graphics g) { super .paint(g); g.fillOval(x,y, 20 , 20 ); } |
利用JPanel中的方法paint 可以畫出小球 Graphics相當于一支畫筆 它有許多的方法 比如畫圓 畫矩形 我們畫了一個半徑為20像素點的小球 在距離x軸y軸各10個像素點的地方
4.此時小球已經畫好了 我們只需要在主方法中調用就可以
首先定義一個MyPanel的對象
1
2
|
MyPanel myPanel = null ; myPanel = new MyPanel(); //面板 |
然后利用構造函數將它add添加進入JFrame大框架
1
|
this .add(myPanel); |
設置框架的大小
1
|
this .setSize( 400 , 300 ); |
關閉按鈕的設置
1
|
this .setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); |
顯示設置
1
|
this .setVisible( true ); |
源碼在下面,這樣我們就可以得到一個小球 ,但是它此時還是不會動
沒關系馬上讓它動起來!
第二部分的實現
1
|
class MyPanel extends JPanel implements KeyListener |
1.首先要實現KeyListener接口 KeyListener可以捕捉鍵盤的輸入并返回輸入的信息
2.其中有一個方法我們必須實現
1
|
public void keyPressed(KeyEvent e) |
也就是當按鈕按下時的方法
3.方法體中的內容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
if (e.getKeyCode()==KeyEvent.VK_DOWN){ //向下的鍵 y++; } //讓面板重繪 else if (e.getKeyCode()==KeyEvent.VK_UP){ //向下的鍵 y--; } //讓面板重繪 else if (e.getKeyCode()==KeyEvent.VK_LEFT){ //向下的鍵 x--; } else if (e.getKeyCode()==KeyEvent.VK_RIGHT){ x++; } |
這個很好理解 就是操控小球的x y坐標 從而進行移動
4.別忘記要重繪
相當于刷新頁面
1
|
this .repaint(); |
好的 關于本次小游戲就給大家分享到這里了,你也可以給自己的小球涂上顏色,或者加快速度都可以的,希望大家多多三連支持哦
源碼如下,大家可以先玩一玩,再去做,學編程的過程可能并沒有那么好玩,往往是枯燥的,甚至會讓人喪失信心,但請相信,你一定可以的,每個高手都是從菜雞走過來的,他們厲害只是因為接觸的時間長罷了。共勉!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
import javax.swing.*; import java.awt.*; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; /** * @author shijiu */ //演示小球通過鍵盤控制上下左右的移動》java事件控制 public class BallMove extends JFrame{ //框架 MyPanel myPanel = null ; public static void main(String[] args) { BallMove ballMove = new BallMove(); } public BallMove(){ myPanel = new MyPanel(); //面板 this .add(myPanel); this .setSize( 400 , 300 ); this .addKeyListener(myPanel); this .setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this .setVisible( true ); } } //KeyListener 是監聽器 可以監聽鍵盤事件 class MyPanel extends JPanel implements KeyListener { //為了小球可以移動 賦個變量 int x = 10 ; int y = 10 ; @Override public void paint(Graphics g) { super .paint(g); g.fillOval(x,y, 20 , 20 ); } //有字符輸出時 該方法就會觸發 @Override public void keyTyped(KeyEvent e) { } //當某個鍵按下時 該方法會觸發 @Override public void keyPressed(KeyEvent e) { System.out.println(( char )e.getKeyCode()+ "被按下去" ); //根據用戶按下的不同鍵 來處理小球的移動(上下左右) //在java中 會給每一個鍵 分配一個值 if (e.getKeyCode()==KeyEvent.VK_DOWN){ //向下的鍵 y++; } //讓面板重繪 else if (e.getKeyCode()==KeyEvent.VK_UP){ //向下的鍵 y--; } //讓面板重繪 else if (e.getKeyCode()==KeyEvent.VK_LEFT){ //向下的鍵 x--; } else if (e.getKeyCode()==KeyEvent.VK_RIGHT){ x++; } //讓面板重繪 this .repaint(); } //當某個鍵釋放了(松開) 該方法會觸發 @Override public void keyReleased(KeyEvent e) { } } |
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/weixin_52357736/article/details/120699373