游戏效果截图

源码:
Class1:demon.java
public class demon {
public static void main(String[] args){
new MyFrame();
}
}
Class2:MyFrame.java
import javazoom.jl.decoder.JavaLayerException;
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
public class MyFrame extends JFrame implements KeyListener,Runnable{
private List<BackGround> allBg = new ArrayList<>();
private BackGround nowBg = new BackGround();
private Image offScreenImage = null;
private Mario mario = new Mario();
private Thread thread = new Thread(this);
boolean isOk =false;
public MyFrame(){
this.setSize(800,600);
this.setLocationRelativeTo(null);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
this.setResizable(false);
this.addKeyListener((KeyListener) this);
this.setTitle("SuperMario");
StaticValue.init();
mario = new Mario(10,365);
for(int i=1;i<=3;i++){
allBg.add(new BackGround(i,i==3?true:false));
}
nowBg = allBg.get(0);
mario.setBackGround(nowBg);
JOptionPane.showMessageDialog(this,"靓仔你好,请开始你的表演");
repaint();
thread.start();
try {
new Music();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (JavaLayerException e) {
e.printStackTrace();
}
}
@Override
public void paint(Graphics g) {
if(offScreenImage == null){
offScreenImage = createImage(800,600);
}
Graphics graphics = offScreenImage.getGraphics();
graphics.fillRect(0,0,800,600);
graphics.drawImage(nowBg.getBaImage(),0,0,this);
for(Enemy e:nowBg.getEnemyList())
{
graphics.drawImage(e.getShow(),e.getX(),e.getY(),this);
}
for(Obstacle ob:nowBg.getObstacleList())
{
graphics.drawImage(ob.getShow(), ob.getX(), ob.getY(), this);
}
graphics.drawImage(nowBg.getTower(),600,130,this);
graphics.drawImage(nowBg.getGan(),500,220,this);
graphics.drawImage(mario.getShow(), mario.getX(), mario.getY(), this);
Color c = graphics.getColor();
graphics.setColor(Color.red);
graphics.setFont(new Font("宋体",Font.BOLD,40));
graphics.drawString("当前的分数为"+mario.getScore(),300,100);
graphics.setColor(Color.yellow);
g.drawImage(offScreenImage,0,0,this);
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == 39)
mario.rightMove();
if(e.getKeyCode() == 37)
mario.leftMove();
if(e.getKeyCode() == 38)
{
mario.jump();
}
}
@Override
public void keyReleased(KeyEvent e) {
if(e.getKeyCode() == 37)
mario.leftStop();
if(e.getKeyCode() == 39)
mario.rightStop();
}
@Override
public void run() {