• Java桌球小游戏(兴趣制作)


    两张图片放在src的同级目录下

    版本一、出现窗口
    package cn.xjion.game;
    /**
    * 出现窗口
    * @author xjion
    *
    */
    import java.awt.*;
    import javax.swing.*;
    //继承窗口类
    public class BallGame extends JFrame{
    // 窗口加载的方法
    void launchFrame(){
    // 窗口的大小,宽高
    setSize(300,300);
    // 窗口的位置,距离窗口左上角的位置
    setLocation(400,200);
    // 窗口可见
    setVisible(true);
    }
    // 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 BallGame extends JFrame{
    // 创建两个图片的对象,代表两个图片
    Image ball = Toolkit.getDefaultToolkit().getImage("image/ball.png");
    Image desk = Toolkit.getDefaultToolkit().getImage("image/desk.jpg");
    // 画窗口的方法
    public void paint(Graphics g){
    // 画桌面
    g.drawImage(desk, 0, 0, null);
    // 画ball对象,坐标100,100
    g.drawImage(ball, 100, 100, null);
    }

    // 窗口加载的方法
    void launchFrame(){
    // 窗口的大小,宽高
    setSize(856,500);
    // 窗口的位置,距离窗口左上角的位置
    setLocation(50,50);
    // 窗口可见
    setVisible(true);
    }
    // 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 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(http://www.my516.com);
    }
    }
    --------------------- 

  • 相关阅读:
    《Android 4游戏高级编程(第2版)》书评
    push研究——Apache Mina探索初步
    Android UI开发第二十三篇——分享书架UI实现
    cookie学习总结
    Web.xml配置详解
    Java序列化的机制和原理
    Java高级技术(汇总中...)
    [Java]HashMap的两种排序方式
    jdk与jre的区别
    DM,NLP常用算法汇总
  • 原文地址:https://www.cnblogs.com/ly570/p/10989716.html
Copyright © 2020-2023  润新知