Board logo

標題: 翻牌遊戲(三) [打印本頁]

作者: 周政輝    時間: 2018-4-28 11:59     標題: 翻牌遊戲(三)

判斷當前的牌是否與上一張一樣,如果不一樣,則需要將排給還原
  1. package tw.kuas.edu.tw;

  2. import java.awt.BorderLayout;
  3. import java.awt.EventQueue;
  4. import java.awt.Image;

  5. import javax.swing.ImageIcon;
  6. import javax.swing.JFrame;
  7. import javax.swing.JPanel;
  8. import javax.swing.border.EmptyBorder;

  9. import java.awt.FlowLayout;

  10. import javax.swing.JLabel;

  11. import java.awt.event.ActionEvent;
  12. import java.awt.event.ActionListener;
  13. import java.awt.event.MouseAdapter;
  14. import java.awt.event.MouseEvent;
  15. import java.util.Timer;
  16. import java.util.concurrent.TimeUnit;

  17. public class Main extends JFrame {

  18.         private JPanel contentPane;

  19.         /**
  20.          * Launch the application.
  21.          */
  22.         public static void main(String[] args) {
  23.                 EventQueue.invokeLater(new Runnable() {
  24.                         public void run() {
  25.                                 try {
  26.                                         Main frame = new Main();
  27.                                         frame.setVisible(true);
  28.                                 } catch (Exception e) {
  29.                                         e.printStackTrace();
  30.                                 }
  31.                         }
  32.                 });
  33.         }

  34.         /**
  35.          * Create the frame.
  36.          */
  37.         JLabel[] pokers = new JLabel[12];
  38.         ImageIcon[] randomcard = new ImageIcon[12];
  39.         ImageIcon[] answercard = new ImageIcon[12];
  40.         int randomnum[]=new int[12];
  41.         public Main() {
  42.                 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  43.                 setBounds(100, 100, 662, 499);

  44.                 contentPane = new JPanel();
  45.                 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  46.                 setContentPane(contentPane);
  47.                 contentPane.setLayout(null);

  48.                 JLabel Poker_1 = new JLabel("New label");
  49.                
  50.                 Poker_1.setBounds(10, 10, 128, 128);
  51.                 contentPane.add(Poker_1);
  52.                 pokers[0] = Poker_1;
  53.                

  54.                 JLabel Poker_2 = new JLabel("New label");
  55.                 Poker_2.setBounds(159, 10, 128, 128);
  56.                 contentPane.add(Poker_2);
  57.                 pokers[1] = Poker_2;
  58.                

  59.                 JLabel Poker_3 = new JLabel("New label");
  60.                 Poker_3.setBounds(304, 10, 128, 128);
  61.                 contentPane.add(Poker_3);
  62.                 pokers[2] = Poker_3;
  63.                

  64.                 JLabel Poker_4 = new JLabel("New label");
  65.                 Poker_4.setBounds(453, 10, 128, 128);
  66.                 contentPane.add(Poker_4);
  67.                 pokers[3] = Poker_4;
  68.                
  69.                
  70.                 JLabel Poker_5 = new JLabel("New label");
  71.                 Poker_5.setBounds(10, 155, 128, 128);
  72.                 contentPane.add(Poker_5);
  73.                 pokers[4] = Poker_5;
  74.                

  75.                 JLabel Poker_6 = new JLabel("New label");
  76.                 Poker_6.setBounds(159, 155, 128, 128);
  77.                 contentPane.add(Poker_6);
  78.                 pokers[5] = Poker_6;
  79.                

  80.                 JLabel Poker_7 = new JLabel("New label");
  81.                 Poker_7.setBounds(304, 155, 128, 128);
  82.                 contentPane.add(Poker_7);
  83.                 pokers[6] = Poker_7;
  84.                

  85.                 JLabel Poker_8 = new JLabel("New label");
  86.                 Poker_8.setBounds(453, 155, 128, 128);
  87.                 contentPane.add(Poker_8);
  88.                 pokers[7] = Poker_8;
  89.         

  90.                 JLabel Poker_9 = new JLabel("New label");
  91.                 Poker_9.setBounds(10, 293, 128, 128);
  92.                 contentPane.add(Poker_9);
  93.                 pokers[8] = Poker_9;
  94.                

  95.                 JLabel Poker_10 = new JLabel("New label");
  96.                 Poker_10.setBounds(159, 293, 128, 128);
  97.                 contentPane.add(Poker_10);
  98.                 pokers[9] = Poker_10;
  99.         

  100.                 JLabel Poker_11 = new JLabel("New label");
  101.                 Poker_11.setBounds(304, 293, 128, 128);
  102.                 contentPane.add(Poker_11);
  103.                 pokers[10] = Poker_11;
  104.                

  105.                 JLabel Poker_12 = new JLabel("New label");
  106.                 Poker_12.setBounds(453, 293, 128, 128);
  107.                 contentPane.add(Poker_12);
  108.                 pokers[11] = Poker_12;
  109.                


  110.                 InitializeImg(pokers);
  111.                 rc();
  112.                 InitAnsImg(randomnum);
  113.                 AddListener();
  114.                 JLabel Reset = new JLabel("New label");
  115.                 Reset.setIcon(new ImageIcon(Main.class.getResource("/tw/kuas/edu/tw/pic/return.png")));
  116.                 Reset.setBounds(603, 418, 33, 33);
  117.                 contentPane.add(Reset);
  118.                 for(int i=0;i<12;i++) {
  119.                         System.out.println(answercard[i]);
  120.                 }

  121.         }

  122.         private ImageIcon InitImg() {
  123.                 ImageIcon icon = new ImageIcon(Main.class.getResource("pic/0.png"));
  124.                 Image img = icon.getImage().getScaledInstance(128, 128,  java.awt.Image.SCALE_FAST );
  125.                 ImageIcon newIcon = new ImageIcon(img);
  126.                 return newIcon;
  127.         }

  128.         private void InitializeImg(JLabel[] pokers) {
  129.                 for(int i=0;i<pokers.length;i++) {
  130.                         ImageIcon icon = new ImageIcon(Main.class.getResource("pic/0.png"));
  131.                         Image img = icon.getImage().getScaledInstance(128, 128,  java.awt.Image.SCALE_FAST );
  132.                         ImageIcon newIcon = new ImageIcon(img);
  133.                         pokers[i].setIcon(newIcon);
  134.                 }
  135.         }

  136.         private void rc() {
  137.                 for(int i=0; i<12; i++) {
  138.                         randomnum[i]=(int)(Math.random()*12);    //0~11
  139.                         for(int j=0; j<i; j++) {
  140.                                 if(randomnum[i]==randomnum[j]) {
  141.                                         i--;
  142.                                         break;
  143.                                 }
  144.                         }
  145.                 }
  146.         }

  147.         private void InitAnsImg(int[] randomnum) {
  148.                
  149.                 for(int i=1;i<=6;i++) {
  150.                         ImageIcon icon = new ImageIcon(Main.class.getResource(String.format("pic/%d.png",i)));
  151.                         Image img = icon.getImage().getScaledInstance(128, 128,  java.awt.Image.SCALE_FAST );
  152.                         answercard[randomnum[i-1]] = new ImageIcon(img); //0-5
  153.                         answercard[randomnum[i+5]] = new ImageIcon(img); //6-11
  154.                 }
  155.         }
  156.         
  157.         private void AddListener() {
  158.                 for(int i=0;i<pokers.length;i++) {
  159.                         pokers[i].addMouseListener(adapter);
  160.                 }
  161.         }
  162.         // 給予一個共用的MouseAdapter事件
  163.          ImageIcon temp = null;
  164.          int locate = 0;
  165.          boolean isFirst = true;
  166.          MouseAdapter adapter=new MouseAdapter(){
  167.                  @Override
  168.          public void mouseClicked(MouseEvent e)
  169.          {
  170.                  for(int i=0; i<12; i++)
  171.               {
  172.                          
  173.                          // 判斷當下使用者點選的牌是哪一張
  174.                       if(e.getSource()==pokers[i] && isFirst) {
  175.                              // 翻牌
  176.                               pokers[i].setIcon(answercard[i]);
  177.                              // 紀錄當前的圖片以及位置
  178.                              temp = answercard[i];
  179.                              locate = i;
  180.                              isFirst = false;
  181.                              System.out.println("第一次翻牌");
  182.                              break;
  183.                       }
  184.                      
  185.                       // 第二次翻牌
  186.                       if(isFirst == false  && e.getSource()==pokers[i]) {
  187.                             // 翻牌
  188.                               pokers[i].setIcon(answercard[i]);
  189.                                
  190.                                                 System.out.println("第二次翻牌");
  191.                                                
  192.                                                  // 判斷第二次翻的牌跟第一次有沒有一樣,如果不一樣則需要把第一張牌翻回去
  193.                                if(temp != answercard[i]) {
  194.                                      
  195.                                                          ImageIcon defaultIcon = new ImageIcon(Main.class.getResource("pic/0.png"));
  196.                                        pokers[locate].setIcon(defaultIcon);
  197.                                         try {
  198.                                                       Thread.currentThread();
  199.                                                                 Thread.sleep(2000);
  200.                                                     //pokers[i].setIcon(defaultIcon);
  201.                                                   } catch (InterruptedException ie) {
  202.                                                      
  203.                                                }
  204.                                              

  205.                                                                
  206.                                        }
  207.                            
  208.                                        isFirst = true;
  209.                                                
  210.                              
  211.                       }
  212.                      
  213.                      
  214.                      
  215.                            
  216.               }
  217.               
  218.                  
  219.          }
  220. };


  221. }
