《JAVA课程设计》实训第四天——《猜猜看》游戏
第四天,本来想进一步去改进《猜猜看》游戏的。可是非常多问题都不理解。也不熟悉怎么去弄到连接数据库。统计猜对次数,所以并没有进行再多的改动。
基本上就是这种执行结果了
import java.awt.EventQueue;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.AbstractButton;
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.Graphics;
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 weiwei extends JFrame { /**
*
*/ private static final long serialVersionUID = 1L; private JPanel contentPane; private JTextField tfDir; private JTextField tfClass; File[] fileArray; // 目录下全部文件 int NUM_IMG = 0; // 文件总数目 int index = 0; // 当前文件的序号 int i = 0; JLabel jlbImg1 = null; JLabel jlbImg2 = null; JLabel jlbImg3 = null; private Graphics g; /** * Launch the application. */ class myFileFilter implements FileFilter { @Override public boolean accept(File pathname) { String filename = pathname.getName().toLowerCase(); if (filename.contains(".jpg")) { return false; } else { return true; } } } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { weiwei frame = new weiwei(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public weiwei() { setTitle("\u731C\u731C\u770B\u6E38\u620FV0.1"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 645, 500); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); // 选择目录 button的处理程序 JButton btnDir = new JButton("\u9009\u62E9\u76EE\u5F55"); btnDir.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { JFileChooser jfc = new JFileChooser(); jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); jfc.showDialog(new JLabel(), "选择"); File file = jfc.getSelectedFile(); tfDir.setText(file.getAbsolutePath()); if (file != null && file.isDirectory()) { // 參考: java中File.listFiles(FileFilter) FileFilter的使用 // http://zhouzaibao.iteye.com/blog/347557 ; // 获取目录下全部的文件 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, 450, 21); contentPane.add(tfDir); tfDir.setColumns(10); // 选择班级 button的处理程序JButton btnClass = new JButton("\u9009\u62E9\u73ED\u7EA7");btnClass.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {JFileChooser jfc = new JFileChooser(); jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); jfc.showDialog(new JLabel(), "选择"); File file = jfc.getSelectedFile(); tfDir.setText(file.getAbsolutePath()); if (file != null && file.isDirectory()) { // 參考: java中File.listFiles(FileFilter) FileFilter的使用 // http://zhouzaibao.iteye.com/blog/347557 ; // 获取目录下全部的文件 fileArray = file.listFiles(); NUM_IMG = fileArray.length; }}});btnClass.setBounds(26, 59, 93, 23);contentPane.add(btnClass);//设置提醒文字 JLabel j1 = new JLabel("猜猜我是谁,请点我相片"); j1.setBounds(5, 100, 200, 33); this.add(j1); // 标签,显示带推測学生姓名 final JLabel lbGuessName = new JLabel("学生姓名"); lbGuessName.setBounds(259, 91, 140, 23); contentPane.add(lbGuessName); // 标签,显示第一个学生相片 final JLabel lblImg1 = new JLabel("NO.1"); lblImg1.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent arg0) { if (arg0.getSource() == lblImg1) { if ((lblImg1.getText().equals(lbGuessName.getText()))) { JOptionPane.showMessageDialog(null, "YES!
你猜对了。", "提示", JOptionPane.PLAIN_MESSAGE); } else { JOptionPane.showMessageDialog(null, "NO!你猜错了!", "错误", JOptionPane.ERROR_MESSAGE); } } } }); lblImg1.setBounds(26, 155, 150, 200); contentPane.add(lblImg1); // 标签,显示第二个学生相片 final JLabel lblImg2 = new JLabel("NO.2"); lblImg2.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent arg1) { if (arg1.getSource() == lblImg2) { if ((lblImg2.getText().equals(lbGuessName.getText()))) { JOptionPane.showMessageDialog(null, "YES。你猜对了。", "提示", JOptionPane.PLAIN_MESSAGE); } else { JOptionPane.showMessageDialog(null, "NO!
你猜错了!
", "错误", JOptionPane.ERROR_MESSAGE); } } } }); lblImg2.setForeground(Color.BLACK); lblImg2.setBackground(SystemColor.inactiveCaption); lblImg2.setBounds(241, 155, 150, 200); contentPane.add(lblImg2); // 标签,显示第三个学生相片 final JLabel lblImg3 = new JLabel("NO.3"); lblImg3.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent arg2) { if (arg2.getSource() == lblImg3) { if ((lblImg3.getText().equals(lbGuessName.getText()))) { JOptionPane.showMessageDialog(null, "YES!你猜对了。", "提示", JOptionPane.PLAIN_MESSAGE); } else { JOptionPane.showMessageDialog(null, "NO!你猜错了!
", "错误", JOptionPane.ERROR_MESSAGE); } } } }); lblImg3.setBounds(434, 155, 150, 200); contentPane.add(lblImg3); // 再猜一次 button,点击则更新对应的三张图片 与 带推測学生姓名 final JButton btnGuessAgain = new JButton("\u518D\u731C\u4E00\u6B21"); btnGuessAgain.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (e.getSource() == btnGuessAgain) { // 假设是nextbutton Random random = new Random(System.currentTimeMillis()); // 循环三次 ImageIcon icon; // int k[] = null; for (int i = 0; i < 3; i++) { index = random.nextInt(NUM_IMG); String strTmp = fileArray[index].toString(); String filename1 = fileArray[index].getName(); try { icon = new ImageIcon(ImageIO.read(new File(strTmp))); // 从图表中获取到图片 Image image = icon.getImage(); // 缩放图像 Image smallImage = image.getScaledInstance(150, 200, Image.SCALE_FAST); // 把Image文件转化为ImageIcon icon = new ImageIcon(smallImage); if (index == NUM_IMG) index = 0; switch (i) { case 0: System.out.println(fileArray[index].getName()); // k[0]=index; lblImg1.setIcon(icon); lblImg1.setText(filename1); break; case 1: System.out.println(fileArray[index].getName()); lblImg2.setIcon(icon); lblImg2.setText(filename1); // k[1]=index; break; case 2: System.out.println(fileArray[index].getName()); lblImg3.setIcon(icon); lblImg3.setText(filename1); // k[2]=index; break; } } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } @SuppressWarnings("unused") Random random1 = new Random(index); // i = index; System.out.println(fileArray[index].getName()); String filename = fileArray[index].getName(); lbGuessName.setText(filename); } }); btnGuessAgain.setBounds(223, 400, 93, 23); contentPane.add(btnGuessAgain); } }
课程实训的过程是艰辛的,本来就不是非常熟悉JAVA代码编程,仅仅能靠网络上的知识还有老师发的提示代码进行改动还有修饰。完毕《猜猜看》游戏。
基本上已经完毕。尽管执行了起来。可是仅仅是非常主要的。没有统计次数。没有弄到连接数据库或者保存文件。
《JAVA课程设计》实训第四天——《猜猜看》游戏相关推荐
- C++课程设计实训_基于多态书籍信息管理系统的设计与实现、附源码、有过程截图
C++课程设计实训_基于多态书籍信息管理系统的设计与实现.附源码,有过程截图 书籍信息管理系统的设计与实现(基于多态) 学生姓名: 学 号: 指导老师: 所 在 系: 专 业: 班 级: C++课程设 ...
- android课程设计实训目的,汽车专业实习目的与意义
实习目的及意义 1.通过生产实习加深对汽车运用与维修专业认识,巩固专业思想,激发学习热情. 2.熟悉汽车修理环境.修理工具.为以后走上工作岗位积累一定的知识与经验. 3.开拓我们的视野,增强专业意识, ...
- C++课程设计实训报告
南阳理工学院·软件学院 课程设计报告 课程名称: C++面向对象程序设计(课程设计) 课题名称: 新生基本信息统计软件 姓 名: 学 号: 专 ...
- 【数据结构】-大二数据结构与算法课程设计实训报告
采花生问题 1.1 需求分析 1.1.1 题目概要 给一矩阵,按贪心思路最多能采多少花生并在规定时间内返回. 1.1.2 题目要求 给定一块花生田的大小和花生的分布,在限定时间内,小Q最多可以采到多少 ...
- 【C语言】课程设计实训——人事管理系统
目录 题目: 总体设计 详细设计 系统实现 题目 1.需求分析 人事档案信息采用文件存储,要提供文件的输入输出操作:根据学院人事的变动情况,可添加或删除记录,因而要提供文件的添加删除操作:能根据编号和 ...
- 课程设计实训-3 英文词典
问题及代码 做一个简单的电子词典.在文件dictionary.txt中,保存的是英汉对照的一个词典,词汇量近8000个,英文与释义间用'\t'隔开.编程序,将文件中的内容读到两个数组e[]和c[]中, ...
- java课程设计(第三版)魔板游戏源代码(可实现英雄榜功能)
有两种玩法(数字和图片).可选择初级和高级模式.可查看英雄榜. 1. Block.java import javax.swing.*; import java.awt.*; public class ...
- 基于java web的酒店管理系统(Java毕业设计)(Java课程设计)
源码编号:B-I16点击查看(分类规则) 项目类型:Java web项目/Java EE项目(非开源) 项目名称:基于JSP+Servlet的酒店管理系统 当前版本:V4.0版本 难度等级:✩✩ 复杂 ...
- Java课程设计(2020版)
目录 参考资料 一. 题目选择说明 1. 传统题目 2. 综合性题目(有一定挑战性.有趣.实用) 2.1题目特点: 2.2 常见类库与技术参考资料 2.2.1 jsoup 2.2.2 HttpComp ...
- Java课程设计—拿火柴小游戏
这是我的Java课程设计,做的是拿火柴小游戏.要求是人机互拿火柴,拿到最后一根火柴者赢.最主要的就是处理好多线程,其他的就是添加组件啥的,那个不难,我就给出以下多线程的代码吧. 1 import ja ...
最新文章
- script 有哪个属性可以让它不立即执行 defer,async
- HTML5的绝活:巧用Canvas制作会动的时钟
- 卓越管理的秘密(Behind Closed Doors)
- HDU 1003 Maxsum
- thinkphp5.1 php7,空白目录 · 细数ThinkPHP5.1.7版本新特性 · 看云
- 图解分布式架构的演进过程!
- 前台用js、jquery出现错误很多是由于IE缓存
- java mysql order by,java-使用LIMIT和MySQL进行ORDER BY
- 校招刷题---java选择题笔记02
- leetcode python3 简单题58. Length of Last Word
- PYTHON博客记录0602
- 如何使用计算机检测网络正常使用,如何测试网速? 本地测网速的几种方法分享...
- 晶振负载电容和谐振电容的计算方法
- Jackson注解-@JsonNaming
- 云服务器文件同步,和云服务器同步文件
- 【今日早报】2019/06/17
- 基于“把点开活”的面试理论
- nokia5110液晶初始化
- 吴军北京来信:人工智能应该变成通识教育,区块链不是炒概念
- 【opencv 450 Image Processing】Hit-or-Miss
热门文章
- mysqlclient==1.3.7对应mysql版本_Python通过MySQLdb访问操作MySQL数据库
- 一文看懂Python多进程与多线程编程(工作学习面试必读)
- 捡到vivo手机怎么清除账号_大学保安两天两次跳湖为路人捡手机,您怎么看?...
- 查询字符串位置_带合并单元格的数据查询套路,有用
- IPV6地址校验(java)
- 笔记-计算机网络基础-TCP/IP vs OSI
- Vue中使用Openlayers加载Geoserver发布的ImageWMS
- SpringBoot中通过重写WebMvcConfigurer的addCorsMapping方法实现后台服务解决跨域问题
- Redis的持久化机制-RDB方式和AOF方式
- AndroidStudio更新时报错:Connection Error,Temp directory inside installation