溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用java實現彈球小游戲

發布時間:2021-06-17 10:13:18 來源:億速云 閱讀:324 作者:chen 欄目:開發技術

本篇內容主要講解“怎么用java實現彈球小游戲”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么用java實現彈球小游戲”吧!

GUI實現彈球小游戲,供大家參考,具體內容如下

先看一下游戲效果圖。

怎么用java實現彈球小游戲

怎么用java實現彈球小游戲

一個簡單的Demo。也比較簡單,新手試著做一做完善改進。

源代碼

import Com.Style.FontStyle;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
 * @Author: 冀十三
 * @DescIption: 彈球小游戲
 * @Date:2021--06--10--17:08
 */
public class Demo  extends JFrame {
    //創建游戲窗口
    public Demo() {
        init();
    }

    //桌面大小
    private final int TABLE_WIDTH = 450;
    private final int TABLE_HEIGHT = 600;
    //球大小
    private final int BALL_SIZE = 15;

    //球拍大小
    private final int RACKET_WIDTH = 120;
    private final int RACKET_HEIGHT = 20;
    //記錄小球坐標
    private double BallX = 100;
    private double BallY = 200;
    //記錄球拍坐標
    private double RACKET_X = 150;
    private final double RACKET_Y = 380;
    //記錄小球速度
    private double speedX = 10;
    private double speedY = 20;
    //記錄游戲是否結束
    private boolean isOver = false;
    //聲明一個積分器
    int score= 0;


    //聲明一個計時器。

    ActionListener run = new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            //更新小球坐標讓小球動起來
            BallY+=speedY;
            BallX+=speedX;
            //重繪界面
            mycanvas.repaint();
            //碰到兩邊的時候
            if (BallX<=0||BallX>=TABLE_WIDTH-BALL_SIZE){
                speedX=-speedX;
            }
            //碰到上邊界的時候
            if(BallY<=0){
                speedY=-speedY;
            }
            //接住小球的時候
            if ( BallY>=(RACKET_Y-BALL_SIZE)&&BallX>RACKET_X&&BallX<(RACKET_X+RACKET_WIDTH)){
                //得10分
                score+=10;
                speedY=-speedY;

            }
            if ((BallY>(RACKET_Y-BALL_SIZE)&&(BallX<RACKET_X||BallX>RACKET_X+RACKET_WIDTH))){
                timer.stop();
                isOver=true;
                mycanvas.repaint();
            }
        }
    }

        ;
        private Timer timer = new Timer(60, run);

        //內部類繼承Canvas充當畫布
        private class myCanvas extends Canvas {
            public void paint(Graphics g) {
                //繪制內容
                //如果游戲結束
                if (isOver) {
                    //給畫筆顏色
                    g.setColor(new Color(0xFF9A1B44, true));
                    //給畫筆字體
                    g.setFont(new Font("宋體", FontStyle.BOLD, 25));
                    g.drawString("Game Over!", 120, TABLE_HEIGHT / 4);
                    g.drawString("成績"+score+"分", 120, TABLE_HEIGHT / 3);
                    g.drawString("按空格再來一次", 120, TABLE_HEIGHT / 2);
                } else {
                    //否則游戲中
                    //繪制小球

                    g.setColor(new Color(0xFF09FAA6, true));
                    g.fillOval((int) BallX, (int) BallY, BALL_SIZE, BALL_SIZE);
                    //畫一個積分系統
                    //上色
                    g.setColor(new Color(0xE8DC0C77,true));
                    //給畫筆字體
                    g.setFont(new Font("宋體", FontStyle.BOLD, 25));
                    g.drawString("得分:"+score, 25, 25);

                    //繪制球拍
                    g.setColor(new Color(0xFF0E51D7, true));
                    g.fillRect((int) RACKET_X, (int) RACKET_Y, RACKET_WIDTH, RACKET_HEIGHT);
                    timer.start();

                }
            }
        }

        //創建繪畫區
        myCanvas mycanvas = new myCanvas();


        //窗口初始化
        public void init() {

            JFrame jFrame = new JFrame();
            jFrame.setTitle("彈球小游戲");//窗口名稱
            jFrame.pack();//自適應布局
            jFrame.setVisible(true);//可見
            jFrame.add(mycanvas);
            jFrame.setBounds(500, 200, TABLE_WIDTH, TABLE_HEIGHT);
            jFrame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);//關閉
            mycanvas.setPreferredSize(new Dimension(TABLE_WIDTH, TABLE_HEIGHT));//畫布大小
            jFrame.setResizable(false);//大小不可變


            KeyListener keyListener = new KeyAdapter() {
                //重寫鍵盤被按壓的方法
                @Override
                public void keyPressed(KeyEvent e) {
                    //接收按下的是哪個鍵
                    int key = e.getKeyCode();
                    if (key == KeyEvent.VK_LEFT) {
                        if (RACKET_X >0) {
                            RACKET_X -= 30;
                        }
                    }
                    if (key == KeyEvent.VK_RIGHT) {
                        if (RACKET_X < (TABLE_WIDTH - RACKET_WIDTH )) {
                            RACKET_X += 30;
                        }
                    }
                    if (key == KeyEvent.VK_SPACE) {
                        if (isOver=true) {
                            Demo.main(null);

                        }
                    }
                }

            };

            //窗口獲取鍵盤監聽
            jFrame.addKeyListener(keyListener);
            //鍵盤獲取鍵盤監聽
            mycanvas.addKeyListener(keyListener);


        }

        public static void main(String[] args) {
            new Demo();

        }
}

到此,相信大家對“怎么用java實現彈球小游戲”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女