返回列表 發帖

翻牌遊戲 (四)

本帖最後由 周政輝 於 2018-5-5 11:18 編輯

延續 翻牌遊戲 (三) 的練習,使完成全部配對時顯示 "Good Job!" 圖樣,參考執行畫面如下:


  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.         JLabel GoodJob;
  42.         public Main() {
  43.                 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  44.                 setBounds(100, 100, 662, 499);

  45.                 contentPane = new JPanel();
  46.                 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  47.                 setContentPane(contentPane);
  48.                 contentPane.setLayout(null);
  49.                
  50.             GoodJob = new JLabel("");
  51.             GoodJob.setBounds(0, 0, 636, 451);
  52.             contentPane.add(GoodJob);

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

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

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

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

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

  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.                 JLabel Poker_6 = new JLabel("New label");
  74.                 Poker_6.setBounds(159, 155, 128, 128);
  75.                 contentPane.add(Poker_6);
  76.                 pokers[5] = Poker_6;

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

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

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

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

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

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

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

  113.         }

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

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

  130.         private void rc() {
  131.                 for (int i = 0; i < 12; i++) {
  132.                         randomnum[i] = (int) (Math.random() * 12); // 0~11
  133.                         for (int j = 0; j < i; j++) {
  134.                                 if (randomnum[i] == randomnum[j]) {
  135.                                         i--;
  136.                                         break;
  137.                                 }
  138.                         }
  139.                 }
  140.         }

  141.         private void InitAnsImg(int[] randomnum) {

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

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

  156.         // 給予一個共用的MouseAdapter事件
  157.         ImageIcon temp = null;
  158.         int locate = 0;
  159.         boolean isFirst = true;
  160.         int tempcount = 0;
  161.         int pair = 0;
  162.         MouseAdapter adapter = new MouseAdapter() {
  163.                 @Override
  164.                 public void mouseClicked(MouseEvent e) {
  165.                         for (int i = 0; i < 12; i++) {

  166.                                 // 判斷當下使用者點選的牌是哪一張
  167.                                 if (isFirst && e.getSource() == pokers[i]) {
  168.                                         // 翻牌
  169.                                         pokers[i].setIcon(answercard[i]);
  170.                                         if (tempcount == 0) {
  171.                                                 // 第一次紀錄當前的圖片以及位置
  172.                                                 temp = answercard[i];
  173.                                                 locate = i;
  174.                                                 System.out.println("第一次翻牌");
  175.                                                 tempcount++;
  176.                                         } else {
  177.                                                 System.out.println("第一次翻牌");
  178.                                                 // 判斷第二次翻的牌跟第一次有沒有一樣,如果不一樣則需要把第一張牌翻回去
  179.                                                 if (temp.getImage() != answercard[i].getImage()) {
  180.                                                         System.out.println("不一樣");
  181.                                                         ImageIcon defaultIcon = new ImageIcon(
  182.                                                         Main.class.getResource("pic/0.png"));
  183.                                                         pokers[locate].setIcon(defaultIcon);
  184.                                                         temp = answercard[i];
  185.                                                         locate = i;
  186.                                                 } else {
  187.                                                         System.out.println("一樣");
  188.                                                         tempcount = 0;
  189.                                                         isFirst = true;
  190.                                                         pair++;
  191.                                                         break;
  192.                                                 }

  193.                                         }
  194.                                         isFirst = false;

  195.                                         break;
  196.                                 }

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

  201.                                         System.out.println("第二次翻牌");
  202.                                         // 判斷第二次翻的牌跟第一次有沒有一樣,如果不一樣則需要把第一張牌翻回去
  203.                                         if (temp.getImage() != answercard[i].getImage()) {
  204.                                                 System.out.println("不一樣");
  205.                                                 ImageIcon defaultIcon = new ImageIcon(
  206.                                                 Main.class.getResource("pic/0.png"));
  207.                                                 pokers[locate].setIcon(defaultIcon);
  208.                                                 temp = answercard[i];
  209.                                                 locate = i;
  210.                                         } else {
  211.                                                 System.out.println("一樣");
  212.                                                 // 清除第一次牌的紀錄
  213.                                                 pair++;
  214.                                                 tempcount = 0;
  215.                                         }

  216.                                         isFirst = true;

  217.                                 }

  218.                         }
  219.                         if(pair == 6){
  220.                                
  221.                                 GoodJob.setIcon(new ImageIcon(Main.class.getResource("/tw/kuas/edu/tw/pic/goodjob.png")));
  222.                         }

  223.                 }
  224.         };
  225. }
