1. import javax.swing.*;
    2. import java.awt.*;
    3. public class BilliardsCode extends JFrame {
    4. //载入图片
    5. Image ball =Toolkit.getDefaultToolkit().getImage("images/ball.png");
    6. Image desk =Toolkit.getDefaultToolkit().getImage("images/desk.png");
    7. double x=200;
    8. double y=200;
    9. double degree=3.14/3; //弧度 3.14=180° 60度
    10. //boolean right=true; //控制小球移动方向
    11. //绘制窗口
    12. public void paint(Graphics g){
    13. System.out.println("窗口被画了一次");
    14. g.drawImage(desk,0,0,null);
    15. g.drawImage(ball, (int) x,(int) y,null);
    16. x=x+10*Math.cos(degree);
    17. y=y+10*Math.sin(degree);
    18. //碰到上下边界
    19. if(y>501-70||y<80){
    20. degree= -degree;
    21. }
    22. //碰到左右边界
    23. if(x>856-70||x<40){
    24. degree= 3.14-degree;
    25. }
    26. // if(right){
    27. // x+=10;
    28. // }else {
    29. // x-=10;
    30. // }
    31. //
    32. // if(x>856-70){
    33. // right=false;
    34. // }
    35. //
    36. // if(x<40){
    37. // right=true;
    38. // }
    39. }
    40. //创建窗口
    41. void launchFrame(){
    42. setSize(866,501);
    43. setLocation(100,100);
    44. setVisible(true);
    45. //实现动画,每秒绘制窗口30次
    46. while(true){
    47. repaint();
    48. try {
    49. Thread.sleep(40);//一秒1000毫秒,大约一秒绘制1000/40次
    50. } catch (InterruptedException e) {
    51. e.printStackTrace();
    52. }
    53. }
    54. }
    55. public static void main(String[] args) {
    56. System.out.println("我的小游戏开始了");
    57. BilliardsCode game=new BilliardsCode();
    58. game.launchFrame();
    59. }
    60. }

    desk.pngball.png