基于Java的愤怒的小鸟游戏的设计与实现,附源码+论文+任务书+PPT,包安装调试 您所在的位置:网站首页 愤怒的小鸟绿猪过关的游戏 基于Java的愤怒的小鸟游戏的设计与实现,附源码+论文+任务书+PPT,包安装调试

基于Java的愤怒的小鸟游戏的设计与实现,附源码+论文+任务书+PPT,包安装调试

2024-07-17 06:52| 来源: 网络整理| 查看: 265

1、项目介绍

Java语言是一门面向对象的编程语言,它不但汲取了C++语言的各种精髓,而且还抛弃了C++语言里晦涩难懂的多继承和指针等概念,所以Java语言具有的特征便是:功能超强和易用实用。

Jbox2D中不仅集成了大量物理运动学和机械运动学计算,而且也将物理仿真包集成到类对象中,同时对象也应用在开发人员与用户的交互界面中。所以我们只需要调用对象或者使用相应的功能,就可以模拟出现实生活中的速度、加速度、抛物线运动、重力、碰撞、反弹等各种各样真实的物理运动。

愤怒的小鸟游戏的视角是横向版本的水平视角。背景是为了报复偷鸡蛋的猪,鸟将自己的身体作为武器,就像炮弹一样从弹弓上发射而出,撞向绿猪搭建的堡垒,以达到摧毁绿猪的目的。游戏非常简单,小鸟跳上弹弓,发射角度和强度的改变导致小鸟的落点的不同,玩家需要良好的整体计算,适当的调节强度和角度,从而更准确地击中绿猪。每次击中绿猪,便可获得一定的分数,积累足够的分数便可以通关,游戏设计的体现了放松的情调,乐观的风格。

本文将介绍使用Java语言实现经典的益智类游戏作品“愤怒的小鸟”的开发。游戏将主要实现以下几个功能:游戏玩法功能、页面管理功能、难度和级别功能、碰撞功能、鸟类管理功能、玩家管理功能和备份功能等。此游戏不仅可以给玩家带来欢乐,也会使玩家对开发游戏产生极大地兴趣,让玩家切身体会到Java语言在生活方面的无处不在。

在愤怒的小鸟程序中,主要实现以下功能

游戏玩法功能:

(1) 能实现发射器创建、发射角度、发射力度等

(2) 可以实现小鸟飞行功能,包括小鸟飞行抛物线、小鸟飞行悬停

(3) 实现游戏中猪的移动功能,包括猪的根据级别不同改变移动速度、猪在哪里移动

(4) 碰撞功能:实现小鸟与障碍的碰撞、小鸟与猪的碰撞、鸡蛋与障碍物的碰撞、鸡蛋与猪的碰撞、猪与障碍物的碰撞

页面管理功能:实现各个页面功能,包括主界面、载入游戏界面、控制帮助界面、跳转界面功能等

难度、级别功能:实现游戏难度功能,难度不同猪的移动速度不同,实现级别功能,级别不同地图难易程度也不同

实体类管理功能:创建游戏中各种实体类,包括鸟的种类、猪、障碍物、草地等

玩家管理功能和备份功能:实现玩家信息管理以及游戏信息保存的功能

2、技术框架

运行系统:windows

编程语言:java

系统架构:gui界面

系统框架:Swing

数据库:无

Maven项目:否

运行环境:JDK8+IntelliJ IDEA

3、演示视频

基于Java的愤怒的小鸟游戏的设计与实现

4、项目截图

5、文档截图

6、代码示例

package controller; import java.awt.Cursor; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import java.util.Locale; import javax.swing.JOptionPane; import main.GameFrame; import model.GameModel; import model.ListChangedEvent; import model.ListListener; import model.entities.Bird; import model.entities.Sparrow; public class GameController implements KeyListener, ListListener, MouseListener,MouseMotionListener{ private GameModel angryModel; private GameFrame angryFrame; private Bird currentBird; private boolean isBirdPicked = false; public GameController(GameFrame Frame){ angryFrame = Frame; angryModel = Frame.getAngryModel(); JOptionPane.setDefaultLocale(Locale.CHINESE); } @Override public void keyPressed(KeyEvent e) { switch (e.getKeyCode()) { case KeyEvent.VK_RIGHT: if(currentBird.isFlying()) currentBird.moveRight(); break; case KeyEvent.VK_LEFT: if(currentBird.isFlying()) currentBird.moveLeft(); break; case KeyEvent.VK_UP: if(!currentBird.isFlying()) currentBird.setAngle(currentBird.getAngle()+0.1); break; case KeyEvent.VK_DOWN: if(!currentBird.isFlying()) currentBird.setAngle(currentBird.getAngle()-0.1); break; case KeyEvent.VK_S: // 悬停禁止麻雀 if(!(currentBird instanceof Sparrow)) currentBird.hovering(); break; case KeyEvent.VK_SPACE: if(currentBird.isFlying()) angryModel.addEgg(); break; case KeyEvent.VK_ESCAPE: angryFrame.setMenuLevel(); break; default: System.out.println("无效按键 !"); } } @Override public void keyReleased(KeyEvent e) { // TODO Auto-generated method stub } @Override public void keyTyped(KeyEvent e) { // TODO Auto-generated method stub } @Override public void listChanged(ListChangedEvent event) { this.currentBird = event.getCurrentBird(); } @Override public void mouseClicked(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mouseExited(MouseEvent e) { // TODO Auto-generated method stub } @Override public void mousePressed(MouseEvent e) { // TODO Auto-generated method stub if(!currentBird.isFlying()) { if(e.getX()>= currentBird.getPosition().getX() && e.getX() = currentBird.getPosition().getY() && e.getY() 545-currentBird.getImageHeight()/2) y=545-currentBird.getImageHeight()/2; if(y < 400) y = 400; if(x < currentBird.getImageWidth()/2) x = currentBird.getImageWidth()/2; if(x > 200) x = 200; double deltaX = currentBird.getStartLocationX() - x; double deltaY = currentBird.getStartLocationY() - y; float speed = (float)Math.sqrt((deltaX*deltaX)+(deltaY*deltaY)); currentBird.setAngle(-Math.atan(deltaY/deltaX)); currentBird.setSpeed(speed); if(deltaX > 0) currentBird.launch(); else{ currentBird.setPosition(currentBird.getStartLocationX(), currentBird.getStartLocationY()); } } angryFrame.setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); isBirdPicked = false; } @Override public void mouseDragged(MouseEvent e) { if(isBirdPicked) { int x = e.getX(),y = e.getY(); if(y > 545-currentBird.getImageHeight()/2) y=545-currentBird.getImageHeight()/2; if(y < 400) y = 400; if(x < currentBird.getImageWidth()/2) x = currentBird.getImageWidth()/2; if(x > 200) x = 200; double deltaX = currentBird.getStartLocationX() - x; double deltaY = currentBird.getStartLocationY() - y; float speed = (float)Math.sqrt((deltaX*deltaX)+(deltaY*deltaY)); currentBird.setAngle(-Math.atan(deltaY/deltaX)); currentBird.setSpeed(speed); currentBird.setPosition(x-currentBird.getImageWidth()/2, y-currentBird.getImageHeight()/2); } } @Override public void mouseMoved(MouseEvent e) { // TODO Auto-generated method stub } }



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有