5分钟完成桌面小游戏项目「建议收藏」

5分钟完成桌面小游戏项目「建议收藏」地址复制到

大家好,又见面了,我是你们的朋友全栈君。

桌面小游戏

下面分成四个步骤来实现项目
第一步:创建项目和窗口。
第二步:加载两张图片(ball.png和desk.jpg)。
第三步:实现动画,让小球沿水平方向移动并做边界检测。
第四步:实现小球沿着任意角度飞行。

第一步:创建项目和窗口。
创建项目名称”桌面小球”,再新建images文件夹,将ball.png和desk.jpg图片拷贝。
图片图片如下:
ball
desk
然后在src下新建类BallGame.java,项目结构如下:

桌面游戏的项目结构
第一步:创建项目和窗口代码如下:

package 桌面游戏;

import javax.swing.JFrame;

public class BallGame extends JFrame{ 
   
	//加载窗口
	void launchFrame(){ 
   
		setSize(300,300);	//窗口大小
		setLocation(400,400);//窗口的起始位置
		setVisible(true);
	}

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

}

运行结果:
在这里插入图片描述

第二步:加载两张图片
详细内容见注释

package 桌面游戏;

import java.awt.*;
import java.awt.Toolkit;

import javax.swing.JFrame;

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;//小球纵坐标
	
	//画窗口的方法:加载小球与桌面
	
	public void paint(Graphics g){ 
   
		System.out.println("窗口被画了一次!!");
		g.drawImage(desk, 0, 0, null);//画出桌面图片
		g.drawImage(ball, (int)x,(int)y, null);//画出小球图片
	}
	//加载窗口
	void launchFrame(){ 
   
		setSize(856,500);	//窗口大小
		setLocation(50,50);//窗口的起始位置
		setVisible(true);
	}

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

}

运行结果:
aa

第三步:实现动画

package 桌面游戏;

import java.awt.*;
import java.awt.Toolkit;

import javax.swing.JFrame;

public class BallGame3 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;//判断小球方向
	//画窗口的方法:加载小球与桌面
	
	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;
		}
		//边界检测
		//856是窗口宽度,40是桌子边框的宽度,30是小球的直径
		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{ 
   
				Thread.sleep(40);
			}catch(Exception e){ 
   
				e.printStackTrace();
			}
		}
	}

	public static void main(String[] args) { 
   
		System.out.println("被调用");
		BallGame3 game=new BallGame3();
		game.launchFrame();
	}

}

运行结果:
在这里插入图片描述
第四步:桌面游戏代码——实现任意角度飞行

package 桌面游戏;

import java.awt.*;
import java.awt.Toolkit;

import javax.swing.JFrame;

public class BallGame4 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度
	
	boolean right=true;//判断小球方向
	//画窗口的方法:加载小球与桌面
	
	public void paint(Graphics g){ 
   
		System.out.println("窗口被画了一次!!");
		g.drawImage(desk, 0, 0, null);//画出桌面图片
		g.drawImage(ball, (int)x,(int)y, null);//画出小球图片
		//根据degree改变小球坐标
		x=x+10*Math.cos(degree);
		y=y+10*Math.sin(degree);
		
	
		//边界检测:碰上下边界
		//500是窗口高度,40是桌子边框的宽度,30是小球的直径;40是标题栏高度
		if(y>500-40-30||y<40+40){ 
   
			degree=-degree;
		}
		//边界检测:碰左右边界
		//856是窗口宽度,40桌子边框,30是小球直径
		if(x<40||x>856-40-30){ 
   
			degree=3.14-degree;
		}
	}
	//加载窗口
	void launchFrame(){ 
   
		setSize(856,500);	//窗口大小
		setLocation(50,50);//窗口的起始位置
		setVisible(true);
		
		while(true){ 
   
			repaint();
			try{ 
   
				Thread.sleep(40);//40ms,1s=1000ms.大约1秒25画次
			}catch(Exception e){ 
   
				e.printStackTrace();
			}
		}
	}

	public static void main(String[] args) { 
   
		System.out.println("被调用");
		BallGame4 game=new BallGame4();
		game.launchFrame();
	}

}

运行结果:
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/138627.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 主流大数据平台及解决方案对比「建议收藏」

    主流大数据平台及解决方案对比「建议收藏」这几天自己根据网上的资料学习整理的,比较粗浅,权当个人学习总结

    2022年5月5日
    45
  • .ziw文件是什么?如何打开.ziw文件?[通俗易懂]

    .ziw文件是什么?如何打开.ziw文件?[通俗易懂].ziw文件是为知笔记的一种文档格式打开方式:找到为知笔记的官网,下载它的windows安装包即可[缺点:该软件会有一个使用的有效期]打开.ziw文件时,右击选择发送到“为知笔记”,选择相应的文件夹保存即可…

    2022年10月12日
    0
  • 电脑蓝屏错误代码0x000000ED_蓝屏代码0x000000ed

    电脑蓝屏错误代码0x000000ED_蓝屏代码0x000000ed电脑蓝屏的原因很多,显示的电脑蓝屏也不一样,对应的修复电脑蓝屏的方法也不同。最近就有网友反映自己的电脑蓝屏代码0x000000ed怎么办,该怎么修复电脑蓝屏呢?今天小编就教下大家电脑蓝屏代码0x000000ed的解决方法。1、蓝屏0x000000ed代码为加载引导时失败,首先先尝试重启。2、如果不能解决的话,重启电脑按住F8,选择进入安全模式,然后进入安全模式桌面。2、进入安全模式后,选择左下角开始菜单,依次选择“所有程序”-“附件”-“命令提示符”右键选择以管理员打开。或者直接快捷键win

    2022年10月8日
    0
  • CTS测试介绍(面试怎么介绍接口测试)

    CTS测试基本介绍CTS测试全称为系列兼容测试(CompatibilityTestsuite),CTS是为了测试手机是否符合google定义的兼容性规范(CompatibilityDefinition)。从而基于Android的应用程序能在基于同一个api版本的设备上面运行。通过CTS测试的设备可以获得Android的商标,并且享受AndroidMarket的权限。CTS测试是一个基于…

    2022年4月10日
    62
  • 网络编程之粘包问题

    什么是粘包粘包是一种现象这种现象只出现在TCP中而不会出现在UDP中(TCP和UDP都是传输层中的协议)粘包概念详解:当发送网络数据时,tcp协议会根据Nagle算法将时间间隔短,数据量小的多

    2022年3月29日
    49
  • matlab保存所有图,Matlab中图片保存的5种方法

    matlab保存所有图,Matlab中图片保存的5种方法matlab的绘图和可视化能力是不用多说的,可以说在业内是家喻户晓的。Matlab提供了丰富的绘图函数,比如ez**系类的简易绘图函数,surf、mesh系类的数值绘图函数等几十个。另外其他专业工具箱也提供了专业绘图函数,这些值得大家深入学习好久。今天我只是讨论下如何保存这些由Matlab绘制出来的图像呢?当然借助第三方截图软件,就算了!1、使用imwrite函数如图像是img,则可以使用im…

    2022年9月4日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号