《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);  

        // 选择目录 按钮的处理程序
        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); 

        // 选择班级 按钮的处理程序
        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);  

        // 再猜一次 按钮,点击则更新相应的三张图片 与 带猜测学生姓名
        final JButton btnGuessAgain = new JButton("\u518D\u731C\u4E00\u6B21");  

        btnGuessAgain.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (e.getSource() == btnGuessAgain) { // 如果是next按钮  

                    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代码编程,只能靠网络上的知识还有老师发的提示代码进行修改还有修饰,完成《猜猜看》游戏。

基本上已经完成。虽然运行了起来,但是只是很基本的,没有统计次数,没有弄到连接数据库或者保存文件。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-16 20:39:27

《JAVA课程设计》实训第四天——《猜猜看》游戏的相关文章

《JAVA程序设计》实训第一天——《猜猜看》游戏

课程实训是做一个猜猜看的小游戏.对于对代码不熟悉不了解的我来说的确挺难的.但是我还是会努力的. import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JButton; import javax.swing.JTextField; import javax.swing.JLa

《JAVA程序设计》实训第二天——《猜猜看》游戏

课程实训第二天,我在第一天的基础上去导入文件夹,第一天那时候一直修改都是修改不到,上网找了相关的知识,问了同学该怎么去导入显示图片. public class weiwei extends JFrame { /** * */ private static final long serialVersionUID = 1L; private JPanel contentPane; private JTextField tfDir; private JTextField tfClass; File[]

关于课程设计实训体会

在这次课程设计训练中,对于C++有了更深刻的理解,懂得如何去设计所需要得到的东西,如何去写出其代码,如何去修改代码解决出现的错误.完成了以前认为很难的问题,使我对于编程的学习有了信心和兴趣.虽然在编码过程中出现过很多问题,暴漏了自己的不足之处,仍需加强对编程的训练,提高自己的编程能力.准备多做一些PTA上的编程题并初步了解一下Java相关的基础知识. 原文地址:https://www.cnblogs.com/2210633591zhang/p/11146008.html

《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

山西高平地域文化导入美术设计实训项目的实践

地域文化,是指某个地域的人们在特定的范围内,在自然环境的基础上,在长期的生产生活中创造的.人类活动的产物.山西高平是神农炎帝的故里,长平之战的发生地,是一个有着很深文化积淀的新兴城市,行政区域是国土面积的万分之一,却浓缩了中国五千年文化的精髓.本文通过对山西高平丰富的历史文化资源的调查研究,探讨如何将地域文化元素导入中职美术设计专业的实训项目教学过程,论证典型地域文化元素在中职美术设计教育中的独特作用,并以此作为教学实训素材,依托带有典型地域文化特征的企业真实案例,结合教育教学实践,探索中职美术

实训第四天

实训第四天了,最近脑子里灌的东西比较多,现在终于感到脑子不够用了,脑子疼啊. 今天学的依旧是mysql,学的是查询,查询命令单个简答,两个条件三个条件一组合,哎呀我的脑容量直接感觉不够用了,差点哭晕在厕所 查询条件 (1)简单查询 select * from Info select Code as '代号',Name as '姓名' from Info as a (2) 条件查询 Where后面跟条件  条件要写清楚 查询成绩表中成绩(degree)为92的信息 Select * from sc

java课程设计团队(搜索引擎)

JAVA课程设计 基于学院网站的搜索引擎 对学院网站进行抓取.建索(需要中文分词).排序(可选).搜索.摘要显示.可以是GUI界面,也可以是Web界面. 一.团队介绍 学号 班级 姓名 简介 201621123049 网络1612 [组长]袁德兴 热衷于网络安全 201621123047 网络1612 陈芳毅 有思想,有深度 ,有能力 201621044079 网络1612 韩烨 学习力强,人称韩可爱 201621123055 网络1612 刘兵 人称五社区发哥,动手能力强 2016211230

java课程设计--坦克大战

java课程设计--坦克大战 一. 团队课程设计博客链接 https://www.cnblogs.com/zwtcyt/p/12173572.html 二.个人负责模块和任务说明 墙体类,子弹类,道具类以及音效类的编写,部分GUI的编写 三.代码的提交记录截图 四.负责模块和任务详细说明 墙体类 主墙体即不可摧毁的墙体 该类为所有障碍物的父类,子类继承时改变里面draw方法 草地类 河流类 可摧毁的墙类 音效类 子弹类 子弹与碰撞检测 利用javafx中shape的intersect方法来得出两

java(课程设计之记事本界面部分代码公布)

代码:涉及记事本的一些界面......!! 1 /* 2 *java课程设计之记事本(coder @Gxjun) 3 * 编写一个记事本程序 4 * 要求: 5 * 用图形用户界面实现. 6 * 能实现编辑.保存.另存为.查找替换等功能. 7 * 提示:使用文件输入输出流. 8 */ 9 package project; 10 11 import javax.swing.*; 12 import java.awt.*; 13 import java.awt.event.*; //引用类设置触发事

Java课程设计—学生成绩分析系统

Java课程设计 - 我的选题是学生成绩分析系统. 下面是课程的需求图: 完成的这个小系统其实逻辑代码是非常简单的,唯一感觉有难点的地方在于涉及到了知识点比较多.当时只是匆匆地大概学了Java的一些基本知识,书上的例题和代码也没怎么敲过, 几乎都是在边做的过程中边学具体需要用到的东西: 其中感觉最麻烦的地方就是JTable.文件读取IO流以及绘图和给各个组件布局的时候. 另外还花了些功夫在UI上面:我这次是用到了substance.jar的swing美化包,想了解的可以百度下,网上有很多教程.