複製代碼

作者: 蔡庭豪    時間: 2018-4-28 12:01

  1. package bbs.istak.org.tw;

  2. import java.awt.BorderLayout;
  3. import java.awt.EventQueue;
  4. import java.awt.Image;
  5. import java.awt.event.MouseAdapter;
  6. import java.awt.event.MouseEvent;

  7. import javax.swing.ImageIcon;
  8. import javax.swing.JFrame;
  9. import javax.swing.JPanel;
  10. import javax.swing.border.EmptyBorder;
  11. import javax.swing.JLabel;

  12. public class PtSC extends JFrame {

  13.         private JPanel contentPane;
  14.         private static ImageIcon icon;
  15.         private ImageIcon poker[] = new ImageIcon [12];
  16.         private int num[] = new int [12];
  17.         private ImageIcon answer[] = new ImageIcon [12];
  18.         private JLabel larray[] = new JLabel [12];

  19.         /**
  20.          * Launch the application.
  21.          */
  22.         public static void main(String[] args) {
  23.                 EventQueue.invokeLater(new Runnable() {
  24.                         public void run() {
  25.                                 try {
  26.                                         PtSC frame = new PtSC();
  27.                                         frame.setVisible(true);
  28.                                 } catch (Exception e) {
  29.                                         e.printStackTrace();
  30.                                 }
  31.                         }
  32.                 });
  33.         }

  34.         /**
  35.          * Create the frame.
  36.          */
  37.         public PtSC() {
  38.                 icon = new ImageIcon(PtSC.class.getResource("star.png"));
  39.                         Image imgicon = icon.getImage().getScaledInstance(128,128,java.awt.Image.SCALE_FAST );
  40.       
  41.         
  42.                                 this.setIconImage(imgicon);
  43.                           larray = new JLabel [12];
  44.                 poker = new ImageIcon[12];
  45.                 answer = new ImageIcon[12];
  46.                
  47.                
  48.                  
  49.                 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  50.                 setBounds(100, 100, 620, 462);
  51.                 contentPane = new JPanel();
  52.                 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  53.                 setContentPane(contentPane);
  54.                 contentPane.setLayout(null);
  55.                
  56.                 JLabel label_0 = new JLabel(pokercard(0));
  57.                 label_0.setBounds(10, 10, 128, 128);
  58.                 contentPane.add(label_0);
  59.                 larray[0] = label_0;
  60.                
  61.                 JLabel label_1 = new JLabel(pokercard(1));
  62.                 label_1.setBounds(148, 10, 128, 128);
  63.                 contentPane.add(label_1);
  64.                 larray[1] = label_1;
  65.                
  66.                 JLabel label_2 = new JLabel(pokercard(2));
  67.                 label_2.setBounds(286, 10, 128, 128);
  68.                 contentPane.add(label_2);
  69.                 larray[2] = label_2;
  70.                
  71.                 JLabel label_3 = new JLabel(pokercard(3));
  72.                 label_3.setBounds(424, 10, 128, 128);
  73.                 contentPane.add(label_3);
  74.                 larray[3] = label_3;
  75.                
  76.                 JLabel label_4 = new JLabel(pokercard(4));
  77.                 label_4.setBounds(10, 149, 128, 128);
  78.                 contentPane.add(label_4);
  79.                 larray[4] = label_4;
  80.                
  81.                 JLabel label_5 = new JLabel(pokercard(5));
  82.                 label_5.setBounds(148, 149, 128, 128);
  83.                 contentPane.add(label_5);
  84.                 larray[5] = label_5;
  85.                
  86.                 JLabel label_6 = new JLabel(pokercard(6));
  87.                 label_6.setBounds(286, 149, 128, 128);
  88.                 contentPane.add(label_6);
  89.                 larray[6] = label_6;
  90.                
  91.                 JLabel label_7 = new JLabel(pokercard(7));
  92.                 label_7.setBounds(424, 149, 128, 128);
  93.                 contentPane.add(label_7);
  94.                 larray[7] = label_7;
  95.                
  96.                 JLabel label_8 = new JLabel(pokercard(8));
  97.                 label_8.setBounds(10, 286, 128, 128);
  98.                 contentPane.add(label_8);
  99.                 larray[8] = label_8;
  100.                
  101.                 JLabel label_9 = new JLabel(pokercard(9));
  102.                 label_9.setBounds(148, 286, 128, 128);
  103.                 contentPane.add(label_9);
  104.                 larray[9] = label_9;  
  105.                
  106.                 JLabel label_10 = new JLabel(pokercard(10));
  107.                 label_10.setBounds(286, 286, 128, 128);
  108.                 contentPane.add(label_10);
  109.                 larray[10] = label_10;
  110.                
  111.                 JLabel label_11 = new JLabel(pokercard(11));
  112.                 label_11.setBounds(424, 286, 128, 128);
  113.                 contentPane.add(label_11);
  114.                 larray[11] = label_11;
  115.                
  116.                 icon = new ImageIcon(PtSC.class.getResource("return.png"));
  117.         Image bimg = icon.getImage().getScaledInstance(33,33,java.awt.Image.SCALE_FAST );
  118.         ImageIcon back = new ImageIcon(bimg);
  119.                
  120.                 JLabel labelreset = new JLabel(back);
  121.                 labelreset.setBounds(562, 10, 33, 33);
  122.                 contentPane.add(labelreset);
  123.                
  124.                
  125.                 num = new int [12];
  126.                 for(int i = 0 ; i < num.length ; i++){
  127.                         num[i] = (int) (Math.random()*12);
  128.                         for(int j = 0 ; j < i ; j++){
  129.                                 if(num[i] == num[j]){
  130.                                               i--;
  131.                                               break;
  132.                                        
  133.                                  }
  134.                          }
  135.                 }
  136.                 for (int k = 0 ; k < num.length ; k++){
  137.                
  138.                      System.out.println(num[k]);               
  139.                
  140.                 }
  141.                
  142.                 backcard(num);
  143.                 AddListener();
  144.                
  145.         }

  146.         private ImageIcon  pokercard (int  n){
  147.                
  148.                 poker = new ImageIcon[12];
  149.                 icon = new ImageIcon(PtSC.class.getResource("0.png"));
  150.                 Image andimg = icon.getImage().getScaledInstance(128,128,java.awt.Image.SCALE_FAST );
  151.                 ImageIcon andriod = new ImageIcon(andimg);
  152.                
  153.                         for(int a = 0 ; a < poker.length ; a++){
  154.                
  155.                         poker[a] = andriod;
  156.                
  157.                         }
  158.                         return poker[n];               
  159.                
  160.         }
  161.         
  162.         private void  backcard (int[] num){
  163.         
  164.                 for(int x = 1 ; x <= 6 ; x++){
  165.                
  166.                  icon = new ImageIcon(PtSC.class.getResource(String.format("%d.png", x)));
  167.                 Image img = icon.getImage().getScaledInstance(128,128,java.awt.Image.SCALE_FAST );
  168.                 ImageIcon answercard = new ImageIcon(img);
  169.                
  170.                 answer[num[x-1]] = answercard;
  171.                 answer[num[x+5]] = answercard;
  172.                
  173.             }
  174.         }
  175.         
  176.         private void AddListener(){
  177.         
  178.         for(int i = 0 ; i < larray.length ; i++)
  179.                
  180.                 larray[i].addMouseListener(adapter);
  181.         
  182.         }
  183.         ImageIcon temp1;
  184.         int location;
  185.         boolean first = true;
  186.         MouseAdapter adapter=new MouseAdapter(){
  187.             @Override
  188.     public void mouseClicked(MouseEvent e)
  189.     {
  190.            
  191.             for(int i=0; i<12; i++)
  192.          {
  193.                    
  194.                  if(e.getSource()==larray[i] && first == true) {
  195.                        
  196.                          larray[i].setIcon(answer[i]);
  197.                          temp1 = answer[i];
  198.                          location = i;
  199.                          first = false;
  200.                          System.out.println("first");
  201.                          break;
  202.                  }
  203.                  else if (e.getSource()==larray[i] && first == false){         
  204.                          System.out.println("second");
  205.                          if(temp1 != larray[i].getIcon()){
  206.                                  
  207.                                  larray[i].setIcon(poker[i]);larray[location].setIcon(poker[location]);
  208.                                  
  209.                          }
  210.                          
  211.                          first = true;
  212.                          break;
  213.                         
  214.                  }
  215.                        
  216.          }
  217.     }
  218. };

  219.    
  220. }
