砖块代码小球java

编程入门 行业动态 更新时间:2024-10-07 16:26:38

<a href=https://www.elefans.com/category/jswz/34/1728855.html style=砖块代码小球java"/>

砖块代码小球java

运用javaGUI界面制作一个小球弹砖块的小游戏,本次游戏只有一个关卡,只是做一个简单的效果不是全部出来的

完整的下载链接:

定义一个小球的类,挡板的类和砖块的类,这三个类可以抽取出来定义父类,然后继承,这样代码就可以减少很多了

思路是:先制作出小球碰到边框弹开,剥离到一个面板上,接着在面板上添加一个砖块,当小球碰到砖块的时候可以弹开并且砖块消失掉(是小球图片和砖块图片绘制成矩形,然后调用方法(ball.getRect().intersects(b.getRect())可以实现这个的时候就添加多个砖块到集合中然后遍历集合,接着定义小球运动边框范围

package obj;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.Rectangle;

import java.io.IOException;

import javax.imageio.ImageIO;

import util.GameCore;

/**

*

* @author ZJX

*定义球的属性以及方法

*/

public class Ball {

private Image img;

private Rectangle rect;

private int speedX;

private int speedY;

private boolean isDispose=false;

/**

* 小球的构造方法

* @param x定义小球的位置

* @param y

*/

public Ball(int x,int y) {

super();

try {

//加载图片

img=ImageIO.read(Ball.class.getResource("/img/ball.png"));

//为矩形 位置和大小初始化

rect=new Rectangle(x, y, img.getWidth(null), img.getHeight(null));

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

//初始化指定球的移动速度

speedX=3;

speedY=3;

}

/**

* 更新小球数据

*/

public void update(Rectangle boardRect){

//以下是球在四周弹动过程,碰到四边框架时发生的弹动效果

//如果球移动到窗体的最右边,这时X轴的移动要变成减,直接取反

if(rect.x>GameCore.MAX_X-16 || rect.xGameCore.MAX_Y-16 ||rect.yboardRect.y+20){

isDispose=true;//标识球销毁

}

}

/**

* 绘制小球

* @param g

*/

public void draws(Graphics g){

g.drawImage(img,rect.x, rect.y,null);

}

public Image getImg() {

return img;

}

public void setImg(Image img) {

this.img = img;

}

public Rectangle getRect() {

return rect;

}

public void setRect(Rectangle rect) {

this.rect = rect;

}

public int getSpeedX() {

return speedX;

}

public void setSpeedX(int speedX) {

this.speedX = speedX;

}

public int getSpeedY() {

return speedY;

}

public void setSpeedY(int speedY) {

this.speedY = speedY;

}

public boolean isDispose() {

return isDispose;

}

public void setDispose(boolean isDispose) {

this.isDispose = isDispose;

}

}

挡板的代码

package obj;

/**

* 定义挡板的类

*/

import java.awt.Graphics;

import java.awt.Image;

import java.awt.Rectangle;

import java.io.IOException;

import javax.imageio.ImageIO;

public class Board {

private Image img;

private Rectangle rect;

public Board(int x,int y) {

super();

//加载图片

try {

img=ImageIO.read(Board.class.getResource("/img/board.png"));

//为矩形 位置和大小初始化

rect=new Rectangle(x, y, img.getWidth(null), img.getHeight(null));

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

/**

*

* @param g绘制挡板

*/

public void draws(Graphics g){

g.drawImage(img,rect.x, rect.y, null);

}

public Rectangle getRect() {

return rect;

}

public void setRect(Rectangle rect) {

this.rect = rect;

}

}

砖块的代码

package obj;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.Rectangle;

import java.io.IOException;

import javax.imageio.ImageIO;

import util.GameCore;

/**

*

* @author ZJX

*定义砖块的类

*/

public class Block {

private Image img;

private Rectangle rect;

/**

* 砖块的构造函数

*/

public Block(int x,int y) {

super();

//加载图片

int type=GameCore.RAN.nextInt(7)+1;//随机生成一张图片类型

try {

//加载图片

img=ImageIO.read(Block.class.getResource("/img/block"+type+".png"));

//为矩形 位置和大小初始化

rect=new Rectangle(x, y, img.getWidth(null), img.getHeight(null));

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

/**

* 绘制砖块

* @param g

*/

public void draws(Graphics g){

g.drawImage(img, rect.x, rect.y, null);

}

public Rectangle getRect() {

return rect;

}

public void setRect(Rectangle rect) {

this.rect = rect;

}

}

定义一个工具类,里面是需要用到的参数,主要是界面的大小以及小球运动的位置

package util;

import java.util.Random;

/**

* @author Administrator

*游戏中的全局变量或方法

*/

public class GameCore {

/**

* 游戏界面的宽度

*/

public static final int GAME_WIDHT=640;

/**

* 游戏界面的高度

*/

public static final int GAME_HEIGHT=480;

//以下四个变量,保存游戏中X轴和Y轴最大和最小可移动的位置

public static final int MIN_X=135;

public static final int MAX_X=515;

public static final int MAX_Y=480;

public static final int MIN_Y=30;

/**

* 随机种子

*/

public static Random RAN=new Random();

}

添加一个面板

package frame;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.event.MouseEvent;

import java.awt.event.MouseMotionListener;

import java.io.IOException;

import java.util.*;

import javax.imageio.ImageIO;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import obj.*;

import util.GameCore;

public class GamePanel extends JPanel implements MouseMotionListener{

private Image bgImg;//主界面的背景图片

private Ball ball=null;//球的对象

private Board board=null;//挡板对象

Listblocks=new ArrayList();//存放多个方块的集合

private int maxLife=5;//最大可以使用生命的次数

private int currentLife=1;//当前使用的生命次数

/**

* Create the panel.

*/

public GamePanel() {

setLayout(null);

//加载背景图片

try {

bgImg=ImageIO.read(GamePanel.class.getResource("/img/1.png"));

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

ball=new Ball(200,300);

board=new Board(200,400);

//绑定事件

this.addMouseMotionListener(this);

initBlocks();

}

/**

* 初始化砖块

*/

public void initBlocks(){

for(int row=0;row<10;row++){

for(int col=0;col<12;col++){

Block b=new Block(col*30+145,row*15+30);

blocks.add(b);//添加到集合中

}

}

}

//更新球的位置

public void update(){

//更新球的数据

if(ball!=null){

ball.update(board.getRect());

//将球和所有的方块进行检测 ,是否有相交,如果有,则销毁方块

for(int i=0;iGameCore.MIN_X && e.getX()

把这个添加到主面板上随时更新

更多推荐

砖块代码小球java

本文发布于:2024-03-10 19:32:23,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1728851.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:砖块   小球   代码   java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!