Java基础-软件配置
1. 开发工具安装配置
下载地址:官网(https://www.eclipse.org/downloads/)
下载压缩包解压即可
下载地址:官网(https://www.oracle.com/java/technologies/downloads/)
配置环境变量:path(将jdk的绝对路径添加进去)
cmd命令:java、javac、javac -version(检测环境是否安装完成)
2. 注释设置
打开eclipse,Window->perferences->Java->Code Style->comments->Types
3. 项目业务
检测开发环境:JDK
- 设置path路径
- cmd命令测试
检测开发工具:eclipse
4.实战— 特殊的小鸟项目(FlyBird)
4.1 创建包
包名采用四级结构,为**【域名.开发者自定义名.项目名.项目模块】**
包名:com.jy.flybird.mainview
作用:
- 和电脑上的文件夹作用一样,分类管理
- 项目所属—版权
4.2创建类
4.2.1 World类
/**
*
* @author WCS
* @version V.1.0.1
* @date 2021-11-30 05:11
* 需求:游戏的主场景
* 思路分析:
* 欢迎界面
* 主游戏界面
* 背景
* 滚动的地面
* 飞翔的小鸟
* 移动的柱子
* 变化的分数
* 结束界面
*
* 点击事件:
* 开始 切换到游戏界面
* 游戏结束 切换到开始
* 点击控制小鸟飞
* 闯关之后--分数加1
* 撞击结束
*
* 添加声音
*
* 完成任务顺序:
* 1)建立窗体--绘制背景
* JFrame类
* Jpanel类---绘制面板--画布
* ImageIO--读取图片
* BufferedImage--暂时存储读取的图片资源
* 问题汇总:
*
*/
加载图片存储缓冲区
BufferedImage bg=null;
加载图片
bg=ImageIO.read(this.getClass().getResource("bg.png"));
重写画板方法,快捷方式Source->Override/Implement Methods ->Jcomponent->paint()
@Override
public void paint(Graphics g) {
// 将画笔变成2D
Graphics2D g2 = (Graphics2D) g;
// 绘制背景
g2.drawImage(bg, 0, 0, null);
}
编写main()方法
public static void main(String[] args) throws Exception {
//创建窗体
JFrame jf=new JFrame();
//设置窗体大小
jf.setBounds(100, 100, 320, 480);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置不可以改变大小
jf.setResizable(false);
//创建当前画布
World w = new World();
//添加到窗体
jf.add(w);
//显示窗体
jf.setVisible(true);
}
4.2.2 Ground类
/**
*
* @author WCS
* @version V.1.0.1
* @date 2021-12-01 02:09
* 需求:绘制地面
* 缓冲区临时存储
* 获取图片--构造方法
* 绘制图片
*
* 让图片动起来
*
* 思路分析:
* 问题汇总:
*
*/
// 定义缓冲区
BufferedImage gimage = null;
/**
* 构造方法 初始化加载数据
*
* @throws IOException
*/
public Ground() throws IOException {
// 加载资源信息,存入缓冲区
gimage = ImageIO.read(this.getClass().getResource("ground.png"));
}
// 绘制图片
public void paint(Graphics2D g) {
// 绘制背景
g.drawImage(gimage, 0, 0, null);
}
在World类中引入Ground
//引入地面
Ground ground = null;
//创建地面
ground = new Ground();
在paint()方法中添加
//绘制地面
ground.paint(g2);
改变地面位置,首先设置变量x,y接收坐标,然后设置变量width和height获取地面大小。
// 定义变量接收坐标
int x = 0;
int y = 0;
// 获取地面的大小
int width = 0;
int height = 0;
在构造方法中调用变量
// 初始化坐标
this.x = 0;
this.y = 400;
// 获取宽高
this.width = gimage.getWidth();
this.height = gimage.getHeight();
改变坐标,使其移动。
/**
* 改变坐标
*/
public void step() {
//坐标减小
x--;
//判断
if (x<360-this.width) {
//重新开始
x=0;
}
}
在World类中添加action()方法,执行动作。
/**
* 执行动作
* @throws InterruptedException
*/
public void action() throws InterruptedException {
//循环一直变化
while (true) {
//改变地面坐标
ground.step();
//放慢变化时间
Thread.sleep(500/60);
//重复绘制
this.repaint();
}
}
最后,在main()方法中调用此方法,即可。
4.3.3 Bird类
package com.jy.flybird.mainview;
/**
*
* @author WCS
* @version V.1.0.1
* @date 2021-12-01 02:30
* 需求:将小鸟引入游戏主场景
* 小鸟飞翔
* 撞击
* 思路分析:
* 问题汇总:
*
*/
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
public class Bird {
// 定义获取所有小鸟图片
BufferedImage[] birdimgs = new BufferedImage[3];
//定义存储当前显示的小鸟图片
BufferedImage bimage=null;
//定义变量控制索引
int index=0;
//定义坐标
int x=0;
int y=0;
//定义宽高
int width=0;
int height=0;
//定义自由落体运动参数
int g=0;
double t=0;
double v0=0;
//角度
double angle=0;
/**
* 构造方法 初始化加载数据
*
* @throws IOException
*/
public Bird() throws IOException {
// 加载资源信息,存入缓冲区
birdimgs[0] = ImageIO.read(this.getClass().getResource("0.png"));
birdimgs[1] = ImageIO.read(this.getClass().getResource("1.png"));
birdimgs[2] = ImageIO.read(this.getClass().getResource("2.png"));
//初始图片
this.bimage=birdimgs[0];
//获取坐标
x=100;
y=200;
//获取宽高
this.width=bimage.getWidth();
this.height=bimage.getHeight();
//初始化
this.g=4;
this.t=0.25;
this.v0=20;
}
// 绘制图片
public void paint(Graphics2D g) {
//图片旋转
g.rotate(-angle,x,y);
// 绘制背景
g.drawImage(bimage, x-this.width/2, y-this.height/2, null);
g.rotate(angle,x,y);
}
/**
* 添加动作
*/
public void step() {
//模拟小鸟的飞翔状态
//变化后的速度
double v=v0-g*t;
//每个时间间隔内加速度运行长度
double l=v*t-0.5*g*t*t;
//修改
v0=v;
//修改小鸟的纵坐标
y=y-(int)l;
//获取角度
angle=Math.atan(l/10);
//改变索引
index++;
//判断
if (index==3) {
index=0;
}
//切换绘制的图标
this.bimage=birdimgs[index];
}
/**
*
*/
public void birdfly() {
v0=20;
}
}
4.2.4 Column类
package com.jy.flybird.mainview;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;
import javax.imageio.ImageIO;
/**
*
* @author WCS
* @version V.1.0.1
* @date 2021-12-01 02:32
* 需求:
* 将柱子绘制到主页面
* 思路分析:
* 问题汇总:
*
*/
public class Column {
// 定义缓冲区
BufferedImage cimage = null;
// 获取柱子的宽高
int width = 0;
int height = 0;
//定义坐标位置
int x = 0;
int y = 0;
//获取随机数对象
Random random = new Random();
/**
* 构造方法 初始化加载数据
*
* @throws IOException
*/
public Column(int x) throws IOException {
// 加载资源信息,存入缓冲区
cimage = ImageIO.read(this.getClass().getResource("column.png"));
// 获取宽高
this.width = cimage.getWidth();
this.height = cimage.getHeight();
//获取坐标
this.x=x;
this.y=140+random.nextInt(120);
}
// 绘制图片
public void paint(Graphics2D g) {
// 绘制背景
g.drawImage(cimage,x-this.width/2, y-this.height/2, null);
}
/**
* 柱子动起来
*/
public void step() {
//坐标改变
x--;
//判断
if (x<-this.width) {
x=320;
this.y=140+random.nextInt(120);
}
}
}
4.2.5 World类(更新完善)
package com.jy.flybird.mainview;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
*
* @author WCS
* @version V.1.0.1
* @date 2021-11-30 05:11
* 需求:游戏的主场景
* 思路分析: 欢迎界面
* 主游戏界面
* 背景
* 滚动的地面
* 飞翔的小鸟
* 移动的柱子
* 变化的分数
* 结束界面
* 点击事件:
* 开始 切换到游戏界面
* 游戏结束 切换到开始
* 点击控制小鸟飞
* 闯关之后--分数加1
* 撞击结束
* 添加声音
*
* 完成任务顺序:
* 1)建立窗体--绘制背景
* JFrame类
* Jpanel类---绘制面板--画布
* ImageIO--读取图片
* BufferedImage--暂时存储读取的图片资源
* 问题汇总:
*
*/
public class World extends JPanel {
/**
*
*/
private static final long serialVersionUID = 1L;
// 加载图片存储缓冲区
BufferedImage bg = null;
//引入地面
Ground ground = null;
//引入小鸟
Bird bird = null;
//引入柱子
Column column1 =null;
Column column2 =null;
/**
* 构造方法
*
* @throws Exception
*/
public World() throws Exception {
// 加载图片资源
bg = ImageIO.read(this.getClass().getResource("bg.png"));
//创建地面
ground = new Ground();
//创建小鸟
bird = new Bird();
//创建柱子
column1 = new Column(320+100);
column2 = new Column(320+100+180);
}
// 绘制
@Override
public void paint(Graphics g) {
// 将画笔变成2D
Graphics2D g2 = (Graphics2D) g;
// 绘制背景
g2.drawImage(bg, 0, 0, null);
//绘制柱子
column1.paint(g2);
column2.paint(g2);
//绘制地面
ground.paint(g2);
//绘制小鸟
bird.paint(g2);
}
/**
* 执行动作
* @throws InterruptedException
*/
public void action() throws InterruptedException {
//添加点击事件
this.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
bird.birdfly();
}
});
//循环一直变化
while (true) {
//改变地面坐标
ground.step();
//小鸟飞翔
bird.step();
//柱子移动
column1.step();
column2.step();
//放慢变化时间
Thread.sleep(1000/60);
//重复绘制
this.repaint();
}
}
/**
*
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
//创建窗体
JFrame jf=new JFrame("特殊的小鸟");
//设置窗体大小
jf.setBounds(100, 100, 320, 480);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置不可以改变大小
jf.setResizable(false);
//创建当前画布
World w = new World();
//添加到窗体
jf.add(w);
//显示窗体
jf.setVisible(true);
//调用动作方法
w.action();
}
}