複製代碼

作者: 蔡季樺    時間: 2018-4-28 12:04

  1. package bbs.istak.org.tw;

  2. import javax.swing.JFrame;
  3. import javax.swing.JButton;
  4. import javax.swing.ImageIcon;
  5. import java.awt.event.MouseAdapter;
  6. import java.awt.event.MouseEvent;
  7. import java.awt.event.ActionListener;
  8. import java.awt.event.ActionEvent;

  9. public class Main {
  10.         
  11.         private JFrame fm;
  12.         private JButton b[]=new JButton[12];
  13.         private JButton b_r;
  14.         private ImageIcon mm[]=new ImageIcon[12];
  15.         private ImageIcon ic,mm_r,mm_b;
  16.         private int rc[]=new int[12];

  17.         Main()
  18.         {
  19.                 rc();
  20.                 ic=new ImageIcon(Main.class.getResource("star.png"));
  21.                 mm_b=new ImageIcon(Main.class.getResource("0.png"));
  22.                 mm_r=new ImageIcon(Main.class.getResource("return.png"));
  23.                
  24.                 for(int i=0; i<6; i++)
  25.                 {
  26.                         mm[i]=new ImageIcon(Main.class.getResource((i+1)+".png"));
  27.                     mm[i+6]=new ImageIcon(Main.class.getResource((i+1)+".png"));
  28.                 }
  29.                         
  30.                 for(int i=0; i<12; i++)
  31.                         b[i]=new JButton(mm_b);
  32.                 for(int i=0; i<4; i++)
  33.                     b[ i ].setBounds(i*130+12, 10, 128, 128);
  34.                 for(int i=0; i<4; i++)
  35.                     b[ i+4 ].setBounds(i*130+12, 140, 128, 128);
  36.                 for(int i=0; i<4; i++)
  37.                     b[ i+8 ].setBounds(i*130+12, 270, 128, 128);
  38.                 for(int i=0; i<12; i++)
  39.                         b[i].addMouseListener(ma);
  40.                
  41.                 b_r=new JButton(mm_r);
  42.                 b_r.setBounds(497, 407, 33, 33);
  43.                 b_r.addActionListener(al);
  44.                
  45.                 fm=new JFrame("翻牌遊戲");
  46.                 fm.setBounds(100, 100, 548, 480);
  47.                 fm.setIconImage(ic.getImage());
  48.                 fm.setVisible(true);
  49.                 fm.setResizable(false);
  50.                 fm.setLayout(null);
  51.                 fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  52.                 for(int i=0; i<12; i++)
  53.                         fm.add(b[i]);        
  54.                 fm.add(b_r);               
  55.         }
  56.         
  57.         void rc()
  58.         {
  59.                 for(int i=0; i<12; i++)
  60.                 {
  61.                         rc[i]=(int)(Math.random()*12);    //0~11
  62.                         for(int j=0; j<i; j++)
  63.                         {
  64.                                 if(rc[i]==rc[j])
  65.                                 {
  66.                                         i--;
  67.                                         break;
  68.                                 }
  69.                         }
  70.                 }
  71.         }
  72.         ImageIcon temp;
  73.         int locate = 0;
  74.         boolean isfirst = true;
  75.         MouseAdapter ma=new MouseAdapter(){
  76.                 public void mousePressed(MouseEvent e)
  77.                 {
  78.                          for(int i=0; i<12; i++)
  79.                          {
  80.                                  if(e.getSource()==b[i] && isfirst == true){
  81.                                          temp = mm[rc[i]];
  82.                                     
  83.                                          b[i].setIcon(mm[rc[i]]);
  84.                                              
  85.                                          locate = i;
  86.                                          
  87.                                      isfirst = false;
  88.                                          
  89.                                          break;
  90.                                     
  91.                                          
  92.                                  }else if(e.getSource()==b[i] && isfirst == false)
  93.                                  {
  94.                                          b[i].setIcon(mm[rc[i]]);
  95.                                          if(temp != b[i].getIcon()){
  96.                                                  b[i].setIcon(mm_b);
  97.                                                  b[locate].setIcon(mm_b);
  98.                                                  
  99.                                          }
  100.                                          
  101.                                          
  102.                                          isfirst = true;
  103.                                          break;
  104.                                  }
  105.                          }
  106.                 }
  107.         };

  108.         ActionListener al=new ActionListener() {
  109.                 public void actionPerformed(ActionEvent e) {
  110.                         if(e.getSource()==b_r)
  111.                         {
  112.                                 rc();
  113.                                 for(int i=0; i<12; i++){
  114.                                   b[i].setIcon(mm_b);

  115.                                  
  116.                                           
  117.                                  
  118.                                 }
  119.                         }
  120.                 }
  121.         };        

  122.         public static void main(String[] args) {
  123.                 new Main();        
  124.         }
  125. }
