登录  /  注册
首页 > Java > java教程 > 正文

Java实现弹球游戏的简单代码分享

黄舟
发布: 2017-08-10 10:10:40
原创
3139人浏览过

这篇文章主要为大家详细介绍了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 int 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<TABLE_WIDTH-RACKET_WIDTH)
      racketX+=10;
    }
   }

  };
  f.addKeyListener(keyProcessor);
  //tableArea.addKeyListener(keyProcessor);
  ActionListener taskPerformer=evt->
  {
   //小球碰到左边框或右边框
   if(ballX<=0||ballX>=TABLE_WIDTH-BALL_SIZE){
    xSpeed=-xSpeed;
   }
   if(ballY>racketY-BALL_SIZE&&(ballX<racketX||ballX>racketX+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.pack();
  f.setVisible(true);
 }
 class MyCanvas extends Canvas
 {
  public void paint(Graphics 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 Color(80,80,200));
    g.fillRect(racketX,racketY,RACKET_WIDTH,RACKET_HEIGHT);
   }
  }
 }
 public static void main(String[] args) 
 {
  new PinBall().init();
 }
}
登录后复制

以上就是Java实现弹球游戏的简单代码分享的详细内容,更多请关注php中文网其它相关文章!

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
关于CSS思维导图的课件在哪? 课件
凡人来自于2024-04-16 10:10:18
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号