Java 飞翔的小鸟

前言

基于Java的飞翔小鸟游戏,本代码来自b站up主分享。本游戏所需的图片素材需要自己获取并下载,在此视频下,视频链接:【Java经典小游戏项目之飞翔的小鸟】 https://www.bilibili.com/video/BV1ou411o7br/?p=10&share_source=copy_web&vd_source=4611ec45767280678018f593c547e388。

启动入口

package com.bird.app;

import com.bird.main.GameFrame;

public class GameApp {
    public static void main(String[] args) {
        new GameFrame();

    }

}

主类

游戏主窗口类

package com.bird.main;

import static com.bird.util.Constant.*;

import java.awt.*;

import java.awt.event.*;

import java.awt.image.BufferedImage;

/**

 * 游戏的主窗口类,所有的关于游戏中绘制的内容都在此类中完成。

 */

public class GameFrame extends Frame {
    //实例化gamebackGround类

    private GameBackGround gameBackGround;

    //实例化Bird类

    private Bird bird;

    //实例化GameBarrierLayer类

    private GameBarrierLayer gameBarrierLayer;

    //实例化GameFrontGround类

    private GameFrontGround gameFrontGround;

    //存放图片的图片

    private BufferedImage buffimg = new BufferedImage(FRAM_WIDTH,FRAM_HEIGNT,BufferedImage.TYPE_4BYTE_ABGR);

    //构造方法中初始化一些参数

    public GameFrame(){
        //窗口是否可见

        setVisible(true);

        //窗口的大小

        setSize(FRAM_WIDTH,FRAM_HEIGNT);

        //窗口的标题

        setTitle(FRAM_TITLE);

        //窗口的初始化位置

        setLocation(FRAM_X,FRAM_Y);

        //窗口的大小不可改变

        setResizable(false);

        //窗口的关闭事件

        addWindowListener(new WindowAdapter() {
            @Override

            public void windowClosing(WindowEvent e) {
                System.exit(0);//结束程序

            }

        });

        //初始化游戏对象

        initGamg();

        new run().start();

        //添加按键监听

        addKeyListener(new KeyAdapter() {
            @Override

            public void keyPressed(KeyEvent e) {
                add(e);

            }

            @Override

            public void keyReleased(KeyEvent e) {
                minu(e);

            }

        });

    }

    //对游戏中的对象初始化

    public void initGamg(){
        gameBackGround = new GameBackGround();

        bird = new Bird();

        gameFrontGround = new GameFrontGround();

        gameBarrierLayer = new GameBarrierLayer();

    }

    class run extends Thread{
        @Override

        public void run() {
            while (true) {
                repaint();

                try {
                    Thread.sleep(33);

                } catch (InterruptedException e) {
                    e.printStackTrace();

                }

            }

        }

    }

    /**

     * 所有的我们需要绘制的内容都在此方法中进行调用绘制

     */

    @Override

    public void update(Graphics g) {
        if(bird.life){
            //得到图片的画笔

            Graphics graphics = buffimg.getGraphics();

            gameBackGround.draw(graphics);

            bird.draw(graphics);

            gameFrontGround.draw(graphics);

            gameBarrierLayer.draw(graphics,bird);

            //一次性的将图片绘制到屏幕中

            g.drawImage(buffimg,0,0,null);

        }else {
            String over = "游戏结束";

            g.setColor(Color.red);

            g.setFont(new Font("微软雅黑",1,60));

            g.drawString(over,180,250);

            String reset = "Space Reset Game";

            g.drawString(reset,25,350);

        }

    }

    //按键

    public void add(KeyEvent e){
        switch (e.getKeyCode()){
            case KeyEvent.VK_UP:

                bird.fly(1);

                break;

            case KeyEvent.VK_SPACE:

                if (bird.life == false) {
                    restart();

                }

                break;

        }

    }

    //抬键

    public void minu(KeyEvent e){
        switch (e.getKeyCode()){
            case KeyEvent.VK_UP:

                bird.fly(5);

                break;

        }

    }

    /**

     * 重置游戏

     */

    public void restart(){
        gameBarrierLayer.restant();

        bird.restartDraw();

    }

}

游戏前景类

package com.bird.main;

import com.bird.util.Constant;

import com.bird.util.GameUtil;

import java.awt.*;

import java.awt.image.BufferedImage;

import java.util.ArrayList;

import java.util.List;

import java.util.Random;

/**

 * 游戏的前景类

 */

public class GameFrontGround {
    //云彩的个数

    private static final int CLOUND_COUNT = 2;

    //存放云彩的容器

    private List<Cloud> clouds;

    //云彩的飞行速度

