大家好,又见面了,我是你们的朋友全栈君。
桌面小游戏
下面分成四个步骤来实现项目
第一步:创建项目和窗口。
第二步:加载两张图片(ball.png和desk.jpg)。
第三步:实现动画,让小球沿水平方向移动并做边界检测。
第四步:实现小球沿着任意角度飞行。
第一步:创建项目和窗口。
创建项目名称”桌面小球”,再新建images文件夹,将ball.png和desk.jpg图片拷贝。
图片图片如下:
然后在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();
}
}
运行结果:
第三步:实现动画
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账号...