Java实现简单的台球桌游戏

Java实现简单台球桌问题
需求:
使小球可以在桌面上移动,移动到桌面边缘将被弹回,显示小区的移动
素材:
小球照片
在这里插入图片描述
桌球照片
在这里插入图片描述
程序源代码:

package 桌球游戏;

import java.awt.*;
import 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=100;//小球的纵坐标
	/*boolean right =true;        //方向*/
	double degree=3.14/3;               //弧度表示,60°
	
	//窗口加载
	void launchFrame() {
		setSize(856,500);           //参数和桌面有关
		setLocation(400,400);
		setVisible(true);          //设置窗口可见
		
		//重画窗口,每秒画25次
		while(true) {
				repaint();//repaint()方法会调用paint()方法
				try {
					Thread.sleep(20);//40ms,
				}catch(Exception e) {
						e.printStackTrace();
				}
			}		
	}
	
	//画窗口方法
	public void paint(Graphics g){
		System.out.println("窗口被画一次!");
		g.drawImage(desk,0,0,null);
		g.drawImage(ball, (int)x,(int)y, null);
		/*                                    //注释内容为小球水平方向移动         
		x=x+1;
		if(right) {
			x+=10;
		}else {
			x-=10;
		}
		if(x>856-40-30)   //30小球的直径,40球桌边框的
			right=false;
		if(x<40)
			right=true;
		//y=y+2;
		 * */
		x=x+10*Math.cos(degree);
		y=y+10*Math.sin(degree);
		
		//当小球遇到桌面的上下界面时,发生反转,
		if(y>500-40-30||y<40+40)           //(40+40)一个表示标题栏,一个时球桌宽
			degree=-degree;
		if(x<0+40||x>856-40-30)
			degree =3.14-degree;
	}
	
	//main 方法执行入口
	public static void main(String []args) {
		System.out.println("欢迎来到小球游戏!");
		BallGame game=new BallGame();
		game.launchFrame();
		
	}
}

运行效果
在这里插入图片描述

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值