複製代碼
附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊

  1. package bbs.istak.org.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 Game 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.                                         Game frame = new Game();
  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[] randomc = new ImageIcon[12];
  39.         ImageIcon[] answerc = new ImageIcon[12];
  40.         int randomnum[] = new int[12];

  41.         public Game() {
  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("");

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

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

  56.                 JLabel Poker_3 = new JLabel("");
  57.                 Poker_3.setBounds(304, 10, 128, 128);
  58.                 contentPane.add(Poker_3);
  59.                 pokers[2] = Poker_3;

  60.                 JLabel Poker_4 = new JLabel("");
  61.                 Poker_4.setBounds(453, 10, 128, 128);
  62.                 contentPane.add(Poker_4);
  63.                 pokers[3] = Poker_4;

  64.                 JLabel Poker_5 = new JLabel("");
  65.                 Poker_5.setBounds(10, 155, 128, 128);
  66.                 contentPane.add(Poker_5);
  67.                 pokers[4] = Poker_5;

  68.                 JLabel Poker_6 = new JLabel("");
  69.                 Poker_6.setBounds(159, 155, 128, 128);
  70.                 contentPane.add(Poker_6);
  71.                 pokers[5] = Poker_6;

  72.                 JLabel Poker_7 = new JLabel("");
  73.                 Poker_7.setBounds(304, 155, 128, 128);
  74.                 contentPane.add(Poker_7);
  75.                 pokers[6] = Poker_7;

  76.                 JLabel Poker_8 = new JLabel("");
  77.                 Poker_8.setBounds(453, 155, 128, 128);
  78.                 contentPane.add(Poker_8);
  79.                 pokers[7] = Poker_8;

  80.                 JLabel Poker_9 = new JLabel("");
  81.                 Poker_9.setBounds(10, 293, 128, 128);
  82.                 contentPane.add(Poker_9);
  83.                 pokers[8] = Poker_9;

  84.                 JLabel Poker_10 = new JLabel("");
  85.                 Poker_10.setBounds(159, 293, 128, 128);
  86.                 contentPane.add(Poker_10);
  87.                 pokers[9] = Poker_10;

  88.                 JLabel Poker_11 = new JLabel("");
  89.                 Poker_11.setBounds(304, 293, 128, 128);
  90.                 contentPane.add(Poker_11);
  91.                 pokers[10] = Poker_11;

  92.                 JLabel Poker_12 = new JLabel("");
  93.                 Poker_12.setBounds(453, 293, 128, 128);
  94.                 contentPane.add(Poker_12);
  95.                 pokers[11] = Poker_12;

  96.                 InitializeImg(pokers);
  97.                 rc();
  98.                 InitAnsImg(randomnum);
  99.                 AddListener();
  100.                 JLabel Reset = new JLabel("");
  101.                 Reset.setIcon(new ImageIcon(Game.class.getResource("pic/R.png")));
  102.                 Reset.setBounds(603, 418, 33, 33);
  103.                 contentPane.add(Reset);
  104.                 for (int i = 0; i < 12; i++) {
  105.                         System.out.println(answerc[i]);
  106.                 }

  107.         }

  108.         private ImageIcon InitImg() {
  109.                 ImageIcon icon = new ImageIcon(Game.class.getResource("pic/0.png"));
  110.                 Image img = icon.getImage().getScaledInstance(128, 128,
  111.                                 java.awt.Image.SCALE_FAST);
  112.                 ImageIcon newIcon = new ImageIcon(img);
  113.                 return newIcon;
  114.         }

  115.         private void InitializeImg(JLabel[] pokers) {
  116.                 for (int i = 0; i < pokers.length; i++) {
  117.                         ImageIcon icon = new ImageIcon(Game.class.getResource("pic/0.png"));
  118.                         Image img = icon.getImage().getScaledInstance(128, 128,
  119.                                         java.awt.Image.SCALE_FAST);
  120.                         ImageIcon newIcon = new ImageIcon(img);
  121.                         pokers[i].setIcon(newIcon);
  122.                 }
  123.         }

  124.         private void rc() {
  125.                 for (int i = 0; i < 12; i++) {
  126.                         randomnum[i] = (int) (Math.random() * 12); // 0~11
  127.                         for (int j = 0; j < i; j++) {
  128.                                 if (randomnum[i] == randomnum[j]) {
  129.                                         i--;
  130.                                         break;
  131.                                 }
  132.                         }
  133.                 }
  134.         }

  135.         private void InitAnsImg(int[] randomnum) {

  136.                 for (int i = 1; i <= 6; i++) {
  137.                         ImageIcon icon = new ImageIcon(Game.class.getResource(String
  138.                                         .format("pic/%d.png", i)));
  139.                         Image img = icon.getImage().getScaledInstance(128, 128,
  140.                                         java.awt.Image.SCALE_FAST);
  141.                         answerc[randomnum[i - 1]] = new ImageIcon(img); // 0-5
  142.                         answerc[randomnum[i + 5]] = new ImageIcon(img); // 6-11
  143.                 }
  144.         }

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

  150.         ImageIcon tmp = null;
  151.         int locate = 0;
  152.         boolean iF = true;
  153.         int tc = 0;
  154.         MouseAdapter adapter = new MouseAdapter() {
  155.                 @Override
  156.                 public void mouseClicked(MouseEvent e) {
  157.                        
  158.                        
  159.                         for (int i = 0; i < 12; i++) {

  160.                                 if (iF && e.getSource() == pokers[i]) {
  161.                                         pokers[i].setIcon(answerc[i]);
  162.                                         if (tc == 0) {
  163.                                                 tmp = answerc[i];
  164.                                                 locate = i;
  165.                                                 System.out.println("第一次翻牌");
  166.                                                 tc++;
  167.                                                
  168.                                         } else {
  169.                                                 System.out.println("第一次翻牌");
  170.                                                 if (tmp.getImage() != answerc[i].getImage()) {
  171.                                                         System.out.println("不同");
  172.                                                         ImageIcon defaultIcon = new ImageIcon(
  173.                                                                         Game.class.getResource("pic/0.png"));
  174.                                                         pokers[locate].setIcon(defaultIcon);
  175.                                                         tmp = answerc[i];
  176.                                                         locate = i;
  177.                                                 } else {
  178.                                                         System.out.println("一樣");
  179.                                                         tc = 0;
  180.                                                         iF = true;
  181.                                                         break;
  182.                                                 }

  183.                                         }
  184.                                         iF = false;

  185.                                         break;
  186.                                 }

  187.                                 if ((iF == false) && e.getSource() == pokers[i]) {
  188.                                         pokers[i].setIcon(answerc[i]);

  189.                                         System.out.println("第二次翻牌");
  190.                                         if (tmp.getImage() != un[i].getImage()) {
  191.                                                 System.out.println("不同");
  192.                                                 ImageIcon defaultIcon = new ImageIcon(
  193.                                                                 Game.class.getResource("pic/0.png"));
  194.                                                 pokers[locate].setIcon(defaultIcon);
  195.                                                 tmp = answerc[i];
  196.                                                 locate = i;
  197.                                         } else {
  198.                                                 System.out.println("一樣");
  199.                                                 tc = 0;
  200.                                         }

  201.                                         iF = true;

  202.                                 }

  203.                         }

  204.                 }
  205.         };

  206. }
