91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用java編寫一個彈球小游戲

發布時間:2020-12-01 16:57:51 來源:億速云 閱讀:310 作者:Leah 欄目:編程語言

本篇文章給大家分享的是有關利用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編寫一個彈球小游戲,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

虹口区| 巴楚县| 杭锦后旗| 广丰县| 浦县| 苍梧县| 余江县| 漠河县| 泗阳县| 隆林| 德兴市| 互助| 仁布县| 黄浦区| 灯塔市| 河池市| 牙克石市| 远安县| 横山县| 宁安市| 祁阳县| 石河子市| 稷山县| 双鸭山市| 安福县| 阜南县| 金溪县| 赤城县| 康保县| 沿河| 南充市| 孝昌县| 桐庐县| 灵石县| 印江| 宜丰县| 松桃| 禹州市| 湘西| 徐州市| 东方市|