目录
- (一)效果
-
- (1)游戏过程(静态截图展示
- (2)动态游戏界面示例
- (二)源代码示例
- (三)说明
(一)效果
(1)游戏过程(静态截图展示
)
载入游戏:

帮助:
点击“新游戏”,建立一个角色,新建立的角色,建立之后会储存作为供用户下次玩儿备选的角色,同时也可以删除已有的角色。(也可以从已经有的角色名字中选择~)
选择游戏难度:为了便于测试,这里我选的 “容易” ^ _ ^ ~ ~ ~
这是我玩儿的基础(游戏分为好几个级别,这只是其中一个级别)
第一关:很容易
这是第二关
我“挂”了哈哈,还可以继续玩儿,这里我仅仅作为界面的展示~~
挺有意思哒~
点击“退出游戏”:
还有一些界面,这里不再展示。
(2)动态游戏界面示例
(可以使用鼠标直接玩儿,也可以通过键盘来操作,可以看游戏帮助哈~)
(二)源代码示例
package model.entities;
import java.awt.Dimension;
import java.util.ArrayList;
public abstract class Bird extends Entity { //定义一个抽象类Bird(鸟类) 继承自 Entity类(实体)
protected short flyingTime; //定义一个short类型的变量 flyingTime(飞行时间)
protected int eggLeft; //定义一个int类型的变量eggLeft()
protected ArrayList<Egg> eggs; //定义一个ArrayList集合 eggs(泛型是Egg,应该为蛋的一个数组)
protected boolean isFlying; //判断是否为飞行状态
protected boolean isMoving; //判断是否为移动状态
private double time; //定义一个double类型的变量 time
protected Dimension frameSize; //定义一个Dimension的frameSize的变量 封装框架的长宽
private double accelX; //定义一个double类型的 变量accelX 可能是X轴加速
private double accelY; //定义一个double类型的 变量accelY 可能是Y轴加速
protected int startLocationX; //定义一个int类型的变量startLocationX(X轴开始位置)
protected int startLocationY; //定义一个int类型的变量startLocationY(Y轴开始位置)
private long lastTime; //定义一个long类型的变量lastTime (最后时间)
private long flyingTimeLeft; //定义一个long类型的变量flyingTimeLeft(最多飞行时间)
//l'oiseau est construit avec sa taille 鸟构造,其大小
public Bird(int width, int height) { //创建Bird类构造方法 参数是长度跟高度
super(100,440,width,height); //继承自父类的构造方法
isMoving = false; //将false赋值给isMoving 初试状态为停止
time = 0.1; //经过测试 这个值影响小鸟初试的
accelX = 0; //经过测试 似乎影响小鸟速度
startLocationX = 100; //X 跟 Y 这俩个只字面意思是起始位置,但是经过测试
startLocationY = 440; //会跟小鸟的速度有关系,可能是与上面俩变量有关,类似v=s/t
accelY = 9.81; //经过测试 这个是重力加速度
flyingTimeLeft = 10000; //这个是最多飞行时间的意思
}
public int getEggLeft() { //定义一个获取eggLeft的方法
return eggLeft;
}
public void setEggLeft(int i) { //定义一个设置eggLeft的方法 讲参数i赋值给当前类的eggLeft
this.eggLeft = i;
}
public int getStartLocationX() //定义一个获取X初始位置的方法
{
return startLocationX;
}
public int getStartLocationY()//定义一个获取Y初始位置的方法
{
return startLocationY;
}
public abstract void hovering(); //重定义的方法仅能够鸟类的盘旋 方法只为了可以悬停飞行的鸟重新定义
public boolean isFlying() { //定义一个方法 判断是否在飞行状态
return isFlying;
}
public void move() { //定义一个move方法
if(isFlying){
if(isMoving){ //这俩个代码 可能是算出小鸟最后的击中点坐标
hitBox.x = (int) Math.round(speed*Math.cos(angle)*time+0.5*accelX*time*time+startLocationX);
hitBox.y = (int) Math.round(0.5*accelY*time*time-Math.sin(angle)*speed*time+startLocationY);
time+=0.1;
}
long currentTime = System.currentTimeMillis(); //currentTimeMillis() 返回当前时间以毫秒为单位
flyingTimeLeft -= (currentTime - lastTime); //飞行时间 = 当前时间 - 最后时间
lastTime = currentTime; //把当前时间赋值给最后时间
}
if (hitBox.y > (int) frameSize.getHeight() || hitBox.x > (int) frameSize.getWidth() ||flyingTimeLeft <= 0 )
visible = false;
//
}
public void launch(){ //定义一个发射方法 ???
isMoving = true;
isFlying = true;
lastTime = System.currentTimeMillis();
}
public void moveRight() { // ???
accelX+=0.1;
}
public void moveLeft() { // ???
accelX-=0.1;
}
public long getFlyingTimeLeft() { //定义一个获取最多飞行时间的方法
return flyingTimeLeft;
}
}
//这样就报错了
//左边这个JRE system Library是Java系统库,都在Java\jre1.8文件夹下
//而地下那个就是referenced Library是外部库的意思,一般要放到外部库的包都自己建立一个文件夹名字叫lib,就是Library的意思
//也可以不放到外部文件放哪里都行,放到lib里面只是默认规范,但是必须在项目文件夹下有
package model.entities;
import main.GameFrame;
import java.awt.Dimension;
import javax.swing.ImageIcon;
public class Pig extends Enemy {
private Dimension frameSize;
public Pig(int x, int y, int pigSpeed) {
super(x,y,26,26);
imagePath = "res/images/pig.png";
ImageIcon ii = new ImageIcon(imagePath);
image = ii.getImage();
imageHeight = ii.getIconHeight();
imageWidth = ii.getIconWidth();
speed = pigSpeed;
timeDown = 0;
back = false;
frameSize = GameFrame.getFrameSize();
}
public void move() {
if (hitBox.x > frameSize.getWidth() - image.getWidth(null))
back = true;
if (hitBox.x < 250)
back = false;
if (!back)
hitBox.x += speed;
else
hitBox.x -= speed;
if(down)
hitBox.y+=(int) (speed+3);
timeDirection++;
timeDown++;
}
public void moveDown(){
if(timeDown > 10)
{
down=true;
timeDown=0;
}
}
public void changeDirection() {
if(timeDirection > 10)
{
back = !back;
timeDirection =0;
}
}
public boolean goForward() {
return !back;
}
public void doNotMoveDown(){
down=false;
}
}
(三)说明
由于代码行较长,同时也有很多图片素材,项目所有源代码和论文以及配置信息等我都已经上传到“
资源
”中,需要的朋友可以下载哈!