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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mac datagrip2021 激活码[在线序列号]

    mac datagrip2021 激活码[在线序列号],https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
    120
  • 打印纸张尺寸换算_纸张尺寸对照表

    打印纸张尺寸换算_纸张尺寸对照表常用纸张的尺寸大小对照表-纸张规格对照表纸张的大小国际标准化组织的ISO216国际标准指明了大多数国家使用的标准纸张的尺寸。此标准源自德国,在1922年通过,定义了A、B、C三组纸张尺寸,C组纸张尺寸主要用于信封。另外,有些国家也有自己的标准,如美国,日本。这里主要是指办公用纸。下面是一些标准纸张的具体尺寸。单位:mmISO216AA0A1A2A3A4A5A…

    2022年6月20日
    240
  • acwing-532货币系统(最小独立集+01背包)「建议收藏」

    acwing-532货币系统(最小独立集+01背包)「建议收藏」在网友的国度中共有 n 种不同面额的货币,第 i 种货币的面额为 a[i],你可以假设每一种货币都有无穷多张。为了方便,我们把货币种数为 n、面额数组为 a[1…n] 的货币系统记作 (n,a)。在一个完善的货币系统中,每一个非负整数的金额 x 都应该可以被表示出,即对每一个非负整数 x,都存在 n 个非负整数 t[i] 满足 a[i]×t[i] 的和为 x。然而,在网友的国度中,货币系统可能是不完善的,即可能存在金额 x 不能被该货币系统表示出。例如在货币系统 n=3, a=[2,5,9] 中,金

    2022年8月8日
    5
  • 矩阵特征值和特征向量怎么求_矩阵的特征值例题详解

    矩阵特征值和特征向量怎么求_矩阵的特征值例题详解设A是n阶方阵,如果存在数m和非零n维列向量 x,使得Ax=mx成立,则称m是A的一个特征值(characteristicvalue)或本征值(eigenvalue)。非零

    2022年8月5日
    5
  • awstats安装流程「建议收藏」

    awstats安装流程「建议收藏」我是直接从网站上下的rpm,然后rpm-ivh的然后直接安装到/usr/local/awstatsapache日志格式要使用combined:CustomLog"/var/log/httpd/access_log"combined我是用的logrotate每天断日志,然后将以前的日志打包成gz存放,于是昨天的日志就是access_log.1.gz添加主机(可以…

    2022年7月16日
    18

发表回复

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

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