最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實(shí)現(xiàn)彈球小游戲

 更新時(shí)間:2021年06月17日 08:36:45   作者:冀十三  
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)彈球小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

GUI實(shí)現(xiàn)彈球小游戲,供大家參考,具體內(nèi)容如下

先看一下游戲效果圖。

一個(gè)簡單的Demo。也比較簡單,新手試著做一做完善改進(jìn)。

源代碼

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 {
    //創(chuàng)建游戲窗口
    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;
    //記錄小球坐標(biāo)
    private double BallX = 100;
    private double BallY = 200;
    //記錄球拍坐標(biāo)
    private double RACKET_X = 150;
    private final double RACKET_Y = 380;
    //記錄小球速度
    private double speedX = 10;
    private double speedY = 20;
    //記錄游戲是否結(jié)束
    private boolean isOver = false;
    //聲明一個(gè)積分器
    int score= 0;


    //聲明一個(gè)計(jì)時(shí)器。

    ActionListener run = new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            //更新小球坐標(biāo)讓小球動(dòng)起來
            BallY+=speedY;
            BallX+=speedX;
            //重繪界面
            mycanvas.repaint();
            //碰到兩邊的時(shí)候
            if (BallX<=0||BallX>=TABLE_WIDTH-BALL_SIZE){
                speedX=-speedX;
            }
            //碰到上邊界的時(shí)候
            if(BallY<=0){
                speedY=-speedY;
            }
            //接住小球的時(shí)候
            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);

        //內(nèi)部類繼承Canvas充當(dāng)畫布
        private class myCanvas extends Canvas {
            public void paint(Graphics g) {
                //繪制內(nèi)容
                //如果游戲結(jié)束
                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è)積分系統(tǒng)
                    //上色
                    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();

                }
            }
        }

        //創(chuàng)建繪畫區(qū)
        myCanvas mycanvas = new myCanvas();


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

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


            KeyListener keyListener = new KeyAdapter() {
                //重寫鍵盤被按壓的方法
                @Override
                public void keyPressed(KeyEvent e) {
                    //接收按下的是哪個(gè)鍵
                    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);

                        }
                    }
                }

            };

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


        }

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

        }
}

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring?Boot?集成Redisson實(shí)現(xiàn)分布式鎖詳細(xì)案例

    Spring?Boot?集成Redisson實(shí)現(xiàn)分布式鎖詳細(xì)案例

    這篇文章主要介紹了Spring?Boot?集成Redisson實(shí)現(xiàn)分布式鎖詳細(xì)案例,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-08-08
  • Java 面試題和答案 -(上)

    Java 面試題和答案 -(上)

    本文主要介紹Java 面試題和答案,這里整理了Java面試中出現(xiàn)的各種題型,和相應(yīng)知識(shí)點(diǎn),有需要的小伙伴可以好好參考下,幫助大家面試成功
    2016-09-09
  • java json不生成null或者空字符串屬性(詳解)

    java json不生成null或者空字符串屬性(詳解)

    下面小編就為大家?guī)硪黄猨ava json不生成null或者空字符串屬性(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-02-02
  • 通過實(shí)例解析Java List正確使用方法

    通過實(shí)例解析Java List正確使用方法

    這篇文章主要介紹了通過實(shí)例解析Java List正確使用方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Java以編程方式實(shí)現(xiàn)JAR文件的創(chuàng)建

    Java以編程方式實(shí)現(xiàn)JAR文件的創(chuàng)建

    在這篇文章中,我們將為大家詳細(xì)介紹一下利用Java語言以編程方式創(chuàng)建jar文件的過程。文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-07-07
  • java的依賴倒置原則你了解多少

    java的依賴倒置原則你了解多少

    這篇文章主要為大家詳細(xì)介紹了java的依賴倒置原則,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • Java利用ITextPdf庫生成PDF預(yù)覽文件的具體實(shí)現(xiàn)

    Java利用ITextPdf庫生成PDF預(yù)覽文件的具體實(shí)現(xiàn)

    這篇文章主要給大家介紹了Java利用ITextPdf庫生成PDF預(yù)覽文件的具體實(shí)現(xiàn),文中通過代碼示例和圖文給大家介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2024-04-04
  • Java Druid連接池與Apache的DBUtils使用教程

    Java Druid連接池與Apache的DBUtils使用教程

    這篇文章主要介紹了Java Druid連接池與Apache的DBUtils使用方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-12-12
  • 基于Java Tomcat和激活MyEclips的深入理解

    基于Java Tomcat和激活MyEclips的深入理解

    本篇文章是對(duì)Java中的Tomcat和激活MyEclips進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • Java實(shí)現(xiàn)FTP上傳與下載功能

    Java實(shí)現(xiàn)FTP上傳與下載功能

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)FTP上傳與下載功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02

最新評(píng)論

长武县| 红河县| 乌拉特中旗| 高邑县| 贵定县| 临汾市| 江都市| 冕宁县| 健康| 福清市| 乌兰察布市| 监利县| 宜宾市| 宁夏| 阜阳市| 土默特右旗| 乐清市| 高尔夫| 武山县| 林甸县| 景宁| 甘洛县| 新余市| 涿鹿县| 米泉市| 衡东县| 祁阳县| 邢台市| 五指山市| 都江堰市| 华安县| 阜城县| 赣州市| 苍溪县| 军事| 黄石市| 沙河市| 盐城市| 长沙市| 波密县| 宽甸|