複製代碼

作者: 陳泓瑜    時間: 2018-4-28 12:04

  1. package tw.kuas.edu.tw;

  2. import java.awt.BorderLayout;
  3. import java.awt.EventQueue;
  4. import java.awt.Image;

  5. import javax.swing.ImageIcon;
  6. import javax.swing.JFrame;
  7. import javax.swing.JPanel;
  8. import javax.swing.border.EmptyBorder;

  9. import java.awt.FlowLayout;

  10. import javax.swing.JLabel;

  11. import java.awt.event.ActionEvent;
  12. import java.awt.event.ActionListener;
  13. import java.awt.event.MouseAdapter;
  14. import java.awt.event.MouseEvent;

  15. public class Main extends JFrame {

  16.         private JPanel contentPane;

  17.         /**
  18.          * Launch the application.
  19.          */
  20.         public static void main(String[] args) {
  21.                 EventQueue.invokeLater(new Runnable() {
  22.                         public void run() {
  23.                                 try {
  24.                                         Main frame = new Main();
  25.                                         frame.setVisible(true);
  26.                                 } catch (Exception e) {
  27.                                         e.printStackTrace();
  28.                                 }
  29.                         }
  30.                 });
  31.         }

  32.         /**
  33.          * Create the frame.
  34.          */
  35.         JLabel[] pokers = new JLabel[12];
  36.         ImageIcon[] randomcard = new ImageIcon[12];
  37.         ImageIcon[] answercard = new ImageIcon[12];
  38.         int randomnum[]=new int[12];
  39.         boolean isFirst=true;
  40.         public Main() {
  41.                 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  42.                 setBounds(100, 100, 662, 499);

  43.                 contentPane = new JPanel();
  44.                 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  45.                 setContentPane(contentPane);
  46.                 contentPane.setLayout(null);

  47.                 JLabel Poker_1 = new JLabel("New label");
  48.                
  49.                 Poker_1.setBounds(10, 10, 128, 128);
  50.                 contentPane.add(Poker_1);
  51.                 pokers[0] = Poker_1;
  52.                

  53.                 JLabel Poker_2 = new JLabel("New label");
  54.                 Poker_2.setBounds(159, 10, 128, 128);
  55.                 contentPane.add(Poker_2);
  56.                 pokers[1] = Poker_2;
  57.                

  58.                 JLabel Poker_3 = new JLabel("New label");
  59.                 Poker_3.setBounds(304, 10, 128, 128);
  60.                 contentPane.add(Poker_3);
  61.                 pokers[2] = Poker_3;
  62.                

  63.                 JLabel Poker_4 = new JLabel("New label");
  64.                 Poker_4.setBounds(453, 10, 128, 128);
  65.                 contentPane.add(Poker_4);
  66.                 pokers[3] = Poker_4;
  67.                
  68.                
  69.                 JLabel Poker_5 = new JLabel("New label");
  70.                 Poker_5.setBounds(10, 155, 128, 128);
  71.                 contentPane.add(Poker_5);
  72.                 pokers[4] = Poker_5;
  73.                

  74.                 JLabel Poker_6 = new JLabel("New label");
  75.                 Poker_6.setBounds(159, 155, 128, 128);
  76.                 contentPane.add(Poker_6);
  77.                 pokers[5] = Poker_6;
  78.                

  79.                 JLabel Poker_7 = new JLabel("New label");
  80.                 Poker_7.setBounds(304, 155, 128, 128);
  81.                 contentPane.add(Poker_7);
  82.                 pokers[6] = Poker_7;
  83.                

  84.                 JLabel Poker_8 = new JLabel("New label");
  85.                 Poker_8.setBounds(453, 155, 128, 128);
  86.                 contentPane.add(Poker_8);
  87.                 pokers[7] = Poker_8;
  88.         

  89.                 JLabel Poker_9 = new JLabel("New label");
  90.                 Poker_9.setBounds(10, 293, 128, 128);
  91.                 contentPane.add(Poker_9);
  92.                 pokers[8] = Poker_9;
  93.                

  94.                 JLabel Poker_10 = new JLabel("New label");
  95.                 Poker_10.setBounds(159, 293, 128, 128);
  96.                 contentPane.add(Poker_10);
  97.                 pokers[9] = Poker_10;
  98.         

  99.                 JLabel Poker_11 = new JLabel("New label");
  100.                 Poker_11.setBounds(304, 293, 128, 128);
  101.                 contentPane.add(Poker_11);
  102.                 pokers[10] = Poker_11;
  103.                

  104.                 JLabel Poker_12 = new JLabel("New label");
  105.                 Poker_12.setBounds(453, 293, 128, 128);
  106.                 contentPane.add(Poker_12);
  107.                 pokers[11] = Poker_12;
  108.                


  109.                 InitializeImg(pokers);
  110.                 rc();
  111.                 InitAnsImg(randomnum);
  112.                 AddListener();
  113.                 JLabel Reset = new JLabel("New label");
  114.                 Reset.setIcon(new ImageIcon(Main.class.getResource("/tw/kuas/edu/tw/pic/return.png")));
  115.                 Reset.setBounds(603, 418, 33, 33);
  116.                 contentPane.add(Reset);
  117.                 for(int i=0;i<12;i++) {
  118.                         System.out.println(answercard[i]);
  119.                 }

  120.         }

  121.         private ImageIcon InitImg() {
  122.                 ImageIcon icon = new ImageIcon(Main.class.getResource("pic/0.png"));
  123.                 Image img = icon.getImage().getScaledInstance(128, 128,  java.awt.Image.SCALE_FAST );
  124.                 ImageIcon newIcon = new ImageIcon(img);
  125.                 return newIcon;
  126.         }

  127.         private void InitializeImg(JLabel[] pokers) {
  128.                 for(int i=0;i<pokers.length;i++) {
  129.                         ImageIcon icon = new ImageIcon(Main.class.getResource("pic/0.png"));
  130.                         Image img = icon.getImage().getScaledInstance(128, 128,  java.awt.Image.SCALE_FAST );
  131.                         ImageIcon newIcon = new ImageIcon(img);
  132.                         pokers[i].setIcon(newIcon);
  133.                 }
  134.         }

  135.         private void rc() {
  136.                 for(int i=0; i<12; i++) {
  137.                         randomnum[i]=(int)(Math.random()*12);    //0~11
  138.                         for(int j=0; j<i; j++) {
  139.                                 if(randomnum[i]==randomnum[j]) {
  140.                                         i--;
  141.                                         break;
  142.                                 }
  143.                         }
  144.                 }
  145.         }

  146.         private void InitAnsImg(int[] randomnum) {
  147.                
  148.                 for(int i=1;i<=6;i++) {
  149.                         ImageIcon icon = new ImageIcon(Main.class.getResource(String.format("pic/%d.png",i)));
  150.                         Image img = icon.getImage().getScaledInstance(128, 128,  java.awt.Image.SCALE_FAST );
  151.                         answercard[randomnum[i-1]] = new ImageIcon(img);
  152.                         answercard[randomnum[i+5]] = new ImageIcon(img);
  153.                 }
  154.         }
  155.         
  156.         private void AddListener() {
  157.                 for(int i=0;i<pokers.length;i++) {
  158.                         pokers[i].addMouseListener(adapter);
  159.                 }
  160.         }
  161.         ImageIcon temp;
  162.         int locate=0;
  163.          MouseAdapter adapter=new MouseAdapter(){
  164.                  @Override
  165.          public void mouseClicked(MouseEvent e)
  166.          {
  167.               for(int i=0; i<12; i++)
  168.               {
  169.                       if(e.getSource()==pokers[i] && isFirst == true) {
  170.                           temp = answercard[i];
  171.                           pokers[i].setIcon(answercard[i]);
  172.                           isFirst = false;
  173.                           locate = i;
  174.                           break;
  175.                       }
  176.                       else if(e.getSource()==pokers[i] && isFirst == false) {
  177.                           pokers[i].setIcon(answercard[i]);
  178.                           if(temp == pokers[i].getIcon())
  179.                           {
  180.                                   ImageIcon icon = new ImageIcon(Main.class.getResource("pic/0.png"));
  181.                               Image img = icon.getImage().getScaledInstance(128, 128,  java.awt.Image.SCALE_FAST );
  182.                               ImageIcon newIcon = new ImageIcon(img);
  183.                               pokers[i].setIcon(newIcon);
  184.                               pokers[locate].setIcon(newIcon);
  185.                           }  
  186.                           isFirst = true;
  187.                           locate = i;
  188.                           break;
  189.                       }
  190.                            
  191.               }
  192.                
  193.               
  194.          }
  195.                
  196. };


  197. }
