球球大作战JAVA小游戏
一、功能实现: 游戏简介: 这是一款规则简单的球类游戏,在这个球球的世界里,大球吃小球,努力生存,努力成长是你唯一的目标。 实现方式: 首先定义一个窗口类Gameframe以及游戏面板类GamePanel去实现游戏窗口的描绘;再通过paint方法去drawPaint绘制小球。然后,再定义一个小球类Ball,将小球的x,y坐标以及小球的直径d、移动方向direction、移动速度speed、颜色ballColor等属性封装到该类中。再定义一个ArrayList容器将多个小球进行封装,并且统一管理;然后通过一个循环来创建小球并且初始化它的各项属性。还需要继承线程Thread类多线程进行移动监测敌方每个小球的移动以及碰撞结果。利用键盘监听器KeyListener和鼠标监听器MiuseMontionListener这两个接口,通过定义一个类去实现它们从而实现对玩家小球的鼠标控制和键盘控制。然后还需要定义一个BallCrash类去判断两小球相互碰撞后的结果。若是容器中小球被吃掉,则在容器ArrayList中清除该小球,若是玩家小球被吃掉则切换面板显示“GAME OVER”,若是敌方小球中的几个Boss球被吃掉了则显示游戏胜利。 二、游戏规则: 游戏规则: 1、自己的小球可以随着键盘或鼠标的移动而改变坐标; 2、敌方小球不断的在界面中移动 3、地图上会自动产生许多微粒,供给玩家球和敌方球长大。 4、当检测到两个小球相互碰撞时, 直径大的球会吃掉直径小的球。 5、当我方球吃掉了几个特定的Boss球时,我方胜利,游戏结束;当我方小球被吃掉时,我方失败,游戏结束。 实现方式: 1、定义一个Ball类,其中将玩家球和敌方球的x,y坐标,移动速度,颜色,移动方向封装起来。 2、在Ball类中实现Graphics的方法,用以绘制小球的大小、颜色以及小球上面的文字。 3、定义一个窗口类Gameframe继承JFrame,设置窗口的标题,大小,位置,各项状态。 4、在窗口类中添加背景图片,添加背景音乐,添加面板并且添加键盘KeyListener和鼠标MouseMotionLisener的监听器。 5、定义一个面板类Gamepanel继承JPanel,在面板中添加玩家小球和敌方小球。 6、在面板中实现两个Thread线程,一个控制静止小球,一个控制运动小球。在该面板中设置键盘监听和鼠标监听的事件。 7、定义一个Music类,实现背景音乐的导入、播放以及循环。 8、定义一个Png类,实现背景图片以及小球形状图片等图片的导入。 9、定义一个Otherball类,初始化静止小球和运动小球的各项属性并且实现静止小球和运动小球的自动添加。 10、在Otherball类中定义两个ArrayList容器,分别用以存储静止小球和运动小球。 三、设计思路 四、程序代码 关键代码一:
package Gamescreen;
import java.awt.Color;
import java.awt.Graphics;
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.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.imageio.ImageIO;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
/*画小球*/
public class Gamepanel extends JPanel implements KeyListener,MouseMotionListener{
public int cnt=10; //计算剩余大boss的球个数
private Color pink;
public Ball mainball = new Ball(450, 450, 40, 30, pink);
OtherBall ob=new OtherBall();
public Gamepanel(){
ob.addBall();
startBalls();
startBalls2();
}
public void paint(Graphics g){
super.paint(g);
try {
mainball.drawBall2(g);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} //绘制玩家小球
for (int i = 0; i |