游戏界面
代码:
package 弹珠游戏;
public class Demo {
public static void main(String[] args) {
GuiWindow gwin = new GuiWindow();
gwin.init();
}
}
package 弹珠游戏;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class GuiWindow extends JFrame {
private int w = 600;
private int h = 800;
Cav cav = new Cav();
ActionListener Alis = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
cav.startBallX();
cav.startBallY();
cav.repaint();
if(cav.getBallX()+10>=w||cav.getBallX()+10<=0){
cav.changeBallspeedX();
cav.repaint();
}
if(cav.getBallY()+10<=0){
cav.changeBallspeedY();
cav.repaint();
}
if(cav.getBallY()>800){
cav.setOver(true);
timer.stop();
}
if((cav.getBallY()>=cav.getPY()&&cav.getBallY()<=cav.getBallY()+5)
&&(cav.getBallX()>=cav.getPX()&&cav.getBallX()<=cav.getPX()+125)){
cav.changeBallspeedY();
cav.repaint();
}
}
};
Timer timer = new Timer(10,Alis);
public void init(){
setTitle("弹珠游戏");
setSize(w,h);
setLocationRelativeTo(null);
timer.start();
addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
cav.changePX(e);
cav.repaint();
}
});
add(cav);
setPreferredSize(new Dimension(600, 800));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setVisible(true);
}
}
package 弹珠游戏;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
public class Cav extends Canvas {
private int ballX = 300;
private int ballY = 20;
private int ballspeedX = 1;
private int ballspeedY = 3;
private int PX = 275;
private final int PY = 700;
private int Pspeed = 20;
private boolean isOver = false;
public void startBallX(){
ballX+=ballspeedX;
}
public void startBallY(){
ballY+=ballspeedY;
}
public int getBallX() {
return ballX;
}
public int getBallY() {
return ballY;
}
public int getPX() {
return PX;
}
public int getPY() {
return PY;
}
public void changeBallspeedX(){
ballspeedX = -ballspeedX;
}
public void changeBallspeedY(){
ballspeedY = -ballspeedY;
}
public void setOver(boolean isOver){
this.isOver = isOver;
}
public boolean getOver(){
return isOver;
}
public void changePX(KeyEvent ke){
if(ke.getKeyCode()==KeyEvent.VK_A&&PX>=0){
this.PX-=Pspeed;
}
if(ke.getKeyCode()==KeyEvent.VK_D&&PX+125<=600){
this.PX+=Pspeed;
}
}
@Override
public void paint(Graphics g) {
if(!isOver) {
g.setColor(Color.red);
g.fillOval(ballX, ballY, 20, 20);
g.setColor(Color.pink);
g.fillRect(PX, PY, 125, 30);
}else{
g.setColor(Color.blue);
g.setFont(new Font("over",Font.BOLD,30));
g.drawString("游戏结束",250,350);
}
}
}
更多推荐
Java GUI实现简单弹珠游戏(新手入门练习项目)
发布评论