zhang_heng_ze 2022-09-30 00:24 采纳率: 0%
浏览 11

关于java飞机大战的一些问题

请问如何在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);
    }

}

img

img

img

img

img

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-30 02:08
    关注
    评论

报告相同问题?

问题事件

  • 创建了问题 9月30日

悬赏问题

  • ¥15 模电中二极管,三极管和电容的应用
  • ¥15 关于模型导入UNITY的.FBX: Check external application preferences.警告。
  • ¥15 气象网格数据与卫星轨道数据如何匹配
  • ¥100 java ee ssm项目 悬赏,感兴趣直接联系我
  • ¥15 微软账户问题不小心注销了好像
  • ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络