天天看点

【基于MVC+Swing+Java的愤怒的小鸟游戏的设计与实现(效果+代码+论文 获取~~)】(一)效果(二)源代码示例(三)说明

目录

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

(一)效果

(1)游戏过程(静态截图展示

载入游戏:

【基于MVC+Swing+Java的愤怒的小鸟游戏的设计与实现(效果+代码+论文 获取~~)】(一)效果(二)源代码示例(三)说明

帮助:

【基于MVC+Swing+Java的愤怒的小鸟游戏的设计与实现(效果+代码+论文 获取~~)】(一)效果(二)源代码示例(三)说明

点击“新游戏”,建立一个角色,新建立的角色,建立之后会储存作为供用户下次玩儿备选的角色,同时也可以删除已有的角色。(也可以从已经有的角色名字中选择~)

【基于MVC+Swing+Java的愤怒的小鸟游戏的设计与实现(效果+代码+论文 获取~~)】(一)效果(二)源代码示例(三)说明

选择游戏难度:为了便于测试,这里我选的 “容易” ^ _ ^ ~ ~ ~

【基于MVC+Swing+Java的愤怒的小鸟游戏的设计与实现(效果+代码+论文 获取~~)】(一)效果(二)源代码示例(三)说明

这是我玩儿的基础(游戏分为好几个级别,这只是其中一个级别)

第一关:很容易

【基于MVC+Swing+Java的愤怒的小鸟游戏的设计与实现(效果+代码+论文 获取~~)】(一)效果(二)源代码示例(三)说明

这是第二关

【基于MVC+Swing+Java的愤怒的小鸟游戏的设计与实现(效果+代码+论文 获取~~)】(一)效果(二)源代码示例(三)说明

我“挂”了哈哈,还可以继续玩儿,这里我仅仅作为界面的展示~~

挺有意思哒~

【基于MVC+Swing+Java的愤怒的小鸟游戏的设计与实现(效果+代码+论文 获取~~)】(一)效果(二)源代码示例(三)说明

点击“退出游戏”:

【基于MVC+Swing+Java的愤怒的小鸟游戏的设计与实现(效果+代码+论文 获取~~)】(一)效果(二)源代码示例(三)说明

还有一些界面,这里不再展示。

(2)动态游戏界面示例

(可以使用鼠标直接玩儿,也可以通过键盘来操作,可以看游戏帮助哈~)

【基于MVC+Swing+Java的愤怒的小鸟游戏的设计与实现(效果+代码+论文 获取~~)】(一)效果(二)源代码示例(三)说明

(二)源代码示例

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;
	}
}
           

(三)说明

由于代码行较长,同时也有很多图片素材,项目所有源代码和论文以及配置信息等我都已经上传到“

资源

”中,需要的朋友可以下载哈!

ChatGPT評世界電動汽車品牌前十名,BYD上榜了嗎?

(本文預計閱讀時間5min,懇請耐心看完~)

ChatGPT評世界電動汽車品牌前十名,BYD上榜了嗎?

請你給世界電動汽車品牌進行排名,并說出理由。

ChatGPT:以下是世界電動汽車品牌前十名,以及每個品牌的解釋:

Tesla:作為電動汽車行業的上司者,特斯拉的創新和高性能汽車以及其網絡、能源和存儲産品讓它成為了市場的翹楚。特斯拉最新推出的Model S Plaid+可以行駛超過500英裡的續航裡程,其電動車型的創新、高性能和不斷提高的技術水準使它一直處于行業的領先地位。

ChatGPT評世界電動汽車品牌前十名,BYD上榜了嗎?

BYD:作為中國最大的電動汽車制造商之一,比亞迪在電動車技術上取得了顯著的進展。公司的核心技術之一是鐵-钛酸锂電池,這種電池具有更高的能量密度和更長的壽命,比傳統的锂離子電池更安全。

ChatGPT評世界電動汽車品牌前十名,BYD上榜了嗎?

大衆汽車:大衆汽車集團是全球最大的汽車制造商之一,其電動車型的銷量不斷增長。該公司最新推出的ID.4電動SUV,具有舒适性、續航裡程和智能駕駛等特點,受到了廣泛的歡迎。

ChatGPT評世界電動汽車品牌前十名,BYD上榜了嗎?

Nissan:尼桑的電動車型LEAF在電動車市場上表現非常出色,其續航裡程和車内功能受到消費者的廣泛認可。公司還在推出一系列電動SUV,包括Ariya和IMx。

ChatGPT評世界電動汽車品牌前十名,BYD上榜了嗎?

BMW:作為一家高端汽車制造商,寶馬已經開始大力發展電動車技術,并推出了多款電動車型,包括i3和i8。公司還在計劃将其傳統汽車車型轉化為電動車型。

ChatGPT評世界電動汽車品牌前十名,BYD上榜了嗎?

Renault:雷諾早在2010年就推出了電動車型ZOE,并已在歐洲市場上取得了不俗的銷售成績。該公司還在推出一系列電動車型,包括Twizy和Kangoo Z.E.等。

ChatGPT評世界電動汽車品牌前十名,BYD上榜了嗎?

奧迪:奧迪公司最新推出了一系列電動車型,包括e-tron和e-tron Sportback。這些車型采用了新技術,包括數字矩陣LED大燈和觸摸屏界面。

ChatGPT評世界電動汽車品牌前十名,BYD上榜了嗎?

現代/起亞:這兩個品牌都是南韓汽車制造商,他們的電動車型在世界範圍内都受到了廣泛的認可。最新推出的起亞EV6和Hyundai Ioniq 5都配備了先進的電池技術和智能駕駛系統。

ChatGPT評世界電動汽車品牌前十名,BYD上榜了嗎?

梅賽德斯-奔馳:梅賽德斯-奔馳正加速電動化轉型,目标是在2030年前,在市場條件允許的情況下,為實作全面純電動做好充分準備。

ChatGPT評世界電動汽車品牌前十名,BYD上榜了嗎?

但是當我再度問到“世界十大電動汽車品牌”時,它又給出了不同的答案:

ChatGPT評世界電動汽車品牌前十名,BYD上榜了嗎?
ChatGPT:以下是世界十大電動汽車品牌:

1特斯拉(特斯拉)

2日産(Nissan)

3通用汽車(通用汽車)

4蔚來汽車(NIO)

5比亞迪(比亞迪)

6豐田(豐田)

7本田(本田)

8福特(福特)

9雷諾(雷諾)

10寶馬

ChatGPT:這些品牌在電動汽車領域都有着不同程度的經驗和技術積累,并且緻力于不斷推進電動汽車的發展和普及化。特斯拉作為最早進入電動汽車市場的公司,其電動汽車的技術和性能一直處于行業領先地位。其他品牌也都在不斷地研發和推出新的電動汽車産品,以滿足消費者的需求和市場的變化。
ChatGPT評世界電動汽車品牌前十名,BYD上榜了嗎?

這次的答案有許多與上一次都存在不同,

這一次蔚來強勢上榜,

表明中國新能源汽車品牌在世界電動車領域已經有了一席之地,

但雖然每次ChatGPT都會給出不同的答案,

但可以發現的是,

特斯拉永遠都處于TOP1的穩定位置

你怎麼看?

感謝大家能夠堅持閱讀到此,十分期待您的點贊+評論~

ChatGPT評世界電動汽車品牌前十名,BYD上榜了嗎?