複製代碼

TOP

  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. import javax.swing.JTextField;

  13. public class PtSC extends JFrame {

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

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

  36.         /**
  37.          * Create the frame.
  38.          */
  39.         public PtSC() {
  40.                 icon = new ImageIcon(PtSC.class.getResource("star.png"));
  41.                 Image imgicon = icon.getImage().getScaledInstance(128, 128,
  42.                                 java.awt.Image.SCALE_FAST);

  43.                 this.setIconImage(imgicon);
  44.                 larray = new JLabel[12];
  45.                 poker = new ImageIcon[12];
  46.                 answer = new ImageIcon[12];

  47.                 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  48.                 setBounds(100, 100, 620, 462);
  49.                 contentPane = new JPanel();
  50.                 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  51.                 setContentPane(contentPane);
  52.                 contentPane.setLayout(null);

  53.                 JLabel label_0 = new JLabel(pokercard(0));
  54.                 label_0.setBounds(10, 10, 128, 128);
  55.                 contentPane.add(label_0);
  56.                 larray[0] = label_0;

  57.                 JLabel label_1 = new JLabel(pokercard(1));
  58.                 label_1.setBounds(148, 10, 128, 128);
  59.                 contentPane.add(label_1);
  60.                 larray[1] = label_1;

  61.                 JLabel label_2 = new JLabel(pokercard(2));
  62.                 label_2.setBounds(286, 10, 128, 128);
  63.                 contentPane.add(label_2);
  64.                 larray[2] = label_2;

  65.                 JLabel label_3 = new JLabel(pokercard(3));
  66.                 label_3.setBounds(424, 10, 128, 128);
  67.                 contentPane.add(label_3);
  68.                 larray[3] = label_3;

  69.                 JLabel label_4 = new JLabel(pokercard(4));
  70.                 label_4.setBounds(10, 149, 128, 128);
  71.                 contentPane.add(label_4);
  72.                 larray[4] = label_4;

  73.                 JLabel label_5 = new JLabel(pokercard(5));
  74.                 label_5.setBounds(148, 149, 128, 128);
  75.                 contentPane.add(label_5);
  76.                 larray[5] = label_5;

  77.                 JLabel label_6 = new JLabel(pokercard(6));
  78.                 label_6.setBounds(286, 149, 128, 128);
  79.                 contentPane.add(label_6);
  80.                 larray[6] = label_6;

  81.                 JLabel label_7 = new JLabel(pokercard(7));
  82.                 label_7.setBounds(424, 149, 128, 128);
  83.                 contentPane.add(label_7);
  84.                 larray[7] = label_7;

  85.                 JLabel label_8 = new JLabel(pokercard(8));
  86.                 label_8.setBounds(10, 286, 128, 128);
  87.                 contentPane.add(label_8);
  88.                 larray[8] = label_8;

  89.                 JLabel label_9 = new JLabel(pokercard(9));
  90.                 label_9.setBounds(148, 286, 128, 128);
  91.                 contentPane.add(label_9);
  92.                 larray[9] = label_9;

  93.                 JLabel label_10 = new JLabel(pokercard(10));
  94.                 label_10.setBounds(286, 286, 128, 128);
  95.                 contentPane.add(label_10);
  96.                 larray[10] = label_10;

  97.                 JLabel label_11 = new JLabel(pokercard(11));
  98.                 label_11.setBounds(424, 286, 128, 128);
  99.                 contentPane.add(label_11);
  100.                 larray[11] = label_11;

  101.                 icon = new ImageIcon(PtSC.class.getResource("return.png"));
  102.                 Image bimg = icon.getImage().getScaledInstance(33, 33,
  103.                                 java.awt.Image.SCALE_FAST);
  104.                 ImageIcon back = new ImageIcon(bimg);

  105.                 JLabel labelreset = new JLabel(back);
  106.                 labelreset.setBounds(562, 10, 33, 33);
  107.                 contentPane.add(labelreset);

  108.                 textField = new JTextField();
  109.                 textField.setBounds(558, 393, 36, 21);
  110.                 contentPane.add(textField);
  111.                 textField.setColumns(10);
  112.                 textField.setText("1");
  113.                
  114.           

  115.                 num = new int[12];
  116.                 for (int i = 0; i < num.length; i++) {
  117.                         num[i] = (int) (Math.random() * 12);
  118.                         for (int j = 0; j < i; j++) {
  119.                                 if (num[i] == num[j]) {
  120.                                         i--;
  121.                                         break;

  122.                                 }
  123.                         }
  124.                 }
  125.                 for (int k = 0; k < num.length; k++) {

  126.                         System.out.println(num[k]);

  127.                 }

  128.                 backcard(num);
  129.                 AddListener();
  130.                  gdLabel = new JLabel();
  131.                         gdLabel.setBounds(189, 78, 256, 256);
  132.                         contentPane.add(gdLabel);
  133.                        
  134.         }

  135.         private ImageIcon pokercard(int n) {

  136.                 poker = new ImageIcon[12];
  137.                 icon = new ImageIcon(PtSC.class.getResource("0.png"));
  138.                 Image andimg = icon.getImage().getScaledInstance(128, 128,
  139.                                 java.awt.Image.SCALE_FAST);
  140.                 ImageIcon andriod = new ImageIcon(andimg);

  141.                 for (int a = 0; a < poker.length; a++) {

  142.                         poker[a] = andriod;

  143.                 }
  144.                 return poker[n];

  145.         }

  146.         private void backcard(int[] num) {

  147.                 for (int x = 1; x <= 6; x++) {

  148.                         icon = new ImageIcon(PtSC.class.getResource(String.format("%d.png",
  149.                                         x)));
  150.                         Image img = icon.getImage().getScaledInstance(128, 128,
  151.                                         java.awt.Image.SCALE_FAST);
  152.                         ImageIcon answercard = new ImageIcon(img);

  153.                         answer[num[x - 1]] = answercard;
  154.                         answer[num[x + 5]] = answercard;

  155.                 }
  156.         }

  157.         private void AddListener() {

  158.                 for (int i = 0; i < larray.length; i++)

  159.                         larray[i].addMouseListener(adapter);

  160.         }

  161.         ImageIcon temp = null;
  162.         int locate = 0;
  163.         boolean isFirst = true;
  164.         int tempcount = 0;
  165.         int rcc = 0;
  166.         MouseAdapter adapter = new MouseAdapter() {
  167.                 @Override
  168.                 public void mouseClicked(MouseEvent e) {
  169.                         for (int i = 0; i < 12; i++) {

  170.                                 // 判斷當下使用者點選的牌是哪一張
  171.                                 if (isFirst && e.getSource() == larray[i]) {
  172.                                         // 翻牌
  173.                                         larray[i].setIcon(answer[i]);
  174.                                         if (tempcount == 0) {
  175.                                                 // 第一次紀錄當前的圖片以及位置
  176.                                                 temp = answer[i];
  177.                                                 locate = i;
  178.                                                 textField.setText("1");
  179.                                                 tempcount++;
  180.                                         } else {
  181.                                                 textField.setText("1");
  182.                                                 // 判斷第二次翻的牌跟第一次有沒有一樣,如果不一樣則需要把第一張牌翻回去
  183.                                                 if (temp.getImage() != answer[i].getImage()) {
  184.                                                         System.out.println("不一樣");
  185.                                                         ImageIcon defaultIcon = new ImageIcon(
  186.                                                                         PtSC.class.getResource("0.png"));
  187.                                                         larray[locate].setIcon(defaultIcon);
  188.                                                         temp = answer[i];
  189.                                                         locate = i;
  190.                                                 } else {
  191.                                                         System.out.println("一樣");
  192.                                                         tempcount = 0;
  193.                                                         isFirst = true;
  194.                                                         break;
  195.                                                 }

  196.                                         }
  197.                                         isFirst = false;

  198.                                         break;
  199.                                 }

  200.                                 // 第二次翻牌
  201.                                 if ((isFirst == false) && e.getSource() == larray[i]) {
  202.                                         // 翻牌
  203.                                         larray[i].setIcon(answer[i]);

  204.                                         textField.setText("2");
  205.                                         // 判斷第二次翻的牌跟第一次有沒有一樣,如果不一樣則需要把第一張牌翻回去
  206.                                         if (temp.getImage() != answer[i].getImage()) {
  207.                                                 System.out.println("不一樣");
  208.                                                 ImageIcon defaultIcon = new ImageIcon(
  209.                                                                 PtSC.class.getResource("0.png"));
  210.                                                 larray[locate].setIcon(defaultIcon);
  211.                                                 temp = answer[i];
  212.                                                 locate = i;
  213.                                         } else {
  214.                                                 System.out.println("一樣");
  215.                                                 // 清除第一次牌的紀錄
  216.                                                 tempcount = 0;
  217.                                                 rcc++;
  218.                                         }

  219.                                         isFirst = true;

  220.                                 }
  221.                                
  222.                         }
  223.                         if(rcc==5){
  224.                         icon = new ImageIcon(PtSC.class.getResource("goodjob.png"));
  225.                         Image gimg = icon.getImage().getScaledInstance(256, 256,java.awt.Image.SCALE_FAST);
  226.                         ImageIcon goodjob = new ImageIcon(gimg);
  227.                         gdLabel.setIcon(goodjob);
  228.                         }
  229.                 }
  230.                
  231.                
  232.         };
  233.         private JTextField textField;
  234. }
