手把手教你写个java小游戏,桌球小游戏

简介: 手把手教你写个java小游戏,桌球小游戏

先把代码要用的2张图片放上来给大家

小球.png

桌球台.jpg

我的构造路径如下:

BallGame.java

package com.BallGame;
import java.awt.*;           //导入画布
import javax.swing.*;        //导入画布
public class BallGame  extends JFrame {
  Image ball=Toolkit.getDefaultToolkit().getImage("images/小球.png");       //获取图片
  Image desk=Toolkit.getDefaultToolkit().getImage("images/桌球台.jpg");
  double x=100; //横坐标
  double y=100; //纵坐标
  boolean right=true; //true表示向右,false表示向左
  public void paint(Graphics g) {
    System.out.println("窗口内画了一次");
    g.drawImage(desk, 0, 0, null);
    g.drawImage(ball, (int)x, (int)y, null);
    if(right) {
      x=x+10; 
    }
    else {
      x=x-10;
    }
    if(x>(856-30-40)) {  //30是小球直径,40是桌子边框的宽度
      right=false;
    }
    if(x<40) { //40是桌子边框的宽度
      right=true;
    }
  }
  void launchFrame() {
    setSize(856,500);
    setLocation(50, 50);
    setVisible(true);
    while(true) {
      repaint();
      try {
        Thread.sleep(40); //40ms  1秒画25次
      }
      catch(Exception e) {
        e.printStackTrace();
      }
    }
  }
public static void main(String[] args) {
  System.out.println("你好");
  BallGame game=new BallGame();
  game.launchFrame();
}
}

BallGame1.java

package com.BallGame;
import  java.awt.*;
import javax.swing.*;
public class BallGame1 extends JFrame {
    Image ball = Toolkit.getDefaultToolkit().getImage("images/小球.png");
    Image desk = Toolkit.getDefaultToolkit().getImage("images/桌球台.jpg");
    double  x=100;    //小球的横坐标
    double  y=100; //小球的纵坐标
    double degree = 3.14/3;    //弧度。此处就是:60度
    //画窗口的方法
    public void paint(Graphics  g){
        System.out.println("窗口被画了一次!");
        g.drawImage(desk, 0, 0, null);
        g.drawImage(ball,(int)x, (int)y, null);
        x  = x+ 10*Math.cos(degree);   //用数学方法实现对角线反弹
        y  = y +10*Math.sin(degree); 
        //碰到上下边界
        if(y>500-40-30||y<40+40){//500是窗口高度;40是桌子边框,30是球直径;最后一个40是标题栏的高度
            degree = -degree;
        }
        //碰到左右边界
        if(x<40||x>856-40-30){
            degree = 3.14 - degree;
        }
    }
    //窗口加载
    void launchFrame(){
        setSize(856,500);
        setLocation(50,50);
        setVisible(true);
        //重画窗口,每秒画25次
        while(true){
            repaint(); 
            try{
                Thread.sleep(40);   //40ms,   1秒=1000毫秒.  大约一秒画25次窗口
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    }
    //main方法是程序执行的入口
    public static void main(String[] args){
        System.out.println(" 你好");
        BallGame1 game = new BallGame1();
        game.launchFrame();
    }
}

其中BallGame.java实现的是水平回弹,BallGame1.java实现的是对角回弹。

白嫖不好,创作不易,各位的点赞就是我创作的最大动力,我们下篇文章见!

目录
相关文章
|
8天前
|
Java Android开发
贪吃蛇【小游戏】(Java课设)
贪吃蛇【小游戏】(Java课设)
19 0
|
5月前
|
Java
8.Java循环高级综合练习-无限循环和跳转控制语句,逢七过,平方根,判断是否为质数,猜数字小游戏
8.Java循环高级综合练习-无限循环和跳转控制语句,逢七过,平方根,判断是否为质数,猜数字小游戏
83 1
|
8天前
|
Java 程序员 图形学
程序员教你用代码制作飞翔的小鸟--Java小游戏,正好拿去和给女神一起玩
《飞扬的小鸟》Java实现摘要:使用IntelliJ IDEA和JDK 16开发,包含小鸟类`Bird`,处理小鸟的位置、速度和碰撞检测。代码示例展示小鸟图像的加载、绘制与旋转。同时有`Music`类用于循环播放背景音乐。游戏运行时检查小鸟是否撞到地面、柱子或星星,并实现翅膀煽动效果。简单易懂,可直接复制使用。
|
8天前
|
存储 Java
0基础java初学者都能做的打字通小游戏? 内含源码解读和细致讲解!!
0基础java初学者都能做的打字通小游戏? 内含源码解读和细致讲解!!
25 2
0基础java初学者都能做的打字通小游戏? 内含源码解读和细致讲解!!
|
8天前
|
Java Android开发
象棋小游戏【小游戏】(Java课设)
象棋小游戏【小游戏】(Java课设)
13 2
|
8天前
|
Java Android开发
贪吃蛇小游戏【小游戏】(Java课设)
贪吃蛇小游戏【小游戏】(Java课设)
20 1
|
8天前
|
Java Android开发
五子棋小游戏【小游戏】(Java课设)
五子棋小游戏【小游戏】(Java课设)
15 0
|
8天前
|
Java Android开发
日历/万年历【小游戏】(Java课设)
日历/万年历【小游戏】(Java课设)
21 1
日历/万年历【小游戏】(Java课设)
|
8天前
|
Java
用java来写一个简单的猜拳小游戏
用java来写一个简单的猜拳小游戏
15 0
|
8天前
|
安全 Java 开发者
FlyBird(飞翔的小鸟)Java小游戏
FlyBird(飞翔的小鸟)Java小游戏
54 0