gpt4 book ai didi

java实现简单的弹球游戏

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章java实现简单的弹球游戏由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

弹球游戏实现原理:

  隔一定时间(小于1秒)重新绘制图像,因为Graphics类是一个抽象类,创建子类的时候需要把所有涉及的方法都得重写,所以这里使用的是创建Canvas的子类,只需要重写它的paint()方法来实现。这里我们用了键盘监听事件、Timer类等.

游戏说明:

  该弹球游戏中的小球会随着时间增加速度且速度最多是横向速度和垂直速度为10。当小球的y坐标(垂直坐标)大于球拍的y坐标(垂直坐标)即判断游戏结束。控制台显示的是小球的x方向的速度和y方向的速度.

java" id="highlighter_288454">
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
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实现简单的弹球游戏java实现简单的弹球游戏java实现简单的弹球游戏

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.

最后此篇关于java实现简单的弹球游戏的文章就讲到这里了,如果你想了解更多关于java实现简单的弹球游戏的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com