请问如何在java小游戏结束后重新开始?
以下是我的源码并附上图片
package feijidazhan1;
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Random;
import java.util.Vector;
public class mian extends JFrame {
public static int i=0;
public static void main(String[] args) {
new mian();
}
public mian(){
Mypanle mypanle=new Mypanle();
this.setContentPane(mypanle);
this.setSize(480,745);
this.setVisible(true);
this.setLocationRelativeTo(null);
this.addMouseListener(mypanle);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.addKeyListener(mypanle);
//mypanle.init();
Thread t=new Thread(mypanle);
t.start();
}
}
class Mypanle extends JPanel implements MouseListener, KeyListener,Runnable{
me m=new me(10,575);
int socre;
Vector<zidan> zidans=new Vector<>();
Vector<enemy>diren=new Vector<>();
public static boolean b=true;
public void init(){
int f=0;
int f1=0;
while (b){
f++;
if (f%30==0){
zidan z=new zidan(m.getX()+50,m.getY()-5);
zidans.add(z);
}
for (int x=0;x<zidans.size();x++){
zidan zidan = zidans.get(x);
zidan.move();
}
for (int x=0;x<zidans.size();x++){
zidan zidan = zidans.get(x);
for (int i=0;i<diren.size();i++){
enemy enemy = diren.get(i);
if (zidan.getX()>=enemy.getX() && zidan.getX()<=(enemy.getX()+ enemy.getWidth()) && zidan.getY()>=enemy.getY()&&zidan.getY()<=enemy.getY()+enemy.getHeight()-10 && enemy.getY()+enemy.getHeight()>=0
|| zidan.getX()+ zidan.getWidth()>=enemy.getX() && zidan.getX()+ zidan.getWidth()<=enemy.getX()+enemy.getWidth()&&zidan.getY()>=enemy.getY()&&zidan.getY()<=enemy.getY()+enemy.getHeight()-10 && enemy.getY()+enemy.getHeight()>=0
){
socre++;
diren.remove(i);
zidans.remove(x);
}else if ( enemy.getX()>=m.getX()+10 && enemy.getX()<=m.getX()+m.getWidth()-10 && enemy.getY()+enemy.getHeight()>=m.getY() && enemy.getY()+enemy.getHeight()<=m.getY() && enemy.getX()+enemy.getWidth()>=m.getX()
|| enemy.getX()+enemy.getWidth()>=m.getX()+10 && enemy.getX()+ enemy.getWidth()<=m.getX()+m.getWidth()-10 && enemy.getY()>=m.getY()&&enemy.getY()<=m.getY()+m.getHeiht()
){
mian.i=2;
}
}
}
f1++;
if (f1%100==0){
diren.add(new enemy());
}
for (int x=0;x<diren.size();x++){
enemy enemy = diren.get(x);
enemy.move();
}
try {
Thread.sleep(5);
}catch (Exception e){
System.out.println(e);
}
this.repaint();
}
}
@Override
public void paint(Graphics g) {
if (mian.i==0){
ImageIcon feijidazhan=new ImageIcon("E:\\untitled\\src\\imgs\\images\\feiji.jpg");
g.drawImage(feijidazhan.getImage(),0,0,480,700,this);
g.setColor(Color.yellow);
g.setFont(new Font("仿宋",Font.BOLD,40));
g.drawString("点击开始游戏",110,250);
}else if (mian.i==1){
ImageIcon img=new ImageIcon("E:\\untitled\\src\\imgs\\images\\background.png");
g.drawImage(img.getImage(),0,0,img.getIconWidth(),img.getIconHeight(),this);
m.draw(g);
for (int x=0;x<zidans.size();x++){
zidan zidan = zidans.get(x);
zidan.drawzidan(g);
}
for (int x=0;x<diren.size();x++){
enemy enemy = diren.get(x);
enemy.drawdiren(g);
}
g.setFont(new Font("仿宋",Font.BOLD,40));
g.drawString("分数:"+socre,0,35);
}else if (mian.i==2){
g.setFont(new Font("仿宋",Font.BOLD,40));
g.drawString("游戏失败",110,250);
}
}
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
if (e.getButton()==1&&mian.i==0){
mian.i=1;
this.repaint();
}else if (e.getButton()==1&&mian.i==2){
mian.i=1;
this.repaint();
}
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode()==KeyEvent.VK_W){
m.up();
}else if (e.getKeyCode()==KeyEvent.VK_S){
m.down();
}else if (e.getKeyCode()==KeyEvent.VK_D){
m.right();
}else if (e.getKeyCode()==KeyEvent.VK_A){
m.left();
}
this.repaint();
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void run() {
init();
}
}
class me{
private int x;
private int y;
private int width;
private int heiht;
int speed=10;
ImageIcon me=new ImageIcon("E:\\untitled\\src\\imgs\\images\\me1.png");
public void draw(Graphics g){
g.drawImage(me.getImage(),this.x,this.y,this.width,this.heiht,null);
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public int getWidth() {
return width;
}
public void setWidth(int width) {
this.width = width;
}
public int getHeiht() {
return heiht;
}
public void setHeiht(int heiht) {
this.heiht = heiht;
}
public ImageIcon getMe() {
return me;
}
public void setMe(ImageIcon me) {
this.me = me;
}
public me(int x, int y) {
this.x = x;
this.y = y;
this.width=me.getIconWidth();
this.heiht=me.getIconHeight();
}
public void up(){
if (!(this.y<=0)){
this.y-=10;
}
}
public void down(){
if (!(this.y+me.getIconHeight()>=700)){
this.y+=10;
}
}
public void right(){
if (!(this.x+me.getIconWidth()>=480)){
this.x+=10;
}
}
public void left(){
if (!(this.x<=0)){
this.x-=10;
}
}
}
class zidan{
private int x;
private int y;
private int width;
private int heigth;
ImageIcon zidan=new ImageIcon("E:\\untitled\\src\\imgs\\images\\bullet1.png");
public zidan(int x,int y){
this.x=x;
this.y=y;
this.width=zidan.getIconWidth();
this.heigth=zidan.getIconHeight();
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public int getWidth() {
return width;
}
public void setWidth(int width) {
this.width = width;
}
public int getHeigth() {
return heigth;
}
public void setHeigth(int heigth) {
this.heigth = heigth;
}
public void move(){
this.y--;
}
public void drawzidan(Graphics g){
g.drawImage(zidan.getImage(),this.x,this.y,zidan.getIconWidth(),zidan.getIconHeight(),null);
}
}
class enemy{
private int x;
int y;
private int width;
private int height;
ImageIcon diren=new ImageIcon("E:\\untitled\\src\\imgs\\images\\enemy1.png");
Random random=new Random();
public enemy() {
this.x = random.nextInt(400-1)+1;
this.y = random.nextInt(1000)*-1;
this.width=diren.getIconWidth();
this.height=diren.getIconHeight();
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public int getWidth() {
return width;
}
public void setWidth(int width) {
this.width = width;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public void move(){
this.y++;
}
public void drawdiren(Graphics g){
g.drawImage(diren.getImage(),this.x,this.y,this.width,this.height,null);
}
}