113行实现超简单可视化弹球java小游戏,小白放心食用

#113行实现超简单可视化弹球java小游戏
本来打算实现一个贪吃蛇,对于我现在还有点困难,,于是写了一个更加简单的弹球小游戏,小白放心食用
在这里插入图片描述

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;


public class snake {
    
    
    Frame frame=new Frame();
    //球大小
    private final int ballX=10;
    private final int ballY=10;
    //球位置
    private int blocalX=250;
    private int blocalY=0;
    //球速度
    private int speedX=5;
    private int speedY=-10;
    //板砖大小
    private final int brickY=10;
    private final int brickX=40;
    private  int speed=10;
    //板砖位置
    private int BlocalX=230;
    private int BlocalY=450;
    //游戏结束
    private boolean isover=false;
    //画布大小
    private final int x=500;
    private final int y=500;
    //timer
    private Timer timer;

    //重写 canvas中paint
    private class mycanvas extends Canvas{
    
    
        @Override
        public void paint(Graphics g) {
    
    

            //游戏结束时
            if (isover){
    
    
                g.drawString("GmaeOver!",240,250);
            }
            //游戏进行时
            else {
    
    
                g.setColor(Color.red);
                g.fillOval(blocalX,blocalY,ballX,ballY);
                g.setColor(Color.yellow);
                g.fillRect(BlocalX,BlocalY,brickX,brickY);
            }
        }
    }
    //创建画板
    mycanvas drawarea=new mycanvas();


    public void init() {
    
    
        //组装与游戏逻辑实现


        KeyListener keyListener = new KeyAdapter() {
    
    
            @Override
            public void keyPressed(KeyEvent e) {
    
    
                int code=e.getKeyCode();
                if(code==KeyEvent.VK_LEFT&&BlocalX-speed>=0)
                    BlocalX-=speed;
                else if(code==KeyEvent.VK_RIGHT&&BlocalX+speed<=x-brickX)
                    BlocalX+=speed;
            }
        };
        frame.addKeyListener(keyListener);
        drawarea.addKeyListener(keyListener);



        ActionListener actionListener=new AbstractAction() {
    
    
            @Override
            public void actionPerformed(ActionEvent e) {
    
    
                if (blocalX<=0||blocalX>=x)
                     speedX=-speedX;
                if(blocalY>BlocalY&&blocalX<BlocalX||blocalY>BlocalY&&blocalX<=BlocalX+brickX) {
    
    
                     timer.stop();
                     isover=true;
                     drawarea.repaint();
                 }
                if(blocalY<=0||blocalY==BlocalY&&blocalX>=BlocalX&&blocalX<BlocalX+brickX)
                     speedY=-speedY;
                blocalX+=speedX;
                blocalY+=speedY;
                drawarea.repaint();
            }
        };
        drawarea.setPreferredSize(new Dimension(x,y));
        frame.add(drawarea);



        frame.addWindowListener(new WindowAdapter() {
    
    
            @Override
            public void windowClosing(WindowEvent e) {
    
    

                System.exit(1);
            }
        });
        timer=new Timer(100,actionListener);

        timer.start();
        frame.pack();
        frame.setVisible(true);

    }
    public static void main(String[] args){
    
    

        new snake().init();
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_48802251/article/details/109248282