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

对于第一次接触编程的朋友从理解上会有难度,我从大家感兴趣的游戏角度,来叫大家敲个桌球小游戏,收获敲代码的兴趣同时起到寓教于乐的目的。

注重版权,转载请注明原文作者及原文链接
原文作者:码农BookSea
原文链接: https://editor.csdn.net/md?articleId=105916522

先把代码要用的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实现的是对角回弹。

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

猜你喜欢

转载自blog.csdn.net/bookssea/article/details/105916522