複製代碼

作者: 周政輝    時間: 2018-5-5 01:36

package tw.kuas.edu.tw;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.Image;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

import java.awt.FlowLayout;

import javax.swing.JLabel;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Timer;
import java.util.concurrent.TimeUnit;

public class Main extends JFrame {

        private JPanel contentPane;

        /**
         * Launch the application.
         */
        public static void main(String[] args) {
                EventQueue.invokeLater(new Runnable() {
                        public void run() {
                                try {
                                        Main frame = new Main();
                                        frame.setVisible(true);
                                } catch (Exception e) {
                                        e.printStackTrace();
                                }
                        }
                });
        }

        /**
         * Create the frame.
         */
        JLabel[] pokers = new JLabel[12];
        ImageIcon[] randomcard = new ImageIcon[12];
        ImageIcon[] answercard = new ImageIcon[12];
        int randomnum[] = new int[12];

        public Main() {
                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                setBounds(100, 100, 662, 499);

                contentPane = new JPanel();
                contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
                setContentPane(contentPane);
                contentPane.setLayout(null);

                JLabel Poker_1 = new JLabel("New label");

                Poker_1.setBounds(10, 10, 128, 128);
                contentPane.add(Poker_1);
                pokers[0] = Poker_1;

                JLabel Poker_2 = new JLabel("New label");
                Poker_2.setBounds(159, 10, 128, 128);
                contentPane.add(Poker_2);
                pokers[1] = Poker_2;

                JLabel Poker_3 = new JLabel("New label");
                Poker_3.setBounds(304, 10, 128, 128);
                contentPane.add(Poker_3);
                pokers[2] = Poker_3;

                JLabel Poker_4 = new JLabel("New label");
                Poker_4.setBounds(453, 10, 128, 128);
                contentPane.add(Poker_4);
                pokers[3] = Poker_4;

                JLabel Poker_5 = new JLabel("New label");
                Poker_5.setBounds(10, 155, 128, 128);
                contentPane.add(Poker_5);
                pokers[4] = Poker_5;

                JLabel Poker_6 = new JLabel("New label");
                Poker_6.setBounds(159, 155, 128, 128);
                contentPane.add(Poker_6);
                pokers[5] = Poker_6;

                JLabel Poker_7 = new JLabel("New label");
                Poker_7.setBounds(304, 155, 128, 128);
                contentPane.add(Poker_7);
                pokers[6] = Poker_7;

                JLabel Poker_8 = new JLabel("New label");
                Poker_8.setBounds(453, 155, 128, 128);
                contentPane.add(Poker_8);
                pokers[7] = Poker_8;

                JLabel Poker_9 = new JLabel("New label");
                Poker_9.setBounds(10, 293, 128, 128);
                contentPane.add(Poker_9);
                pokers[8] = Poker_9;

                JLabel Poker_10 = new JLabel("New label");
                Poker_10.setBounds(159, 293, 128, 128);
                contentPane.add(Poker_10);
                pokers[9] = Poker_10;

                JLabel Poker_11 = new JLabel("New label");
                Poker_11.setBounds(304, 293, 128, 128);
                contentPane.add(Poker_11);
                pokers[10] = Poker_11;

                JLabel Poker_12 = new JLabel("New label");
                Poker_12.setBounds(453, 293, 128, 128);
                contentPane.add(Poker_12);
                pokers[11] = Poker_12;

                InitializeImg(pokers);
                rc();
                InitAnsImg(randomnum);
                AddListener();
                JLabel Reset = new JLabel("New label");
                Reset.setIcon(new ImageIcon(Main.class.getResource("/tw/kuas/edu/tw/pic/return.png")));
                Reset.setBounds(603, 418, 33, 33);
                contentPane.add(Reset);
                for (int i = 0; i < 12; i++) {
                        System.out.println(answercard[i]);
                }

        }

