IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java 桌球小游戏 -> 正文阅读

[Java知识库]Java 桌球小游戏

一、创建项目

  1. 创建一个 demo0 项目。

  2. 在项目根目录中创建 image 文件夹,并把下面两张图片拷贝到 image 目录中。

    1. 图 1

    2. 图 2

  3. 在 src 中创建 BallGame 类。

  4. 目录结构如下:

二、出现窗口

  1. 代码:

    // 导入包
    import java.awt.*;
    import javax.swing.*;
    
    // 定义 BallGame 类并继承 javax.swing.* 中的窗口类
    public class BallGame extends JFrame {
    
        // 加载窗口
        void launchFrame()
        {
            setSize(300,300);		// 窗口大小
            setLocation(50,50);		// 窗口位置
            setVisible(true);		// 控制窗口的显隐
        }
    
        // 入口
        public static void main(String[] args)
        {
            BallGame game = new BallGame();
            game.launchFrame();
        }
    
    }
    
  2. 运行结果:

三、加载图片

  1. 代码:

    // 导入包
    import java.awt.*;
    import javax.swing.*;
    
    // 定义 BallGame 类并继承 javax.swing.* 中的窗口类
    public class BallGame extends JFrame {
    
        // 引入图片
        Image ball = Toolkit.getDefaultToolkit().getImage("image/ball.png");
        Image desk = Toolkit.getDefaultToolkit().getImage("image/desk.jpg");
    
        // 画窗口
        public void paint(Graphics g)
        {
            System.out.println("画了一次窗口");
            g.drawImage(desk,0,0,null);         // 先画桌面,桌面在底层
            g.drawImage(ball,100,100,null);     // 后画球,球在桌面上
        }
    
        // 加载窗口
        void launchFrame()
        {
            setSize(856,500);        // 窗口大小
            setLocation(50,50);             // 窗口位置
            setVisible(true);                     // 控制窗口的显隐
        }
    
        // 入口
        public static void main(String[] args)
        {
            BallGame game = new BallGame();
            game.launchFrame();
        }
    
    }
    
  2. 运行结果:

  3. 注意,有的时候窗口里的图片加载不出来,如下图:

    遇到这种情况可以先将画出的窗口最小化,然后再从任务栏中把窗口打开,这样图片就加载出来了。

四、小球运动

  1. 代码:

    // 导入包
    import java.awt.*;
    import javax.swing.*;
    
    // 定义 BallGame 类并继承 javax.swing.* 中的窗口类
    public class BallGame extends JFrame {
    
        // 引入图片
        Image ball = Toolkit.getDefaultToolkit().getImage("image/ball.png");
        Image desk = Toolkit.getDefaultToolkit().getImage("image/desk.jpg");
    
        // 定义小球的坐标
        double x = 100;
        double y = 250;
    
        // 定义小球方向
        boolean right = true;
    
        // 画窗口
        public void paint(Graphics g)
        {
            System.out.println(x);
            g.drawImage(desk,0,0,null);         		// 先画桌面,桌面在底层
            g.drawImage(ball,(int)x,(int)y,null);     	// 后画球,球在桌面上
    
            if(right) x += 15; else x -= 15;
            if(x > 780) right = false;
            if(x < 36) right = true;
    
        }
    
        // 加载窗口
        void launchFrame()
        {
            setSize(856,500);        // 窗口大小
            setLocation(50,50);		// 窗口位置
            setVisible(true);		// 控制窗口的显隐
    
            while(true)
            {
                repaint();
                try {
                    Thread.sleep(40);       // 40ms
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    
        // 入口
        public static void main(String[] args)
        {
            BallGame game = new BallGame();
            game.launchFrame();
        }
    
    }
    
  2. 运行结果:

五、任意角度

  1. 代码:

    // 导入包
    import java.awt.*;
    import javax.swing.*;
    
    // 定义 BallGame 类并继承 javax.swing.* 中的窗口类
    public class BallGame extends JFrame {
    
        // 引入图片
        Image ball = Toolkit.getDefaultToolkit().getImage("image/ball.png");
        Image desk = Toolkit.getDefaultToolkit().getImage("image/desk.jpg");
    
        // 定义小球的坐标
        double x = 80;
        double y = 250;
        double maxX = 791;
        double maxY = 430;
        double minX = 35;
        double minY = 65;
        // 定义弧度 60°角
        double degree = 3.14 / 3;
    
        /*
        * 经过测试计算洞口坐标:[x,y]
        * 上左:[35,65]    x 最小值和 y 的最小值
        * 上中:[413,65]
        * 上右:[791,65]
        *
        * 下左:[35,430]
        * 下中:[413,430]
        * 下右:[791,430]  x 最大值和 y 的最大值
        */
    
        // 画窗口
        public void paint(Graphics g)
        {
            g.drawImage(desk,0,0,null);         // 先画桌面,桌面在底层
            g.drawImage(ball,(int)x,(int)y,null);     // 后画球,球在桌面上
    
            x += 10 * Math.cos(degree);
            y += 10 * Math.sin(degree);
            if(y > maxY || y < minY) degree = -degree;
            if(x > maxX || x < minX) degree = 3.14 - degree;
    
        }
    
        // 加载窗口
        void launchFrame()
        {
            setSize(856,500);        // 窗口大小
            setLocation(50,50);             // 窗口位置
            setVisible(true);                     // 控制窗口的显隐
    
            while(true)
            {
                repaint();
                try {
                    Thread.sleep(40);       // 40ms
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    
        // 入口
        public static void main(String[] args)
        {
            BallGame game = new BallGame();
            game.launchFrame();
        }
    
    }
    
  2. 运行结果:

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-10-13 11:19:57  更:2021-10-13 11:20:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 21:06:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码