zoukankan      html  css  js  c++  java
  • Java桌球小游戏1

    版本三、使小球动起来
    package cn.xjion.game;
    /**
    * 水平滚动
    * @author xjion
    *
    */
    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");

    int x = 100;
    int y = 100;
    boolean right = true;

    // 画窗口的方法
    public void paint(Graphics g){
    // 画桌面
    g.drawImage(desk, 0, 0, null);
    // 画ball对象,坐标100,100
    g.drawImage(ball, x, y, null);
    // 如果向右走就加10,否则减10
    if (right) {
    x = x + 10;
    }else{
    x = x - 10;
    }
    // 当球跑到头了就返回
    if(x>856-40-30){
    right = false;
    }
    if(x<40){
    right = true;
    }

    }
    // 窗口加载的方法
    void launchFrame(){
    // 窗口的大小,宽高
    setSize(856,500);
    // 窗口的位置,距离窗口左上角的位置
    setLocation(50,50);
    // 窗口可见
    setVisible(true);

    // 重画窗口,无限重画
    while(true){
    // 重画方法
    repaint();
    // try catch抛异常
    try {
    // 40ms重画一次,1秒25次
    Thread.sleep(40);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }

    // main方法,执行入口
    public static void main(String[] args) {
    // 新建对象
    BallGame bg = new BallGame();
    // 调用方法
    bg.launchFrame();
    }
    }
    版本四、使小球沿任意角度滚动
    package cn.xjion.game;
    /**
    * 任意滚动
    * @author xjion
    *
    */
    import java.awt.*;
    import javax.swing.*;
    //继承窗口类
    public class BallGame2 extends JFrame{
    // 创建两个图片的对象,代表两个图片
    Image ball = Toolkit.getDefaultToolkit().getImage("image/ball.png");
    Image desk = Toolkit.getDefaultToolkit().getImage("image/desk.jpg");
    // 在窗口上的坐标
    double x = 100;
    double y = 100;

    double degree = 3.14 / 3;//弧度,60°

    // 画窗口的方法
    public void paint(Graphics g){
    // 画桌面
    g.drawImage(desk, 0, 0, null);
    // 画ball对象,坐标100,100
    g.drawImage(ball,(int) x,(int) y, null);
    // x和y坐标的变化
    x = x + 10*Math.cos(degree);
    y = y + 10*Math.sin(degree);

    /*判断什么时候碰到边界回弹*/
    // 碰到上下边界回弹
    if (y>500-40-30 || y<40 + 40) {
    degree = -degree;
    }
    // 碰到左右边界回弹
    if (x>856-40-30 || x<30) {
    degree = 3.14-degree;
    }

    }
    // 窗口加载的方法
    void launchFrame(){
    // 窗口的大小,宽高
    setSize(856,500);
    // 窗口的位置,距离窗口左上角的位置
    setLocation(50,50);
    // 窗口可见
    setVisible(true);

    // 重画窗口,无限重画
    while(true){
    // 重画方法
    repaint();
    // try catch抛异常
    try {
    // 40ms重画一次,1秒25次
    Thread.sleep(40);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }

    // main方法,执行入口
    public static void main(String[] args) {
    // 新建对象
    BallGame2 bg = new BallGame2();
    // 调用方法
    bg.launchFrame();
    }
    }
    --------------------- 

  • 相关阅读:
    从针对接口编程到依赖注入
    DataRow 数组转化成DataTable
    Math 类的方法概要
    .net控件
    字符串反转
    DataTable
    Enabled设置为False时,前景色和背景色也不改变的TextBox 并居中
    C# 四舍五入 (解决四舍六入五成双的问题)
    查询最后一条数据
    C# toString()
  • 原文地址:https://www.cnblogs.com/ly570/p/11154056.html
Copyright © 2011-2022 走看看