《猜猜看游戏》第四天

来源:互联网 发布:泰拉瑞亚数据如何恢复 编辑:程序博客网 时间:2024/04/27 23:48

我只能做到在界面上,能够展示三张学生图片;能够对猜测做出反应(如:哇,你猜对了;no,猜错了 等);能够显示另外三张相片,继续玩。

不会在层次1的基础上,能够随机显示相片;并能够把猜测的结果保存到数据库(或 文件)中,如每个学生猜测的正确次数、错误次数。

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.Image;  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 Myjava 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;      private JTextField tfClass;      File[] fileArray;   // 文件夹下所有文件      int NUM_IMG = 0;    // 文件总数目      int index   = 0;    // 当前文件的序号      JLabel jlbImg = null;      JButton btnNext = null;      /**      * Launch the application.      */      public static void main(String[] args) {          EventQueue.invokeLater(new Runnable() {              public void run() {                  try {                  Myjava frame = new Myjava();                      frame.setVisible(true);                  } catch (Exception e) {                      e.printStackTrace();                  }              }          });      }      /**      * Create the frame.      */      public Myjava() {          setTitle("\u731C\u731C\u770B\u6E38\u620F");          setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  //关闭窗口,退出程序        setBounds(100, 100, 600, 500);//窗体的大小          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);//设置Filechooser                    j.showDialog(new JLabel(), "选择目录");                   File file=j.getSelectedFile();                  tfDir.setText(file.getAbsolutePath());                  // TODO Auto-generated method stub                  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, 363, 21);          contentPane.add(tfDir);          tfDir.setColumns(10);                    // 选择班级 按钮的处理程序          JButton btnClass = new JButton("班级");          btnClass.addActionListener(new ActionListener() {                            public void actionPerformed(ActionEvent e) {                  JFileChooser i=new JFileChooser();                    i.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);//设置Filechooser                    i.showDialog(new JLabel(), "选择班级");                  File file=i.getSelectedFile();                  tfClass.setText(file.getAbsolutePath());                  fileArray = file.listFiles();                  NUM_IMG = fileArray.length;                                                     }           });          btnClass.setBounds(26, 59, 93, 23);          contentPane.add(btnClass);                    // 文本框,显示班级文件          tfClass = new JTextField();          tfClass.setEditable(false);          tfClass.setBounds(125, 60, 363, 21);          contentPane.add(tfClass);          tfClass.setColumns(10);                    // 标签,显示带猜测学生姓名          final JLabel lbGuessName = new JLabel("学生姓名");          lbGuessName.setBounds(259, 91, 102, 23);          contentPane.add(lbGuessName);                      // 标签,显示第一个学生相片          final JLabel lblImg1 = new JLabel("学生一");            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(26,155, 150, 200);          contentPane.add(lblImg1);                      // 标签,显示第二个学生相片          final JLabel lblImg2 = new JLabel("学生二");          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.setBounds(241,155, 150, 200);          contentPane.add(lblImg2);                      // 标签,显示第三个学生相片          final JLabel lblImg3 = new JLabel("学生三");          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, 200);          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();                                             //循环三次                       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();                          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);// 缩放图像                                                             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) {                                // TODO Auto-generated catch block                                e1.printStackTrace();                      }                          }                       int []cdf = {p1,p2,p3};                       Random r = new Random();                       StringBuffer s1=new StringBuffer();                       s1.append(cdf[r.nextInt(2)]);                       String filename = s1.toString();                                              int a = Integer.parseInt(filename);                                              String filename1 = fileArray[a].getName();                                              lbGuessName.setText(filename1);                                         }               }          });                     btnNext.setBounds(223, 400, 93, 23);//再猜一次按钮的位置          contentPane.add(btnNext);                 }  }  


0 0