java中的桌球弹动游戏

需要的东西

1.两张图片,桌面,小球

设计思路

  1. 画出一个窗口,设计相关的大小及其在屏幕中的位置
  2. 加载图片,将桌面和小球的图片加载到窗口,然后根据图片的呈现效果修改相关窗体的大小及其位置
  3. 移动小球,如果左右移动的话就是对于x坐标的修改,如果是进行弹回的话,那么就根据相应的角度进行修改,
  4. 在移动小球的时候,是对窗口的不断重画,更新。

简易的小球游戏

小球只进行左右移动

package myball;
import java.awt.*;
import javax.swing.*;

public class BallGame extends JFrame {
	
	
	//加载图片
		Image ball=Toolkit.getDefaultToolkit().getImage("images/ball.png");
		Image desk=Toolkit.getDefaultToolkit().getImage("images/desk.jpg");
		
		double x=100;//小球的横坐标
		double y=100;//小球的纵坐标
		boolean right=true;//表示小球移动的方向,right为右移。false为左移
		
		//画窗口的方法
		public void paint(Graphics g)
		{
			System.out.println("窗口被画了一次");
			g.drawImage(desk,10,30,null);//先画桌面
			g.drawImage(ball,(int)x,(int)y,null);//再画小球;
			
			if(right)
			{
				x=x+10;//移动小球
			}
			else
			{
				x=x-10;
			}
			if(x>780)
			{
				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);//40毫秒,表示一秒画25次窗口;
			}catch(Exception e)
			{
				
			}
			
		}
		
	}
	
	
	
	//添加动画
	

	public static void main(String[] args) {
		//System.out.println("");
		BallGame game=new BallGame();
		game.launchFrame();
	}
}

小球的弹回游戏

package myball;
import java.awt.*;
import javax.swing.*;

public class BallGame2 extends JFrame {
	
	
	//加载图片
		Image ball=Toolkit.getDefaultToolkit().getImage("images/ball.png");
		Image desk=Toolkit.getDefaultToolkit().getImage("images/desk.jpg");
		
		double x=100;//小球的横坐标
		double y=100;//小球的纵坐标
		double degree=3.14/3;//小球反射的角度,弧度的角度60;
		
		//画窗口的方法
		public void paint(Graphics g)
		{
			System.out.println("窗口被画了一次");
			g.drawImage(desk,10,30,null);//先画桌面
			g.drawImage(ball,(int)x,(int)y,null);//再画小球;
			
			x=x+10*Math.cos(degree);
			y=y+10*Math.sin(degree);
			
			//上下往回弹,y的坐标大于500表示的是小球超越下边界
			if(y>430||y<70)//500-70减去边框,上边框
			{
				degree=-degree;
			}
			
			//左右往回弹,y的坐标大于500表示的是小球超越下边界
			if(x>780||x<40)//500-70减去边框,上边框
			{
				degree=3.14-degree;//角度互补
			}
		}
			
		
	//加载窗口
	void launchFrame()
	{
		setSize(856,500);//宽高
		setLocation(50,50);//窗口在屏幕中的位置
		setVisible(true);
		//重画窗口
		while(true)//表示的是一直重画 
		{
			repaint();
			try {
				Thread.sleep(40);//40毫秒,表示一秒画25次窗口;
			}catch(Exception e)
			{
				
			}
			
		}
		
	}
		

	public static void main(String[] args) {
		//System.out.println("");
		BallGame2 game=new BallGame2();
		game.launchFrame();
	}
}


相关的图片:
在这里插入图片描述
在这里插入图片描述
小球的图片是在其他的图片上截取下来的,可以自己找到相应的图片进行操作。

发布了43 篇原创文章 · 获赞 11 · 访问量 2601

猜你喜欢

转载自blog.csdn.net/weixin_43328816/article/details/104135933