实训猜猜看——进度3

本文深入探讨游戏开发与图像处理AR特效技术的实际应用,通过具体实例展示了如何利用OpenGL ES实现美颜直播特效、视频剪辑、动画特效,并结合OpenCV进行图像处理。同时,文章涉及AR人脸标定、人像分割抠像、人体姿态估计等高级应用,为读者提供了一站式的AR特效开发指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    本来想尝试连接数据库来完善猜猜看游戏的功能,但经过多次的修改,都没有成功。所以总的来说今天没有什么进展,只是把多余的代码删除,使得游戏界面更加简洁。

import java.awt.EventQueue;    
import javax.imageio.ImageIO;    
import javax.swing.JFrame;    
import javax.swing.JPanel;    
import javax.swing.border.EmptyBorder;    
import javax.swing.ImageIcon;    
import javax.swing.JButton;    
import javax.swing.JFileChooser;    
import javax.swing.JOptionPane;  
import javax.swing.JTextField;    
import javax.swing.JLabel;      
import java.awt.Color;    
import java.awt.Image;    
import java.awt.SystemColor;    
import java.awt.event.ActionListener;    
import java.awt.event.ActionEvent;    
import java.awt.event.MouseAdapter;    
import java.awt.event.MouseEvent;    
import java.io.File;    
import java.io.FileFilter;  
import java.io.IOException;    
import java.util.Random;    
public class guess03 extends JFrame {    
	class myFileFilter implements FileFilter{  
		@Override    
		public boolean accept(File pathname) {    
			String filename = pathname.getName().toLowerCase();    
			if(filename.contains(".jpg")){    
				return false;    
			}else{    
				return true;    
			}    
		}    
	}    
	private static final long serialVersionUID = 1L;       
	private JPanel contentPane;    
	private JTextField tfDir;    
	File[] fileArray;   // 文件夹下所有文件    
	int NUM_IMG = 0;    // 文件总数目    
	int index   = 0;    // 当前文件的序号    
	JLabel jlbImg = null;    
	JButton btnNext = null;      
	public static void main(String[] args) {    
		EventQueue.invokeLater(new Runnable() {    
			public void run() {    
				try {    
					guess03 frame = new guess03();    
					frame.setVisible(true);    
				} catch (Exception e) {    
					e.printStackTrace();    
				}    
			}    
		});    
	}    
	public guess03() {    
		setTitle("猜猜看游戏V0.1");    
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    
		setBounds(100, 100, 645, 409);    
		contentPane = new JPanel();    
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));    
		setContentPane(contentPane);    
		contentPane.setLayout(null);    
		// 选择目录 按钮的处理程序    
		JButton btnDir = new JButton("目录");    
		btnDir.addActionListener(new ActionListener() {    
			@Override    
			public void actionPerformed(ActionEvent e) {    
				JFileChooser j=new JFileChooser();      
				j.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);     
				j.showDialog(new JLabel(), "选择目录");     
				File file=j.getSelectedFile();    
				tfDir.setText(file.getAbsolutePath());     
				if((file!=null && file.isDirectory())){    
					// 获取文件夹下所有的文件    
					fileArray = file.listFiles();    
					NUM_IMG = fileArray.length;    
				}    
			}    
		});    
		btnDir.setBounds(26, 26, 93, 23);    
		contentPane.add(btnDir);    
		// 文本框,显示目录    
		tfDir = new JTextField();    
		tfDir.setEditable(false);    
		tfDir.setBounds(125, 27, 363, 21);    
		contentPane.add(tfDir);    
		tfDir.setColumns(10);    
		// 显示带猜测学生姓名    
		final JLabel lbGuessName = new JLabel("姓名");    
		lbGuessName.setBounds(259, 91,134,23);    
		contentPane.add(lbGuessName);    
		// 显示第一个学生相片    
		final JLabel lblImg1 = new JLabel("学生一");    
		setBackground(Color.RED);      
		this.add(lblImg1);    
		lblImg1.addMouseListener(new MouseAdapter() {    
			@Override    
			public void mouseClicked(MouseEvent arg0) {    
				if(arg0.getSource()==lblImg1){    
					if(( lblImg1.getText().equals(lbGuessName.getText()))){    
						JOptionPane.showMessageDialog(null,"恭喜你猜对了!","提示",JOptionPane.PLAIN_MESSAGE);    
					}    
					else {    
						JOptionPane.showMessageDialog(null,"抱歉你猜错了!","警告",JOptionPane.WARNING_MESSAGE);    
					}      
				}    
			}    
		});    
		lblImg1.setBounds(50,155, 150, 172);    
		contentPane.add(lblImg1);   
		// 显示第二个学生相片    
		final JLabel lblImg2 = new JLabel("学生二");    
		lblImg2.setBackground(Color.RED);       
		this.add(lblImg2);    
		lblImg2.addMouseListener(new MouseAdapter() {    
			@Override    
			public void mouseClicked(MouseEvent arg1) {   
				if(arg1.getSource()==lblImg2){    
					if(( lblImg2.getText().equals(lbGuessName.getText()))){    
						JOptionPane.showMessageDialog(null,"恭喜你猜对了!","提示",JOptionPane.PLAIN_MESSAGE);    
					}    
					else {    
						JOptionPane.showMessageDialog(null,"抱歉你猜错了!","警告",JOptionPane.WARNING_MESSAGE);    
					}      
				}    
			}    
		});    
		lblImg2.setForeground(Color.BLACK);    
		lblImg2.setBackground(SystemColor.inactiveCaption);    
		lblImg2.setBounds(241, 155, 150, 172);    
		contentPane.add(lblImg2);    
		// 显示第三个学生相片    
		final JLabel lblImg3 = new JLabel("学生三");    
		lblImg3.setBackground(Color.RED);       
		this.add(lblImg3);    
		lblImg3.addMouseListener(new MouseAdapter() {    
			@Override    
			public void mouseClicked(MouseEvent arg2) {    
				if(arg2.getSource()==lblImg3){    
					if(( lblImg3.getText().equals(lbGuessName.getText()))){    
						JOptionPane.showMessageDialog(null,"恭喜你猜对了!","提示",JOptionPane.PLAIN_MESSAGE);    
					}    
					else {    
						JOptionPane.showMessageDialog(null,"抱歉你猜错了!","警告",JOptionPane.WARNING_MESSAGE);    
					}      
				}    
			}    
		});    
		lblImg3.setBounds(434, 155, 150, 172);    
		contentPane.add(lblImg3);    
		// 再猜一次 按钮,点击则更新相应的三张图片 与 带猜测学生姓名    
		final JButton btnNext = new JButton("再猜一次");    
		btnNext.addActionListener(new ActionListener() {    
			public void actionPerformed(ActionEvent e) {    
				if(e.getSource()==btnNext){ //如果是next按钮    
					//随机数    
					Random random = new Random(System.currentTimeMillis());    
					//循环三次    
					ImageIcon icon;//定义icon变量    
					int p1=0,p2=0,p3=0;  
					for(int i=0;i<3;i++)    
					{    
						index = random.nextInt(NUM_IMG);    
						String strTmp = fileArray[index].toString();    
						try {  
							String filename1 = fileArray[index].getName();  
							icon = new ImageIcon(ImageIO.read(new File(strTmp)));    
							Image image = icon.getImage(); // 从图表中获取到图片    
							Image smallImage = image.getScaledInstance(150,200,Image.SCALE_FAST);// 缩放图像    
							icon = new ImageIcon(smallImage);//把Image文件转化为ImageIcon    
							if(index==NUM_IMG)    
								index = 0;                        
							switch(i)    
							{    
							case 0:    
								lblImg1.setIcon(icon);   
								lblImg1.setText(filename1);    
								p1 = index;    
								break;    
							case 1:    
								lblImg2.setIcon(icon);   
								lblImg2.setText(filename1);    
								p2 = index;   
								break;    
							case 2:    
								lblImg3.setIcon(icon);  
								lblImg3.setText(filename1);    
								p3 = index;  
								break;    
							}    
						} catch (IOException e1) {      
							e1.printStackTrace();    
						}       
					}    
					int []guess = {p1,p2,p3};    
					Random r = new Random();    
					StringBuffer s1=new StringBuffer();    
					s1.append(guess[r.nextInt(2)]);    
					String filename = s1.toString();                   
					int a = Integer.parseInt(filename);                 
					String filename1 = fileArray[a].getName();                 
					lbGuessName.setText(filename1);    
				}     
			}    
		});     
		btnNext.setBounds(223, 337, 93, 23);    
		contentPane.add(btnNext);    
	}    
}    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值