简单的台球制作

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

public class BallGame2  extends JFrame {
    Image ball=Toolkit.getDefaultToolkit().getImage("images/台球.png");
    Image balldesk=Toolkit.getDefaultToolkit().getImage("images/zhuo.jpg");
    double x=100;
    double y=100;   //小球的横纵坐标
    double degree=3.14/3;//弧度,60度
    //画窗口的方法
    public void paint(Graphics p) {
        p.drawImage(balldesk, 0, 0, null);
        p.drawImage(ball, (int) x, (int) y, null);   //小球的坐标位于100,100
        x=x+10*Math.cos(degree);
        y=y+10*Math.sin(degree);
        if(y>500-40-30||y<40+40){    //40:边框最后一个40是标题栏的高度,500是窗口的高度
            degree=-degree;   //回弹
        }
        //碰到左右边界
        if(x<40||x>856-40-30){
            degree=3.14-degree;
        }
        }
    //窗口加载
    void launchFrame() {
        setSize(856, 500);  //窗口的大小
        setLocation(50, 50);   //坐标
        setVisible(true);
        //重画窗口 ,每秒画20次
        while(true){
            repaint();
            try{
                Thread.sleep(50);  //50ms
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    }


    public static void main(String[] args) {
        System.out.println(" Welcome to Ballgame!");
        BallGame2 game = new BallGame2();
        game.launchFrame();
    }
}



运行结果:
在这里插入图片描述
总结:注意放入图片的大小和窗口的大小,注意左右上下移动和角度问题就可以啦。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
matlab解决桌球射击方位角-main.m matlab解决桌球射击方位角: 利用MatLab解决桌球射击方位角问题:        有2个球置于矩形板之上,一个用来做射击球,另一个则是作为目标图,现在考虑的问题是,如何设置射击球的方向,从而撞击目标球,使之进入矩形板的四个角点。可以利用矩形边的反弹,忽略摩擦。 这个问题其实就是桌球射击的理想化的简化版。由于没有摩擦,所以碰撞之后,目标球的行进方向将沿着射击球球心到目标球的球心的射线方向,并且由于没有摩擦,将不需要考虑速度这个概念。简化起见,规定目标球不经过矩形边的反弹直接进洞,而射击球最多只能利用矩形边的反弹1次,我不太了解桌球上的规则如何,但我想这种简化大约也符合普通桌球玩家考虑的瞄准原则吧。        以下涉及到的角度都是以平面直线逆时针旋转与之重合所转的角度,我是这样考虑这个问题的,先从射击球考虑,目标球射入矩形板的四个角洞有四个角度,对于每一个角度,射击球都有一个确定的碰撞,即沿着射击球进洞方向的反方向,换句话说在碰撞一刹那,射击球的球心是确定的,射击球包括原位置,与矩形四条边的映射位置共有5个球心与该球心连成一条射线(该射线方向即射击球瞄准方向),然而还有个限制条件,即射击球只能撞击圆心与目标球两条切线所夹的范围,这样就需要5个镜像点与4个撞击点所连的射线是否符合该限制条件,符合的话就是我们可以瞄准的方向了。 主程序

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值