最近java基礎部分快學完了,學了個Java gui小游戲,兄弟們可以看看😁😁😁
Images.java
package com.pl.text;
import java.net.URL;
import javax.swing.*;
public class Images {
static URL bgURL=Images.class.getResource( "/images/bg2.jpg");
static ImageIcon bgImg=new ImageIcon(bgURL);
static URL bulletURL=Images.class.getResource( "/images/bullet.png");
static ImageIcon bulletImg=new ImageIcon(bulletURL);
static URL planeURL=Images.class.getResource( "/images/plane.png");
static ImageIcon planeImg=new ImageIcon(planeURL);
}
GameStart.java
package com.pl.text;
import java.awt.*;
import javax.swing.*;
public class GameStart {
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame jf=new JFrame();
jf.setTitle("你最帥");
int width=Toolkit.getDefaultToolkit().getScreenSize().width;
int height=Toolkit.getDefaultToolkit().getScreenSize().height;
jf.setBounds((width-800)/2, (height-800)/2, 800, 800);
jf.setResizable(false);
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
GamePanel gp=new GamePanel();
jf.add(gp);
jf.setVisible(true);
}
}
GamePanel.java
package com.pl.text;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class GamePanel extends JPanel{
int planeXs;
int planeYs;
int bulletXs[]=new int[15];
int bulletYs[]=new int[15];
boolean isStart=false;
boolean isDie=false;
boolean up,down,left,right;
Timer timer;
double degrees[]=new double[15];
long startTime;
long endTime;
public void init() {
planeXs=500;
planeYs=500;
for(int i=0;i<15;i++) {
bulletXs[i]=200;
bulletYs[i]=200;
degrees[i]=Math.random()*2*Math.PI;
}
}
public GamePanel() {
init();
this.setFocusable(true);
//監聽器
this.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
super.keyPressed(e);
int keycode=e.getKeyCode();
// System.out.println(keycode);
if(keycode==32) {
if(isDie) {
isDie=false;
init();//初始化資料
}
else{
isStart=!isStart;
startTime=System.currentTimeMillis();
repaint();
}
}
if(keycode==KeyEvent.VK_UP) {
up=true;
}
if(keycode==KeyEvent.VK_DOWN) {
down=true;
}
if(keycode==KeyEvent.VK_LEFT) {
left=true;
}
if(keycode==KeyEvent.VK_RIGHT) {
right=true;
}
}
@Override
public void keyReleased(KeyEvent e) {
super.keyReleased(e);
int keycode=e.getKeyCode();
if(keycode==KeyEvent.VK_UP) {
up=false;
}
if(keycode==KeyEvent.VK_DOWN) {
down=false;
}
if(keycode==KeyEvent.VK_LEFT) {
left=false;
}
if(keycode==KeyEvent.VK_RIGHT) {
right=false;
}
}
});
timer=new Timer(50,new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(isStart==true&&isDie==false) {
if(left==true) {
planeXs-=10;
}
if(right==true) {
planeXs+=10;
}
if(up==true) {
planeYs-=10;
}
if(down==true) {
planeYs+=10;
}
for(int i=0;i<15;i++) {
bulletXs[i]+=Math.cos(degrees[i])*10;
bulletYs[i]+=Math.sin(degrees[i])*10;
if(bulletXs[i]<=0) {//這里特別注意關系運算子和資料大小
bulletXs[i]=800;
}
if(bulletXs[i]>800) {
bulletXs[i]=0;
}
if(bulletYs[i]<=0) {
bulletYs[i]=800;
}
if(bulletYs[i]>800) {
bulletYs[i]=0;
}
boolean flag=new Rectangle(planeXs,planeYs,30,30).intersects(new Rectangle(bulletXs[i],bulletYs[i],5,10));
if(flag) {
isDie=true;
endTime=System.currentTimeMillis();
}
}
repaint();
}
}
});
timer.start();
}
@Override
protected void paintComponent(Graphics g){
super.paintComponent(g);
Images.bgImg.paintIcon(this, g, 0, 0);
Images.planeImg.paintIcon(this, g, planeXs, planeYs);
for(int i=0;i<15;i++) {
Images.bulletImg.paintIcon(this, g, bulletXs[i], bulletYs[i]);
}
if(isStart==false) {
g.setColor(new Color(125,245,80));
g.setFont(new Font("微軟雅黑",Font.BOLD,40));
g.drawString("開始游戲",310,400);
}
if(isDie) {
g.setColor(new Color(125,245,80));
g.setFont(new Font("微軟雅黑",Font.BOLD,40));
g.drawString("游戲結束,經歷"+(endTime-startTime)+"ms",200,250);
}
}
}



轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/291572.html
標籤:其他
上一篇:BIM仿真軟體
下一篇:【C語言開源庫】在CLion上使用一個輕量的適合嵌入式系統的環形緩沖庫ring buffer 和C語言Unity單元測驗框架
