本文主要是介绍java实现弹球游戏_java实现简单的弹球游戏,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
弹球游戏实现原理:
隔一定时间(小于1秒)重新绘制图像,因为Graphics类是一个抽象类,创建子类的时候需要把所有涉及的方法都得重写,所以这里使用的是创建Canvas的子类,只需要重写它的paint()方法来实现。这里我们用了键盘监听事件、Timer类等。
游戏说明:
该弹球游戏中的小球会随着时间增加速度且速度最多是横向速度和垂直速度为10。当小球的y坐标(垂直坐标)大于球拍的y坐标(垂直坐标)即判断游戏结束。控制台显示的是小球的x方向的速度和y方向的速度。
import java.awt.*;
import java.util.Random;
import javax.swing.Timer;
import java.awt.event.*;
public class PinBall
{
private Frame f=new Frame("弹球游戏");
Random rand=new Random();
//桌面的宽度以及高度
private final int TABLE_WIDTH=300;
private final int TABLE_HEIGHT=400;
//球拍的宽度以及高度以及水平位置、垂直位置
private final int RACKET_WIDTH=60;
private final int RACKET_HEIGHT=20;
private int racketX=rand.nextInt(24)*10;
private int racketY=300;
//小球的大小、运行速度、坐标
private final int BALL_SIZE=16;
private int ySpeed=1;
private double xyRate=1;
private int xSpeed=(int)(xyRate*ySpeed);
private int ballX=rand.nextInt(284);
private intbEdjtk ballY=1;
//创建画布
private MyCanvas tableArea=new MyCanvas();
//定义时间类
Timer timer;
//游戏是否结束的旗标
private boolean isLose=false;
//设置游戏等级
private int time_times=1;
public void init(){
tableArea.setPreferredSize(new Dimension(TABLE_WIDTH,TABLE_HEIGHT));
f.add(tableArea);
//定义键盘监听器
KeyAdapter keyProcessor=new KeyAdapter()
{
public void keyPressed(KeyEvent ke){
if(ke.getKeyCode()==KeyEvent.VK_LEFT){
if(racketX>0)
racketX-=10;
}
if(ke.getKeyCode()==KeyEvent.VK_RIGHT){
if(racketX
racketX+=10;
}
}
};
f.addKeyListener(keyProcessor);
//tableArea.addKeyListener(keyProcessor);
ActionLishttp://www.cppcns.comtener taskPerformer=evt->
{
//小球碰到左边框或右边框
if(ballX<=0||ballX>=TABLE_WIDTH-BALL_SIZE){
xSpeed=-xSpeed;
}
if(ballY>racketY-BALL_SIZE&&(ballXracketX+RACKET_WIDTH-BALL_SIZE)){
timer.stop();
isLose=true;
tableArea.repaint();
}else if(ballY<=0||(ballY>=racketY-BALL_SIZE&&ballX>racketX&&ballX<=racketX+RACKET_WIDTH)){
ySpeed=-ySpeed;
}
ballY+=ySpeed;
ballX+=xSpeed;
tableArea.repaint();
if((xSpeed<10&&xSpeed>-10)&&(ySpeed<10&&ySpeed>-10)){
time_times++;
}
if(time_times==10){
if(xSpeed>0){
xSpeed++;
}else{
xSpeed--;
}
if(ySpeed>0){
ySpeed++;
}else{
ySpeed--;
}
time_times-=10;
System.out.println(xSpeed+" "+ySpeed);
}
};
timer=new Timer(100,taskPerformer);
timer.start();
f.pachttp://www.cppcns.comaphics g){
if(isLose){
g.setColor(new Color(255,0,0));
g.setFont(new Font("Times",Font.BOLD,30));
g.drawString("游戏结束",50,200);
}else{
g.setColor(new Color(240,240,80));
g.fillOval(ballX,ballY,BALL_SIZE,BALL_SIZE);
g.setColor(new Colhttp://www.cppcns.comor(80,80,200));
g.fillRect(racketX,racketY,RACKET_WIDTH,RACKET_HEIGHT);
}
}
}
public static void main(String[] args)
{
new PinBall().init();
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
本文标题: java实现简单的弹球游戏
本文地址: http://www.cppcns.com/ruanjian/java/199246.html
这篇关于java实现弹球游戏_java实现简单的弹球游戏的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!