-
- 可爱的Tom猫程序 -- 拓薪教育
- 第一章:程序代码
- 1. 准备开发环境
- 第一章:程序代码
- 可爱的Tom猫程序 -- 拓薪教育
开发工具选择的是idea,创建Java的工程,cn.tx.img包结构,从今天提供的资料中导入资源中提供好的Tom猫所有的图片。
在cn.tx包下创建主程序,开始编写程序代码。
运行的效果
- 2. 代码实现的步骤
主代码
package cn.tx;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* 拓薪教育 -- 腾讯课程认证机构
* 樱木老师
*/
public class TomGame extends JFrame implements Runnable{
// 生气图片集合
private List<ImageIcon> angryIcons = new ArrayList<>();
// 吃饭 图片集合
private List<ImageIcon> eatIcons = new ArrayList<>();
// 喝水
private List<ImageIcon> drinkIcons = new ArrayList<>();
// 图片
private static JLabel bgLabel = new JLabel();
// 吃按钮
private static JLabel eatLabel = new JLabel();
// 喝水按钮
private static JLabel drinkLabel = new JLabel();
// 定义下标值
private static int num = 0;
// 点击按钮,切换动作
private static String action = "angry";
public TomGame(){
try {
// 加载生气图片,一共26张图片
for (int i = 0; i < 26; i++) {
// 图片的路径
String path = "img/Animations/Angry/angry_"+(i<10?"0":"")+i+".jpg";
// 读取图片
BufferedImage image = ImageIO.read(TomGame.class.getResource(path));
// 图片
ImageIcon icon = new ImageIcon(image);
// 存入到集合中
angryIcons.add(icon);
}
// 吃东西的图片
eatLabel.setIcon(new ImageIcon(TomGame.class.getResource("img/Buttons/eat.png")));
// 吃集合
for (int i = 0; i < 40; i++) {
// 图片的路径
String path = "img/Animations/Eat/eat_"+(i<10?"0":"")+i+".jpg";
// 读取图片
BufferedImage image = ImageIO.read(TomGame.class.getResource(path));
// 图片
ImageIcon icon = new ImageIcon(image);
// 存入到集合中
eatIcons.add(icon);
}
// 吃东西的图片
drinkLabel.setIcon(new ImageIcon(TomGame.class.getResource("img/Buttons/drink.png")));
// 吃集合
for (int i = 0; i < 81; i++) {
// 图片的路径
String path = "img/Animations/Drink/drink_"+(i<10?"0":"")+i+".jpg";
// 读取图片
BufferedImage image = ImageIO.read(TomGame.class.getResource(path));
// 图片
ImageIcon icon = new ImageIcon(image);
// 存入到集合中
drinkIcons.add(icon);
}
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 线程run方法
*/
@Override
public void run() {
while (true){
// 没循环一次,让num+1,从集合中取值
num++;
try {
// 判断当前用户点击了什么按钮
// 当用户点击了生气的按钮
if("angry".equals(action)){
// 设置图片
bgLabel.setIcon(angryIcons.get(num));
int size = angryIcons.size()-1;
// 判断num
if(num == size){
num = 0;
}
}
// 当用户点击了吃东西按钮
if("eat".equals(action)){
// 设置图片
bgLabel.setIcon(eatIcons.get(num));
int size = eatIcons.size()-1;
// 判断num
if(num == size){
num = 0;
}
}
// 当用户点击了吃东西按钮
if("drink".equals(action)){
// 设置图片
bgLabel.setIcon(drinkIcons.get(num));
int size = drinkIcons.size()-1;
// 判断num
if(num == size){
num = 0;
}
}
// 每100毫秒一针
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
/**
* 主函数
* @param args
*/
public static void main(String[] args) {
// 窗口
TomGame frame = new TomGame();
// 设置标题
frame.setTitle("可爱的Tom猫");
// 设置大小
frame.setSize(600,700);
// 设置居中显示
frame.setLocationRelativeTo(null);
// 设置关闭
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 清空布局方式
frame.setLayout(null);
// 设置吃饭图片位置
eatLabel.setBounds(10,420,60,60);
frame.add(eatLabel);
// 绑定鼠标点击事件
eatLabel.addMouseListener(new MouseAdapter() {
/**
* 当用户一点击按钮,就切换效果
* @param e
*/
@Override
public void mouseClicked(MouseEvent e) {
action = "eat";
num = 0;
}
});
// 设置吃饭图片位置
drinkLabel.setBounds(10,480,60,60);
frame.add(drinkLabel);
// 绑定鼠标点击事件
drinkLabel.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
action = "drink";
num = 0;
}
});
// 设置位置
bgLabel.setBounds(0,0,600,700);
// 添加组件
frame.add(bgLabel);
// 点击其他位置,切换会生气图片
bgLabel.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
action = "angry";
num = 0;
}
});
// 启动线程
new Thread(frame).start();
// 显示窗口
frame.setVisible(true);
}
}
根据本人多年从业以及学习经验,录制了一套最新的Java精讲视频教程,如果你现在也在学习Java,在入门学习Java的过程当中缺乏系统的学习教程,你可以加群654631948领取下学习资料,面试题,开发工具等,群里有资深java老师做答疑,每天也会有基础部分及架构的直播课,也可以加我的微信renlliang2013做深入沟通。
java基础教程:https://ke.qq.com/course/149432?tuin=57912c43
Java分布式互联网架构/微服务/高性能/springboot/springcloud: