代码部分
简单论述:代码注释可能有点乱,里面有些参数是可以改变的,例如:计分的坐标,窗口的大小等。一共有三个状态,可以添加状态和功能。期待一起交流。资料归本人解释所有。
主页类
package cn.ayxy;
import java.awt.Color;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.concurrent.ForkJoinPool.ManagedBlocker;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class BirdGame extends JPanel{
//启动飞翔的小鸟游戏的方法
/*声明变量*/
Bird bird;//鸟类
Column column1;//柱子类1 前一根
Column column2;//柱子类2 后一根
Ground groud;//地面类
BufferedImage background;//创建BufferedImage对象
int score;//分数
boolean gameOver;//判断是否结束
BufferedImage gameOverImage;//背景图片
//游戏结束属性
int state;//游戏的状态
//公开的权限 (访问权限) 静态不可改变的 常量变量名 一定要大写
public static final int START = 0;//游戏初始状态
public static final int RUNNING = 1;//
public static final int GAME_OVER = 2;//游戏结束状态
//游戏属性图片
BufferedImage stateImage;
public static void main(String[] args) throws Exception { //有个抛出异常Exception
/*创建一个窗体*/
JFrame frames = new JFrame("NineFruit");//加入字符串 给窗口一个名字
BirdGame game = new BirdGame();//
frames.add(game);//把画放入画框
//设置窗体大小
frames.setSize(440,670);
//设置窗口显示中间
frames.setLocationRelativeTo(null);
//用户关闭窗口时,做的操作
frames.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
/*setDefaultCloseOperation();是用来设定窗口被关闭时(比如点击了右上角的”x”)的行为。
EXIT_ON_CLOSE:结束窗口所在的应用程序。在窗口被关闭的时候会退出JVM。*/
//设置窗口显示
frames.setVisible(true);
//地面动起来
game.action();
}
//地面移动
public void action()throws Exception{
//移动方法 地面
//写一个监听事件
MouseListener l = new MouseAdapter() {
//鼠标按下的方法 void表示没有返回值
@Override
public void mousePressed(MouseEvent e) {
// 获得点击
//bird.flappy();//调用鸟类的飞翔
//抛出异常 抛给 Java编译器 自己处理
try {
switch (state) {
case GAME_OVER://结束状态
//二次赋值 容器