Java桌面台球及详解

package LXJQ;

import javax.swing.*;
import java.awt.*;

/*
 * 1.如何使用Java写出这些图形化的界面;
 *   GUI SWING 类库  Jframe Jpanel
 * 2.让白球移动(有一定的角度移动)
 * 3.让白球碰到桌壁反弹
 * GUI:图形用户界面
 * swing JFrame:窗体类
 * Jpanel Graphics:画笔对象
 * */

public class demo1 extends JFrame {
    double x = 100;
    double y = 100;
    //弧度 = PI*角度/180°
    double degree = 3.14/3;
    //使用构造函数给窗体加特征
    public demo1(){
    	//给它取一个名字
        this.setTitle("天天桌球");
        //窗口大小
        this.setSize(660,420);
        //关闭窗口时程序默认关闭
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //窗口居中显示
        this.setLocationRelativeTo(null);
        this.setVisible(true);
        //一直调用paint方法,循环让x,y一直变化
        while (true){
            repaint();
            try {//使用线程捕捉异常,规定运行速度
                Thread.sleep(30);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    @Override
    //这个用于重写父类方法,用这个注解可以避免方法名跟参数写错
    //将图片画到窗体上
    public void paint(Graphics g) {
        super.paint(g);
        //将图片加载到程序中:将硬盘上的资源加载到内存中 io流 
        Image image = new ImageIcon("C:/Users/adnim/Desktop/table.jpg").getImage();
        //画图片的 位置 图片大小 
        g.drawImage(image,0,30,660,390,null);
        Image image1 = new ImageIcon("C:/Users/adnim/Desktop/ball1.png").getImage();
        g.drawImage(image1,(int)x,(int)y,35,35,null);
        //规定沿着六十度方向运行
        x = x + 10*Math.cos(degree);
        y = y + 10*Math.sin(degree);
        //当x和y达到一定大小要改变他们的值,达到碰壁反弹效果
        if(x <= 35 || x >= 660 - 35){//左右两边
            degree = 3.14 - degree;//180°-当前的角度
        }
        if(y <= 30+35 || y >= 420-35){//上下两边Y轴方向
            degree = -degree;
        }
    }

    public static void main(String[] args) {
        new demo1();//创建对象,调用上边的构造函数
    }
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

目标:
JFrame容器的使用
使用Image对象加载图片
Graphics组件的使用
使用弧度控制方向的改变

必备知识:
    Math.sin(x)      x 的正玄值。返回值在 -1.0 到 1.0 之间;
    Math.cos(x)    x 的余弦值。返回的是 -1.0 到 1.0 之间的数;
    这两个函数中的X 都是指的“弧度”而非“角度”,弧度的计算公式为: PI*角度/180;

需求:
    桌球在球桌中按照一定 的线路和角度移动,遇到边框会自动弹回
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值