        private ImageIcon InitImg() {
                ImageIcon icon = new ImageIcon(Main.class.getResource("pic/0.png"));
                Image img = icon.getImage().getScaledInstance(128, 128, java.awt.Image.SCALE_FAST);
                ImageIcon newIcon = new ImageIcon(img);
                return newIcon;
        }

        private void InitializeImg(JLabel[] pokers) {
                for (int i = 0; i < pokers.length; i++) {
                        ImageIcon icon = new ImageIcon(Main.class.getResource("pic/0.png"));
                        Image img = icon.getImage().getScaledInstance(128, 128, java.awt.Image.SCALE_FAST);
                        ImageIcon newIcon = new ImageIcon(img);
                        pokers[i].setIcon(newIcon);
                }
        }

        private void rc() {
                for (int i = 0; i < 12; i++) {
                        randomnum[i] = (int) (Math.random() * 12); // 0~11
                        for (int j = 0; j < i; j++) {
                                if (randomnum[i] == randomnum[j]) {
                                        i--;
                                        break;
                                }
                        }
                }
        }

        private void InitAnsImg(int[] randomnum) {

                for (int i = 1; i <= 6; i++) {
                        ImageIcon icon = new ImageIcon(Main.class.getResource(String.format("pic/%d.png", i)));
                        Image img = icon.getImage().getScaledInstance(128, 128, java.awt.Image.SCALE_FAST);
                        answercard[randomnum[i - 1]] = new ImageIcon(img); // 0-5
                        answercard[randomnum[i + 5]] = new ImageIcon(img); // 6-11
                }
        }

        private void AddListener() {
                for (int i = 0; i < pokers.length; i++) {
                        pokers[i].addMouseListener(adapter);
                }
        }

