欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java實現(xiàn)桌球小游戲

 更新時間:2019年07月13日 09:51:03   作者:君丶Xjion  
這篇文章主要為大家詳細介紹了java實現(xiàn)桌球小游戲,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了java實現(xiàn)桌球小游戲的具體代碼,供大家參考,具體內(nèi)容如下

桌球小游戲

兩張圖片放在src的同級目錄下

版本一、出現(xiàn)窗口

package cn.xjion.game;
/**
 * 出現(xiàn)窗口
 * @author xjion
 *
 */
import java.awt.*;
import javax.swing.*;
//繼承窗口類
public class BallGame extends JFrame{
// 窗口加載的方法
 void launchFrame(){
// 窗口的大小,寬高
 setSize(300,300);
// 窗口的位置,距離窗口左上角的位置
 setLocation(400,200);
// 窗口可見
 setVisible(true);
 }
// main方法,執(zhí)行入口
 public static void main(String[] args) {
// 新建對象
 BallGame bg = new BallGame();
// 調(diào)用方法
 bg.launchFrame();
 }
}

版本二、加載圖

這兒的加載圖片有個緩存問題,需要最小化窗口再打開

package cn.xjion.game;
/**
 * 加載圖片
 * @author xjion
 *
 */
import java.awt.*;
import javax.swing.*;
//繼承窗口類
public class BallGame extends JFrame{
// 創(chuàng)建兩個圖片的對象,代表兩個圖片
 Image ball = Toolkit.getDefaultToolkit().getImage("image/ball.png");
 Image desk = Toolkit.getDefaultToolkit().getImage("image/desk.jpg");
// 畫窗口的方法
 public void paint(Graphics g){
// 畫桌面
 g.drawImage(desk, 0, 0, null);
// 畫ball對象,坐標100,100
 g.drawImage(ball, 100, 100, null);
 }
 
// 窗口加載的方法
 void launchFrame(){
// 窗口的大小,寬高
 setSize(856,500);
// 窗口的位置,距離窗口左上角的位置
 setLocation(50,50);
// 窗口可見
 setVisible(true);
 }
// main方法,執(zhí)行入口
 public static void main(String[] args) {
// 新建對象
 BallGame bg = new BallGame();
// 調(diào)用方法
 bg.launchFrame();
 }
}

版本三、使小球動起來

package cn.xjion.game;
/**
 * 水平滾動
 * @author xjion
 *
 */
import java.awt.*;
import javax.swing.*;
//繼承窗口類
public class BallGame extends JFrame{
// 創(chuàng)建兩個圖片的對象,代表兩個圖片
 Image ball = Toolkit.getDefaultToolkit().getImage("image/ball.png");
 Image desk = Toolkit.getDefaultToolkit().getImage("image/desk.jpg");
 
 int x = 100;
 int y = 100;
 boolean right = true;
 
// 畫窗口的方法
 public void paint(Graphics g){
// 畫桌面
 g.drawImage(desk, 0, 0, null);
// 畫ball對象,坐標100,100
 g.drawImage(ball, x, y, null);
// 如果向右走就加10,否則減10
 if (right) {
 x = x + 10;
 }else{
 x = x - 10;
 }
// 當(dāng)球跑到頭了就返回
 if(x>856-40-30){
 right = false;
 }
 if(x<40){
 right = true;
 }
 
 }
// 窗口加載的方法
 void launchFrame(){
// 窗口的大小,寬高
 setSize(856,500);
// 窗口的位置,距離窗口左上角的位置
 setLocation(50,50);
// 窗口可見
 setVisible(true);
 
// 重畫窗口,無限重畫
 while(true){
// 重畫方法
 repaint();
// try catch拋異常
 try {
// 40ms重畫一次,1秒25次
 Thread.sleep(40);
 } catch (Exception e) {
 e.printStackTrace();
 }
 }
 }
 
// main方法,執(zhí)行入口
 public static void main(String[] args) {
// 新建對象
 BallGame bg = new BallGame();
// 調(diào)用方法
 bg.launchFrame();
 }
}

版本四、使小球沿任意角度滾動

package cn.xjion.game;
/**
 * 任意滾動
 * @author xjion
 *
 */
import java.awt.*;
import javax.swing.*;
//繼承窗口類
public class BallGame2 extends JFrame{
// 創(chuàng)建兩個圖片的對象,代表兩個圖片
 Image ball = Toolkit.getDefaultToolkit().getImage("image/ball.png");
 Image desk = Toolkit.getDefaultToolkit().getImage("image/desk.jpg");
// 在窗口上的坐標
 double x = 100;
 double y = 100;
 