複製代碼

TOP

  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.         JLabel GoodJob;
  42.         public Main() {
  43.                 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  44.                 setBounds(100, 100, 662, 499);

  45.                 contentPane = new JPanel();
  46.                 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  47.                 setContentPane(contentPane);
  48.                 contentPane.setLayout(null);
  49.                
  50.             GoodJob = new JLabel("");
  51.             GoodJob.setBounds(0, 0, 636, 451);
  52.             contentPane.add(GoodJob);

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

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

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

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

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

  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.                 JLabel Poker_6 = new JLabel("New label");
  74.                 Poker_6.setBounds(159, 155, 128, 128);
  75.                 contentPane.add(Poker_6);
  76.                 pokers[5] = Poker_6;

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

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

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

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

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

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

  101.                 InitializeImg(pokers);
  102.                 rc();
  103.                 InitAnsImg(randomnum);
  104.                 AddListener();
  105.                 JLabel Reset = new JLabel("New label");
  106.                 Reset.setIcon(new ImageIcon(Main.class
  107.                                 .getResource("/tw/kuas/edu/tw/pic/return.png")));
  108.                 Reset.setBounds(603, 418, 33, 33);
  109.                 contentPane.add(Reset);
  110.                 for (int i = 0; i < 12; i++) {
  111.                         System.out.println(answercard[i]);
  112.                 }
  113.         }