        // 給予一個共用的MouseAdapter事件
        ImageIcon temp = null;
        int locate = 0;
        boolean isFirst = true;
        int tempcount = 0;
        MouseAdapter adapter = new MouseAdapter() {
                @Override
                public void mouseClicked(MouseEvent e) {
                        for (int i = 0; i < 12; i++) {

                                // 判斷當下使用者點選的牌是哪一張
                                if (isFirst && e.getSource() == pokers[i] ) {
                                        // 翻牌
                                        pokers[i].setIcon(answercard[i]);
                                        if(tempcount == 0) {
                                                // 第一次紀錄當前的圖片以及位置
                                                temp = answercard[i];
                                                locate = i;
                                                System.out.println("第一次翻牌");
                                                tempcount++;
                                        }
                                        else {
                                                System.out.println("第一次翻牌");
                                                // 判斷第二次翻的牌跟第一次有沒有一樣,如果不一樣則需要把第一張牌翻回去
                                                if (temp.getImage() != answercard[i].getImage()) {
                                                        System.out.println("不一樣");
                                                        ImageIcon defaultIcon = new ImageIcon(Main.class.getResource("pic/0.png"));
                                                        pokers[locate].setIcon(defaultIcon);
                                                        temp = answercard[i];
                                                        locate = i;
                                                }
                                                else {
                                                        System.out.println("一樣");
                                                        tempcount = 0;
                                                        isFirst = true;
                                                        break;
                                                }

                                        }
                                        isFirst = false;

                                       
                                        break;
                                }

                                // 第二次翻牌
                                if ((isFirst == false) && e.getSource() == pokers[i]) {
                                        // 翻牌
                                        pokers[i].setIcon(answercard[i]);

                                        System.out.println("第二次翻牌");
                                        // 判斷第二次翻的牌跟第一次有沒有一樣,如果不一樣則需要把第一張牌翻回去
                                        if (temp.getImage() != answercard[i].getImage()) {
                                                System.out.println("不一樣");
                                                ImageIcon defaultIcon = new ImageIcon(Main.class.getResource("pic/0.png"));
                                                pokers[locate].setIcon(defaultIcon);
                                                temp = answercard[i];
                                                locate = i;
                                        }
                                        else {
                                                System.out.println("一樣");
                                                // 清除第一次牌的紀錄
                                                tempcount = 0;
                                        }

                                        isFirst = true;

                                }

                        }

                }
        };

}
作者: 林侑成    時間: 2018-5-10 18:31

  1. package tw.kuas.edu.tw;

  2. import java.awt.BorderLayout;
  3. import java.awt.EventQueue;
  4. import java.awt.Image;

  5. import javax.swing.ImageIcon;
  6. import javax.swing.JFrame;
  7. import javax.swing.JPanel;
  8. import javax.swing.border.EmptyBorder;

  9. import java.awt.FlowLayout;

  10. import javax.swing.JLabel;

  11. import java.awt.event.ActionEvent;
  12. import java.awt.event.ActionListener;
  13. import java.awt.event.MouseAdapter;
  14. import java.awt.event.MouseEvent;
  15. import java.util.Timer;
  16. import java.util.concurrent.TimeUnit;

  17. public class Main extends JFrame {

  18.         private JPanel contentPane;

  19.         /**
  20.          * Launch the application.
  21.          */
  22.         public static void main(String[] args) {
  23.                 EventQueue.invokeLater(new Runnable() {
  24.                         public void run() {
  25.                                 try {
  26.                                         Main frame = new Main();
  27.                                         frame.setVisible(true);
  28.                                 } catch (Exception e) {
  29.                                         e.printStackTrace();
  30.                                 }
  31.                         }
  32.                 });
  33.         }

  34.         /**
  35.          * Create the frame.
  36.          */
  37.         JLabel[] pokers = new JLabel[12];
  38.         ImageIcon[] randomcard = new ImageIcon[12];
  39.         ImageIcon[] answercard = new ImageIcon[12];
  40.         int randomnum[]=new int[12];
  41.         public Main() {
  42.                 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  43.                 setBounds(100, 100, 662, 499);

  44.                 contentPane = new JPanel();
  45.                 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  46.                 setContentPane(contentPane);
  47.                 contentPane.setLayout(null);

  48.                 JLabel Poker_1 = new JLabel("New label");
  49.                
  50.                 Poker_1.setBounds(10, 10, 128, 128);
  51.                 contentPane.add(Poker_1);
  52.                 pokers[0] = Poker_1;
  53.                

  54.                 JLabel Poker_2 = new JLabel("New label");
  55.                 Poker_2.setBounds(159, 10, 128, 128);
  56.                 contentPane.add(Poker_2);
  57.                 pokers[1] = Poker_2;
  58.                

  59.                 JLabel Poker_3 = new JLabel("New label");
  60.                 Poker_3.setBounds(304, 10, 128, 128);
  61.                 contentPane.add(Poker_3);
  62.                 pokers[2] = Poker_3;
  63.                

  64.                 JLabel Poker_4 = new JLabel("New label");
  65.                 Poker_4.setBounds(453, 10, 128, 128);
  66.                 contentPane.add(Poker_4);
  67.                 pokers[3] = Poker_4;
  68.                
  69.                
  70.                 JLabel Poker_5 = new JLabel("New label");
  71.                 Poker_5.setBounds(10, 155, 128, 128);
  72.                 contentPane.add(Poker_5);
  73.                 pokers[4] = Poker_5;
  74.                

  75.                 JLabel Poker_6 = new JLabel("New label");
  76.                 Poker_6.setBounds(159, 155, 128, 128);
  77.                 contentPane.add(Poker_6);
  78.                 pokers[5] = Poker_6;
  79.                

  80.                 JLabel Poker_7 = new JLabel("New label");
  81.                 Poker_7.setBounds(304, 155, 128, 128);
  82.                 contentPane.add(Poker_7);
  83.                 pokers[6] = Poker_7;
  84.                

  85.                 JLabel Poker_8 = new JLabel("New label");
  86.                 Poker_8.setBounds(453, 155, 128, 128);
  87.                 contentPane.add(Poker_8);
  88.                 pokers[7] = Poker_8;
  89.         

  90.                 JLabel Poker_9 = new JLabel("New label");
  91.                 Poker_9.setBounds(10, 293, 128, 128);
  92.                 contentPane.add(Poker_9);
  93.                 pokers[8] = Poker_9;
  94.                

  95.                 JLabel Poker_10 = new JLabel("New label");
  96.                 Poker_10.setBounds(159, 293, 128, 128);
  97.                 contentPane.add(Poker_10);
  98.                 pokers[9] = Poker_10;
  99.         

  100.                 JLabel Poker_11 = new JLabel("New label");
  101.                 Poker_11.setBounds(304, 293, 128, 128);
  102.                 contentPane.add(Poker_11);
  103.                 pokers[10] = Poker_11;
  104.                

  105.                 JLabel Poker_12 = new JLabel("New label");
  106.                 Poker_12.setBounds(453, 293, 128, 128);
  107.                 contentPane.add(Poker_12);
  108.                 pokers[11] = Poker_12;
  109.                


  110.                 InitializeImg(pokers);
  111.                 rc();
  112.                 InitAnsImg(randomnum);
  113.                 AddListener();
  114.                 JLabel Reset = new JLabel("New label");
  115.                 Reset.setIcon(new ImageIcon(Main.class.getResource("/tw/kuas/edu/tw/pic/return.png")));
  116.                 Reset.setBounds(603, 418, 33, 33);
  117.                 contentPane.add(Reset);
  118.                 for(int i=0;i<12;i++) {
  119.                         System.out.println(answercard[i]);
  120.                 }

  121.         }

  122.         private ImageIcon InitImg() {
  123.                 ImageIcon icon = new ImageIcon(Main.class.getResource("pic/0.png"));
  124.                 Image img = icon.getImage().getScaledInstance(128, 128,  java.awt.Image.SCALE_FAST );
  125.                 ImageIcon newIcon = new ImageIcon(img);
  126.                 return newIcon;
  127.         }

  128.         private void InitializeImg(JLabel[] pokers) {
  129.                 for(int i=0;i<pokers.length;i++) {
  130.                         ImageIcon icon = new ImageIcon(Main.class.getResource("pic/0.png"));
  131.                         Image img = icon.getImage().getScaledInstance(128, 128,  java.awt.Image.SCALE_FAST );
  132.                         ImageIcon newIcon = new ImageIcon(img);
  133.                         pokers[i].setIcon(newIcon);
  134.                 }
  135.         }

  136.         private void rc() {
  137.                 for(int i=0; i<12; i++) {
  138.                         randomnum[i]=(int)(Math.random()*12);    //0~11
  139.                         for(int j=0; j<i; j++) {
  140.                                 if(randomnum[i]==randomnum[j]) {
  141.                                         i--;
  142.                                         break;
  143.                                 }
  144.                         }
  145.                 }
  146.         }

  147.         private void InitAnsImg(int[] randomnum) {
  148.                
  149.                 for(int i=1;i<=6;i++) {
  150.                         ImageIcon icon = new ImageIcon(Main.class.getResource(String.format("pic/%d.png",i)));
  151.                         Image img = icon.getImage().getScaledInstance(128, 128,  java.awt.Image.SCALE_FAST );
  152.                         answercard[randomnum[i-1]] = new ImageIcon(img); //0-5
  153.                         answercard[randomnum[i+5]] = new ImageIcon(img); //6-11
  154.                 }
  155.         }
  156.         
  157.         private void AddListener() {
  158.                 for(int i=0;i<pokers.length;i++) {
  159.                         pokers[i].addMouseListener(adapter);
  160.                 }
  161.         }
  162.         // 給予一個共用的MouseAdapter事件
  163.          ImageIcon temp = null;
  164.          int locate = 0;
  165.          boolean isFirst = true;
  166.          MouseAdapter adapter=new MouseAdapter(){
  167.                  @Override
  168.          public void mouseClicked(MouseEvent e)
  169.          {
  170.                  for(int i=0; i<12; i++)
  171.               {
  172.                         
  173.                          // 判斷當下使用者點選的牌是哪一張
  174.                       if(e.getSource()==pokers[i] && isFirst) {
  175.                              // 翻牌
  176.                               pokers[i].setIcon(answercard[i]);
  177.                              // 紀錄當前的圖片以及位置
  178.                              temp = answercard[i];
  179.                              locate = i;
  180.                              isFirst = false;
  181.                              System.out.println("第一次翻牌");
  182.                              break;
  183.                       }
  184.                      
  185.                       // 第二次翻牌
  186.                       if(isFirst == false  && e.getSource()==pokers[i]) {
  187.                             // 翻牌
  188.                               pokers[i].setIcon(answercard[i]);
  189.                               
  190.                                                 System.out.println("第二次翻牌");
  191.                                                 
  192.                                                  // 判斷第二次翻的牌跟第一次有沒有一樣,如果不一樣則需要把第一張牌翻回去
  193.                                if(temp != answercard[i]) {
  194.                                       
  195.                                                          ImageIcon defaultIcon = new ImageIcon(Main.class.getResource("pic/0.png"));
  196.                                        pokers[locate].setIcon(defaultIcon);
  197.                                         try {
  198.                                                       Thread.currentThread();
  199.                                                                 Thread.sleep(2000);
  200.                                                     //pokers[i].setIcon(defaultIcon);
  201.                                                   } catch (InterruptedException ie) {
  202.                                                       
  203.                                                }
  204.                                              

  205.                                                                
  206.                                        }
  207.                            
  208.                                        isFirst = true;
  209.                                                 
  210.                               
  211.                       }
  212.                      
  213.                      
  214.                      
  215.                            
  216.               }
  217.               
  218.                  
  219.          }
  220. };


  221. }
