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月6日 下午5:20
下一篇 2022年5月6日 下午5:40


相关推荐

  • gamma correction什么意思_伽马校正计算方法

    gamma correction什么意思_伽马校正计算方法伽马是数字成像系统的一个重要特征,它定义了像素值与其实际亮度之间的关系。在标准显示器上面,如果没有伽马,数码相机拍摄到的阴影内容便会跟我们实际看到的有所差异。平时我们所说的伽马校正、伽马编码、伽马压缩,都是伽马曲线的各种应用场景,属于相似的概念。对于伽马工作原理的理解,一方面可以提高摄影者的曝光技术,另一方面可以帮助人们更好地利用后期的图像编辑功能。

    2026年3月4日
    3
  • quartz定时任务不执行(任务统筹策略)

    由于某种原因,例如应用停掉,导致定时任务错过了本该执行的时间点,这就是定时任务过期。对于过期的定时任务,我们需要基于某种策略对其进行处理。过期策略在Trigger接口中定义了两种过期策略,publicstaticfinalintMISFIRE_INSTRUCTION_SMART_POLICY=0;publicstaticfinalintMISF…

    2022年4月11日
    1.5K
  • swagger使用「建议收藏」

    swaggerrestfuldemo网络上swagger的配置,大多都是复制粘贴转发的。本人开始的时候参照了配置过,基本都是以失败告终。一怒之下,造死了搞,搭建了一个swagger描述的rest风格的接口demo工程。使用的版本号为spring4+jdk8+swagger0.8.4搭建过程中遇到不少问题,主要是swagger默认依赖的是spring3.与jdk8配合的时候,有点问题。直接将s

    2022年4月8日
    53
  • eoLinker_业内领先的api管理平台

    eoLinker_业内领先的api管理平台

    2021年10月13日
    41
  • charles导致mac无法上网_手机能上网mac不能上网

    charles导致mac无法上网_手机能上网mac不能上网前言charles关闭后,发现网页突然打开了,那大概率是设置了代理,但明明已经关闭了charles,这是由于mac网络偏好设置中,使用的是手动代理,将其改为自动即可解决方法1打开网络偏好设置,

    2022年8月6日
    5
  • 茂名天源石化有限责任公司_茂名石化为什么在茂名

    茂名天源石化有限责任公司_茂名石化为什么在茂名目前来看,广东省已经拥有诸多国外化工巨头、大型民营炼化企业和不少国企的炼化项目,成为很多石化企业首选的项目落地基地。“石化业高质量发展看广东”,已经逐渐明朗。今年以来,已有恒力石化(惠州)PTA项目、东华能源(茂名)烷烃资源综合利用项目(一期)、茂名天源石化碳三碳四资源利用等项目开工今年3月31日,广东省发展改革委官网公布《广东省2021年重点建设项目计划》。在2021年重点项目名单中,广东共安排省重点项目1395个,总投资达7.28万亿元,年度计划投资8000亿元。其中新开工项目有3个,总投资约2

    2022年10月16日
    6

发表回复

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

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