 double degree = 3.14 / 3;//弧度,60°
 
// 畫窗口的方法
 public void paint(Graphics g){
// 畫桌面
 g.drawImage(desk, 0, 0, null);
// 畫ball對象,坐標100,100
 g.drawImage(ball,(int) x,(int) y, null);
// x和y坐標的變化
 x = x + 10*Math.cos(degree);
 y = y + 10*Math.sin(degree);
 
 /*判斷什么時候碰到邊界回彈*/
// 碰到上下邊界回彈
 if (y>500-40-30 || y<40 + 40) {
 degree = -degree;
 }
// 碰到左右邊界回彈
 if (x>856-40-30 || x<30) {
 degree = 3.14-degree;
 }
 
 }
// 窗口加載的方法
 void launchFrame(){
// 窗口的大小,寬高
 setSize(856,500);
// 窗口的位置,距離窗口左上角的位置
 setLocation(50,50);
// 窗口可見
 setVisible(true);
 
// 重畫窗口,無限重畫
 while(true){
// 重畫方法
 repaint();
// try catch拋異常
 try {
// 40ms重畫一次,1秒25次
 Thread.sleep(40);
 } catch (Exception e) {
 e.printStackTrace();
 }
 }
 }
 
// main方法,執(zhí)行入口
 public static void main(String[] args) {
// 新建對象
 BallGame2 bg = new BallGame2();
// 調(diào)用方法
 bg.launchFrame();
 }
}

好了,這個最為簡單的桌球游戲就算是完成了,能實現(xiàn)球的滾動,如果有興趣的可以再研究研究球桿,輔助線,擊球,速度逐漸下降到停止,進球及分數(shù)的操作,有不對的地方望大家指出!

 以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 通俗講解JVM的類加載機制

    通俗講解JVM的類加載機制

    這篇文章主要介紹了JVM的類加載機制的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)Java,感興趣的朋友可以了解下
    2020-09-09
  • SpringBoot實現(xiàn)緩存預(yù)熱的幾種常用方案

    SpringBoot實現(xiàn)緩存預(yù)熱的幾種常用方案

    緩存預(yù)熱是指在 Spring Boot 項目啟動時,預(yù)先將數(shù)據(jù)加載到緩存系統(tǒng)(如 Redis)中的一種機制,本文給大家介紹了SpringBoot實現(xiàn)緩存預(yù)熱的幾種常用方案,并通過代碼示例講解的非常詳細,需要的朋友可以參考下
    2024-02-02
  • Spring Boot如何使用Undertow代替Tomcat

    Spring Boot如何使用Undertow代替Tomcat

    這篇文章主要介紹了Spring Boot如何使用Undertow代替Tomcat,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • SpringMVC中的異常處理機制詳解

    SpringMVC中的異常處理機制詳解

    SpringMVC提供了基于xml和基于注解的異常處理機制,一般情況下兩者都要進行配置,xml異常處理機制主要用于處理xml方式產(chǎn)生的異常,注解異常處理機制主要用于處理基于注解方式產(chǎn)生的異常,這篇文章主要介紹了SpringMVC中的異常處理機制,需要的朋友可以參考下
    2024-05-05
  • Springboot整合PageOffice 實現(xiàn)word在線編輯保存功能

    Springboot整合PageOffice 實現(xiàn)word在線編輯保存功能

    這篇文章主要介紹了Springboot整合PageOffice 實現(xiàn)word在線編輯保存,本文以Samples5 為示例文件結(jié)合示例代碼給大家詳細介紹,需要的朋友可以參考下
    2021-08-08
  • 兩分鐘解決IntelliJ IDEA中文亂碼問題(推薦)

    兩分鐘解決IntelliJ IDEA中文亂碼問題(推薦)

    這篇文章主要介紹了兩分鐘解決IntelliJ IDEA中文亂碼問題,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • OpenFeign實現(xiàn)遠程調(diào)用

    OpenFeign實現(xiàn)遠程調(diào)用

    這篇文章主要為大家詳細介紹了OpenFeign實現(xiàn)遠程調(diào)用,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • 詳細全面解析Java泛型

    詳細全面解析Java泛型

    這篇文章主要介紹了詳細全面解析Java泛型,java泛型主要提高了Java 程序的類型安全,通過知道使用泛型定義的變量的類型限制,編譯器可以驗證類型假設(shè),消除源代碼中的許多強制類型轉(zhuǎn)換等多個有點,下面我們進入文章了解更多的詳細內(nèi)容吧
    2022-02-02
  • Java之HashMap.values()轉(zhuǎn)List時的錯誤和正確演示

    Java之HashMap.values()轉(zhuǎn)List時的錯誤和正確演示

    這篇文章主要介紹了Java之HashMap.values()轉(zhuǎn)List時的錯誤和正確演示,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Maven如何構(gòu)建可執(zhí)行的jar包(包含依賴jar包)

    Maven如何構(gòu)建可執(zhí)行的jar包(包含依賴jar包)

    這篇文章主要介紹了Maven如何構(gòu)建可執(zhí)行的jar包(包含依賴jar包) ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11

最新評論