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();
}
}

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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Linux重启网卡的方法「建议收藏」

    Linux重启网卡的方法「建议收藏」重启网卡的几种方法:一、network利用root帐户#servicenetworkrestart二、ifdown/ifup#ifdowneth0#ifupeth0三、ifconfig#ifconfigeth0down#ifconfigeth0up

  • firewall zone_firewalld关闭端口

    firewall zone_firewalld关闭端口自定义zone#添加/删除zonefirewall-cmd–new-zone=mysshzone–permanentfirewall-cmd–delete-zone=mysshzone–permanent#查询所有zone列表firewall-cmd–get-zonesblockdmzdropexternalhomeinternalmysshzonepublictrustedwork#显示生效的zonefirewall-cmd–get-a

  • excel截取字符串函数_截取函数 excel

    excel截取字符串函数_截取函数 excelExcel中共提供了三种函数来对字符串进行截取操作left(text,num):用于对一个文本字符串,从左向右提取指定个数的字符right(text,num):用于对一个文本字符串,从右向左提取指定个数的字符MID(text,start_num,num_chars):从一个文本字符串的指定位置开始,截取指定个数的字符…

    2022年10月22日
  • idea激活码永久3月最新在线激活

    idea激活码永久3月最新在线激活,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • 数据结构之循环队列C语言实现(详细)[通俗易懂]

    数据结构之循环队列C语言实现(详细)[通俗易懂]队列的一些说明队列的定义队列,一种特殊的线性表特点:只允许在一端输入,在另一端输出。输入端称为队尾,输出端称为队头因此,队列,又称为先进先出表(FIFO),类似于生活中的排队,先来的排在前头,后来的排在后头,一个一个办理业务。队列有两种,一种叫做循环队列(顺序队列),另一种叫做链式队列。这一篇讲的是循环队列,链式队列在另外一篇文章中循环数组循环队列使用的是数组,但是这个数组比较特别,为循环数组。为什么要使用循环数组呢?可以想象一下,假如我们使用通常的数组。那么在使用过程中,我们是从后面加

  • Java 零拷贝_java高性能编程

    Java 零拷贝_java高性能编程1、摘要零拷贝的“零”是指用户态和内核态间copy数据的次数为零。传统的数据copy(文件到文件、client到server等)涉及到四次用户态内核态切换、四次copy。四次copy中,两次在用户态和内核态间copy需要CPU参与、两次在内核态与IO设备间copy为DMA方式不需要CPU参与。零拷贝避免了用户态和内核态间的copy、减少了两次用户态内核态间的切换。零拷贝可以提高数据传输效率,但对于…

发表回复

您的电子邮箱地址不会被公开。

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