想学网站建设什么的,wordpress访问目录权限,域名服务商平台,镇江百姓网前言
基于Java的飞翔小鸟游戏#xff0c;本代码来自b站up主分享。本游戏所需的图片素材需要自己获取并下载#xff0c;在此视频下#xff0c;视频链接#xff1a;【Java经典小游戏项目之飞翔的小鸟】 https://www.bilibili.com/video/BV1ou411o7br/?p10share_source…前言
基于Java的飞翔小鸟游戏本代码来自b站up主分享。本游戏所需的图片素材需要自己获取并下载在此视频下视频链接【Java经典小游戏项目之飞翔的小鸟】 https://www.bilibili.com/video/BV1ou411o7br/?p10share_sourcecopy_webvd_source4611ec45767280678018f593c547e388。
启动入口
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 ListCloud clouds; //云彩的飞行速度 private static final int CLOUNG_SPEED 1; //使用到图片资源 private BufferedImage[] img; //用于产生随机数 private Random random; // 构造器初始化数据 public GameFrontGround() { clouds new ArrayList(); img new BufferedImage[CLOUND_COUNT