複製代碼

作者: 黃茂勛    時間: 2018-5-22 22:21

本帖最後由 黃茂勛 於 2018-5-23 14:29 編輯
  1. package bbs.istak.org.tw;

  2. import java.awt.Desktop.Action;
  3. import java.awt.event.ActionEvent;
  4. import java.awt.event.ActionListener;
  5. import java.awt.event.MouseAdapter;
  6. import java.awt.event.MouseEvent;

  7. import javax.swing.ImageIcon;
  8. import javax.swing.JButton;
  9. import javax.swing.JFrame;

  10. public class Main {

  11.         private JFrame fm;
  12.         private JButton btn[]=new JButton[12];
  13.         private JButton btn_r;
  14.         private ImageIcon ii[]=new ImageIcon[12];
  15.         private ImageIcon ic,ii_r,ii_b;
  16.         private int rc[]=new int[12];
  17.         private ImageIcon test;  //測試對象
  18.         private int tmp; //上一張牌
  19.        
  20.         Main()
  21.         {
  22.                 rc();
  23.                 ic=new ImageIcon(Main.class.getResource("star.png"));
  24.                 ii_b=new ImageIcon(Main.class.getResource("0.png"));
  25.                 ii_r=new ImageIcon(Main.class.getResource("return.png"));
  26.             for(int i=0; i<6; i++)
  27.             {
  28.                     ii[i]=new ImageIcon(Main.class.getResource((i+1)+".png"));
  29.                 ii[i+6]=new ImageIcon(Main.class.getResource((i+1)+".png"));
  30.             }
  31.             for(int i=0; i<12; i++)
  32.                 btn[i]=new JButton(ii_b);
  33.             for(int i=0; i<4; i++)
  34.                     btn[i].setBounds(i*130+12, 10, 128, 128);
  35.             for(int i=0; i<4; i++)
  36.                     btn[i+4].setBounds(i*130+12, 140, 128, 128);
  37.             for(int i=0; i<4; i++)
  38.                     btn[i+8].setBounds(i*130+12, 270, 128, 128);
  39.             for(int i=0; i<12; i++)
  40.                     btn[i].addMouseListener(ma);
  41.             
  42.             btn_r=new JButton(ii_r);
  43.             btn_r.setBounds(497, 407, 33, 33);
  44.             btn_r.addActionListener(al);
  45.        
  46.             fm=new JFrame("翻牌遊戲");
  47.             fm.setBounds(100, 100, 548, 480);
  48.             fm.setIconImage(ic.getImage());
  49.             fm.setVisible(true);
  50.             fm.setResizable(false);
  51.         fm.setLayout(null);       
  52.         fm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  53.         for(int i=0; i<12; i++)
  54.                 fm.add(btn[i]);
  55.         fm.add(btn_r);
  56.         }
  57.        
  58.         void rc()
  59.         {
  60.                 test=null; //清空測試對象
  61.                 for(int i=0; i<12; i++)
  62.                 {
  63.                         rc[i]=(int)(Math.random()*12); //0~11
  64.                         for(int j=0; j<i; j++)
  65.                         {
  66.                                 if(rc[i]==rc[j])
  67.                                 {
  68.                                         i--;
  69.                                         break;
  70.                                 }
  71.                         }
  72.                 }
  73.         }
  74.         MouseAdapter ma=new MouseAdapter() {
  75.                  public void mousePressed(MouseEvent e)
  76.                  {
  77.                          for(int i=0; i<12; i++)
  78.                          {
  79.                                  if(e.getSource()==btn[i] && btn[i].isEnabled())
  80.                                  {
  81.                                            for(int j=0; j<12; j++)
  82.                                            {
  83.                                                    if(btn[j].isEnabled())
  84.                                                            btn[j].setIcon(ii_b);  //將其他翻回
  85.                                            }
  86.                                            btn[i].setIcon(ii[rc[i]]);  //將點擊的 翻到正面
  87.                                            if(test==ii[rc[i]])  //1.點擊第一次略過  //4.判斷下一次點擊的 是否為受試對象
  88.                                            {
  89.                                                    btn[i].setEnabled(false);
  90.                                                    btn[tmp].setEnabled(false);
  91.                                                    btn[tmp].setIcon(ii[rc[tmp]]);  
  92.                                            }
  93.                                            if(rc[i]<6)
  94.                                                    test=ii[rc[i]+6];  //2.取得受試對象
  95.                                            else
  96.                                                    test=ii[rc[i]-6];
  97.                                            tmp=i; //3.取得前一次點擊者
  98.                                  }
  99.                          }
  100.                  }                 
  101.         };
  102.        
  103.         ActionListener al=new ActionListener() {
  104.          public void actionPerformed(ActionEvent e) {
  105.                    if(e.getSource()==btn_r)
  106.                    {
  107.                            rc();
  108.                            for(int i=0; i<12; i++)
  109.                            {
  110.                                    btn[i].setIcon(ii_b);
  111.                                    btn[i].setEnabled(true);
  112.                            }
  113.                    }
  114.          }
  115.         };
  116.         public static void main(String[] args) {
  117.                   new Main();
  118.         }               
  119. }
複製代碼





歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/) Powered by Discuz! 7.2