Java实现简单的台球桌游戏

2023-11-13

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();
		
	}
}

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java实现简单的台球桌游戏 的相关文章