複製代碼
我是眾神之王XXX  I love you
0000000000

TOP

  1.         private ImageIcon InitImg() {
  2.                 ImageIcon icon = new ImageIcon(Main.class.getResource("pic/0.png"));
  3.                 Image img = icon.getImage().getScaledInstance(128, 128,
  4.                                 java.awt.Image.SCALE_FAST);
  5.                 ImageIcon newIcon = new ImageIcon(img);
  6.                 return newIcon;
  7.         }
  8.         private void InitializeImg(JLabel[] pokers) {
  9.                 for (int i = 0; i < pokers.length; i++) {
  10.                         ImageIcon icon = new ImageIcon(Main.class.getResource("pic/0.png"));
  11.                         Image img = icon.getImage().getScaledInstance(128, 128,
  12.                                         java.awt.Image.SCALE_FAST);
  13.                         ImageIcon newIcon = new ImageIcon(img);
  14.                         pokers[i].setIcon(newIcon);
  15.                 }
  16.         }
  17.         private void rc() {
  18.                 for (int i = 0; i < 12; i++) {
  19.                         randomnum[i] = (int) (Math.random() * 12); // 0~11
  20.                         for (int j = 0; j < i; j++) {
  21.                                 if (randomnum[i] == randomnum[j]) {
  22.                                         i--;
  23.                                         break;
  24.                                 }
  25.                         }
  26.                 }
  27.         }
  28.         private void InitAnsImg(int[] randomnum) {

  29.                 for (int i = 1; i <= 6; i++) {
  30.                         ImageIcon icon = new ImageIcon(Main.class.getResource(String
  31.                                         .format("pic/%d.png", i)));
  32.                         Image img = icon.getImage().getScaledInstance(128, 128,
  33.                                         java.awt.Image.SCALE_FAST);
  34.                         answercard[randomnum[i - 1]] = new ImageIcon(img); // 0-5
  35.                         answercard[randomnum[i + 5]] = new ImageIcon(img); // 6-11
  36.                 }
  37.         }
  38.         private void AddListener() {
  39.                 for (int i = 0; i < pokers.length; i++) {
  40.                         pokers[i].addMouseListener(adapter);
  41.                 }
  42.         }
  43.         ImageIcon temp = null;
  44.         int locate = 0;
  45.         boolean isFirst = true;
  46.         int tempcount = 0;
  47.         int pair = 0;
  48.         MouseAdapter adapter = new MouseAdapter() {
  49.                 @Override
  50.                 public void mouseClicked(MouseEvent e) {
  51.                         for (int i = 0; i < 12; i++) {
  52.                                 if (isFirst && e.getSource() == pokers[i]) {
  53.                                         pokers[i].setIcon(answercard[i]);
  54.                                         if (tempcount == 0) {
  55.                                                 temp = answercard[i];
  56.                                                 locate = i;
  57.                                                 System.out.println("第一次翻牌");
  58.                                                 tempcount++;
  59.                                         } else {
  60.                                                 System.out.println("第一次翻牌");
  61.                                                 if (temp.getImage() != answercard[i].getImage()) {
  62.                                                         System.out.println("不一樣");
  63.                                                         ImageIcon defaultIcon = new ImageIcon(
  64.                                                         Main.class.getResource("pic/0.png"));
  65.                                                         pokers[locate].setIcon(defaultIcon);
  66.                                                         temp = answercard[i];
  67.                                                         locate = i;
  68.                                                 } else {
  69.                                                         System.out.println("一樣");
  70.                                                         tempcount = 0;
  71.                                                         isFirst = true;
  72.                                                         pair++;
  73.                                                         break;
  74.                                                 }

  75.                                         }
  76.                                         isFirst = false;

  77.                                         break;
  78.                                 }
  79.                                 if ((isFirst == false) && e.getSource() == pokers[i]) {
  80.                                         pokers[i].setIcon(answercard[i]);

  81.                                         System.out.println("第二次翻牌");
  82.                                         if (temp.getImage() != answercard[i].getImage()) {
  83.                                                 System.out.println("不一樣");
  84.                                                 ImageIcon defaultIcon = new ImageIcon(
  85.                                                 Main.class.getResource("pic/0.png"));
  86.                                                 pokers[locate].setIcon(defaultIcon);
  87.                                                 temp = answercard[i];
  88.                                                 locate = i;
  89.                                         } else {
  90.                                                 System.out.println("一樣");
  91.                                                 pair++;
  92.                                                 tempcount = 0;
  93.                                         }

  94.                                         isFirst = true;

  95.                                 }

  96.                         }
  97.                         if(pair == 6){
  98.                                 
  99.                                 GoodJob.setIcon(new ImageIcon(Main.class.getResource("/tw/kuas/edu/tw/pic/goodjob.png")));
  100.                         }

  101.                 }
  102.         };
  103. }
複製代碼
我是眾神之王XXX  I love you
0000000000

TOP

  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. import javax.swing.JLabel;

  11. public class Main {

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

TOP

返回列表