    private static final int CLOUNG_SPEED = 1;

    //使用到图片资源

    private BufferedImage[] img;

    //用于产生随机数

    private Random random;

    // 构造器初始化数据

    public GameFrontGround() {
        clouds = new ArrayList<>();

        img = new BufferedImage[CLOUND_COUNT
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/499162.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php手机论坛程序,网站开发-php开发手机论坛(8)-编辑帖子

上一篇说了怎么查看帖子,这一篇就来说说怎么把数据库里面的帖子提取出来编辑.代码逻辑是这样的:先验证是否是当前用户的帖子,是的话就提供编辑按钮,这个在view.php中实现.->在数据库中根据get的a来提取已有帖子数据,加载到模板文件中.->最后把得到数据更新到数据库里面,再…

dataframe保存为txt_TxtToMy下载-TxtToMy((txt导入myql数据库))v3.7免费版

TxtToMy是一个数据转换软件&#xff0c;帮助数据库用户导入CSV (TXT)数据到MySQL数据库。用户能够通过TxtToMy更好地将文本(csv)文件数据导入Mysql&#xff0c;十分实用&#xff0c;感兴趣的用户可以自行下载体验。基本简介TxtToMy(txt导入myql数据库)是一款十分优秀的TXT导入到…

外星人台式电脑_推荐|外星人笔记本、主机、台式电脑多少钱?(价格)到底怎么样呢?(双十一)...

自外星人电脑爆火至今&#xff0c;关于它的争议就一直没有断过。有人说外星人电脑是超好用的高配电脑&#xff0c;也有人说买外星人电脑的都是人傻钱多&#xff0c;前段时间我还看到有人还因为这个问题吵了起来。说实话&#xff0c;这真的没有吵架的必要。每个人的消费观念不同…

oracle转换请求无法实施,Oracle服务正常,但不响应请求的问题

服务状态如下&#xff1a;Services Summary...Service "PLSExtProc" has 1 instance(s).Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...Service "orcl" has 1 instance(s).Instance "orcl", status RE…

bpmn流程图_几款流程图制作工具

在流程设计、思路展示、网络布线、工作汇报、简介说明、设计程序等工作中&#xff0c;都少不了要用流程图来形象清晰地说明问题。因此&#xff0c;我们经常需要易用的流程图软件来帮助我们绘制流程图&#xff0c;今天&#xff0c;小编就在这里介绍几款流程图软件。Microsoft Vi…

oracle查询本身字符集,Oracle字符集问题总结

有过一些Oracle使用经验的朋友&#xff0c;大多会知道通过NLS_LANG来设置客户端的情况&#xff0c;NLS_LANG由以下部分组成&#xff1a;NLS_LANG_.&#xff0c;其中第三部分的本意就是用来指明客户端操作系统缺省使用的字符集。所以按正规的用法&#xff0c;NLS_LANG应该按照客…

gdb 没有那个文件或目录_阿黛尔暴瘦变回粉丝喜爱的那个她,依然那样楚楚动人...

阿黛尔(Adele)在《第六夜现场》(Saturday Night Live)主持中首次亮相&#xff0c;穿搭风格再次让人眼前一亮参加15届格莱美奖得主阿黛尔出生于伦敦&#xff0c;已经32岁了&#xff0c;她的R&B音乐获得了两项格莱美奖&#xff0c;在获奖后在表示&#xff0c;她真的不敢相信她…

php 短信验证码对比,php短信验证码的3个优势,你知道是什么吗?

为确保个人用户的合法权益不受损害&#xff0c;也为了确保平台的正常运营&#xff0c;现在各大行业都会通过php短信验证码进行身份验证&#xff0c;比如大家在申请支付宝账号、注册自媒体帐号或者是办理游戏帐号时&#xff0c;都需要先通过php短信验证码审核用户身份后才可继续…

iphonex售价_库克也非常无奈!颁发新规后:依旧未能阻止苹果12的售价大跳水

【11月2日讯】相信大家都知道&#xff0c;苹果在发布了iPhone 12系列手机之后&#xff0c;为了改变以往iPhone手机首发售价就“破发”的尴尬局面&#xff0c;也是直接颁发了新规&#xff0c;限制了国内补贴力度最强的某电商平台—某多多&#xff0c;试图通过重新掌控供应链渠道…

oracle 会话 临时表,Oracle 学习系列之二(会话与事务级临时表)

--创建会话临时表create global temporary table tmp_user_session(user_id int, user_name varchar2(20),user_email varchar2(30))--这句表示 当事务提交时 保留数据on commit preserve rows--向临时表中插入数据insert into tmp_user_session(user_id,user_name,user_email)…

鼠标连点器电脑版_最值得买的鼠标垫推荐-最佳长款桌垫鼠标垫排行榜【2020年10月】...

超大鼠标垫可以将键盘、鼠标都垫着,大而厚实,操作电脑时更方便,不会出现鼠标垫不够用的情况,而且超大鼠标垫还可作为桌垫,美观大方,适合在家使用。今天给大家推荐最佳长款桌垫鼠标垫排行&#xff0c;希望对大家选购鼠标垫有帮助。第一名 美商海盗船|MM300战场风桌垫海盗船的产品…

mybatis调用oracle过程,使用MyBatis调用Oracle存储过程

一、Oracle存储过程存储过程代码&#xff1a;create or replace procedure TEST_DEMO_PROC(param_name IN VARCHAR2, return_result OUT VARCHAR2) isbeginreturn_result : Hello || param_name;end TEST_DEMO_PROC;/测试存储过程&#xff1a;declare result varchar2(100);be…

superoneclick 2.2_减排二氧化碳2.2万吨!“电能替代”助安吉传统产业绿色转型

近日&#xff0c;安吉县孝丰镇丰缘茶场的茶农夏亚红联系上了国网安吉县供电公司的工作人员&#xff0c;希望对方再来指导一下新安装设备的使用和操作。作为安吉县“节能贷”的用户&#xff0c;夏亚红成为该公司推出的茶农专变新服务的首位受益人&#xff0c;她坦言明年炒茶旺季…

linux的内核和发行版本号,【编测编学】linux内核及发行版本相关知识

之前很多孩子就和我说老师我会linux&#xff0c;我就会反问&#xff0c;你学软件测试&#xff0c;你会linux你知道linux的东西如何和企业结合吗&#xff1f;不是你只会一些cd、chmod、chown、ps、find、tar、vim、vi等等就可以说自己会linux的&#xff01;&#xff01;&#xf…

c# spire.xls 设置文字为微软雅黑_只要一分钟,给你的PPT文字加上拼音和声调

每天下午一点&#xff0c;PPT技能进步一点做PPT时必不可少的一项就是字体使用合适的字体可以让我们的PPT更加美观见惯了满屏幕的宋体和微软雅黑你也许想要尝试一下其他的方式来装点的文字何不用拼音&#xff1f;都知道在一些低年级的PPT中会给文字添加拼音相信很多看过语文老师…

linux 查看当前表空间大小,查看表空间和表的使用率

1.查看表空间使用率--查询表空间的总容量select tablespace_name,sum(bytes) /1024/1024 as MB from dba_data_files group by tablespace_name;--查询表空间使用率select total.tablespace_name,round(total.MB, 2) as Total_MB,round(total.MB - free.MB, 2) as Used_MB,roun…

xgboost 怎么读_南宁日语培训考级怎么选_在线日语学习

摘要&#xff1a; 南宁日语培训考级怎么选_在线日语学习为你介绍口语学习&#xff0c;听力先行。要先有输入&#xff0c;再有输出。要想有一口规范的日语口语发音&#xff0c;有必要先许多做听力练习。当你的耳朵熟悉了每个单词的发音&#xff0c;你才有时机说出规范的日语。听…

linux expect 扩容磁盘,openstack VM 磁盘扩容,修复 GPT 分区,更新分区表后,拉伸文件系统...

openstack VM 磁盘扩容&#xff0c;修复 GPT 分区&#xff0c;更新分区表后&#xff0c;拉伸文件系统2014-06-23 分类&#xff1a;Hardware 标签&#xff1a;Openwrt Route起因之前&#xff0c;厂里 openstack 虚拟机&#xff0c;「云主机类型」不同模板定义的磁盘大小。是在原…

glsl shader 雪_深夜食堂里的雪平锅,美味秘诀:手工打造,高效导热,煮煲炸蒸都好用!...

hello&#xff0c;看今天内容之前生活妹给大家推荐一下各种好吃好用的↓↓↓在日本&#xff0c;几乎每个家庭都有一个雪平锅。日本厨师冨田唯介甚至专门为雪平锅撰写了一本书&#xff1a;《雪平锅无油料理》&#xff0c;里面详细讲诉了雪平锅能做的各类美食&#xff0c;从煮物到…

ansole终端链接linux,基于Linux系统的智能家居远程控制系统设计论文.doc

基于Linux系统的智能家居远程控制系统设计论文学科分类号 0801北京邮电大学毕业论文题目 (中文)&#xff1a;基于Linux系统的智能家居远程控制系统设计 (英文)&#xff1a;The smart home remote control system based on Linux system design姓 名学 号8 院 (系)计算机与通信工…