Java实现简单台球桌问题,供大家参考,具体内容如下 需求: 使小球可以在桌面上移动,移动到桌面边缘将被弹回,显示小区的移动 素材: 小球照片 桌球照片 程序源代码: package 桌球
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(); } }
运行效果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。