返回列表 發帖

翻牌遊戲 (一)

本帖最後由 周政輝 於 2018-4-14 12:04 編輯

試完成一翻牌遊戲之雛形, 執行畫面如下, 該視窗程式需做到:

1. 六組各兩張的圖片, 能隨機出現在被點擊的按鈕上.
2. 當點擊右下角的回復鈕, 所有圖片皆回復原狀, 並重新洗牌.







素材: pic.zip
  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. public class Main extends JFrame {

  12.         private JPanel contentPane;

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

  28.         /**
  29.          * Create the frame.
  30.          */
  31.         JLabel[] pokers = new JLabel[12];
  32.         ImageIcon[] randomcard = new ImageIcon[12];
  33.         int randomnum[]=new int[12];
  34.         public Main() {
  35.                 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  36.                 setBounds(100, 100, 662, 499);
  37.                
  38.                 contentPane = new JPanel();
  39.                 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  40.                 setContentPane(contentPane);
  41.                 contentPane.setLayout(null);
  42.                
  43.                 JLabel Poker_1 = new JLabel("New label");
  44.                 Poker_1.setBounds(10, 10, 128, 128);
  45.                 contentPane.add(Poker_1);
  46.                 pokers[0] = Poker_1;
  47.        
  48.                 JLabel Poker_2 = new JLabel("New label");
  49.                 Poker_2.setBounds(159, 10, 128, 128);
  50.                 contentPane.add(Poker_2);
  51.                 pokers[1] = Poker_2;
  52.                
  53.                 JLabel Poker_3 = new JLabel("New label");
  54.                 Poker_3.setBounds(304, 10, 128, 128);
  55.                 contentPane.add(Poker_3);
  56.                 pokers[2] = Poker_3;
  57.                
  58.                 JLabel Poker_4 = new JLabel("New label");
  59.                 Poker_4.setBounds(453, 10, 128, 128);
  60.                 contentPane.add(Poker_4);
  61.                 pokers[3] = Poker_4;
  62.                
  63.                 JLabel Poker_5 = new JLabel("New label");
  64.                 Poker_5.setBounds(10, 155, 128, 128);
  65.                 contentPane.add(Poker_5);
  66.                 pokers[4] = Poker_5;
  67.                
  68.                 JLabel Poker_6 = new JLabel("New label");
  69.                 Poker_6.setBounds(159, 155, 128, 128);
  70.                 contentPane.add(Poker_6);
  71.                 pokers[5] = Poker_6;

  72.                 JLabel Poker_7 = new JLabel("New label");
  73.                 Poker_7.setBounds(304, 155, 128, 128);
  74.                 contentPane.add(Poker_7);
  75.                 pokers[6] = Poker_7;
  76.                
  77.                 JLabel Poker_8 = new JLabel("New label");
  78.                 Poker_8.setBounds(453, 155, 128, 128);
  79.                 contentPane.add(Poker_8);
  80.                 pokers[7] = Poker_8;
  81.                
  82.                 JLabel Poker_9 = new JLabel("New label");
  83.                 Poker_9.setBounds(10, 293, 128, 128);
  84.                 contentPane.add(Poker_9);
  85.                 pokers[8] = Poker_9;
  86.                
  87.                 JLabel Poker_10 = new JLabel("New label");
  88.                 Poker_10.setBounds(159, 293, 128, 128);
  89.                 contentPane.add(Poker_10);
  90.                 pokers[9] = Poker_10;
  91.                
  92.                 JLabel Poker_11 = new JLabel("New label");
  93.                 Poker_11.setBounds(304, 293, 128, 128);
  94.                 contentPane.add(Poker_11);
  95.                 pokers[10] = Poker_11;

  96.                 JLabel Poker_12 = new JLabel("New label");
  97.                 Poker_12.setBounds(453, 293, 128, 128);
  98.                 contentPane.add(Poker_12);
  99.                 pokers[11] = Poker_12;
  100.                
  101.                
  102.                 InitializeImg(pokers);
  103.                 rc();
  104.                 JLabel Reset = new JLabel("New label");
  105.                 Reset.setIcon(new ImageIcon(Main.class.getResource("/tw/kuas/edu/tw/pic/return.png")));
  106.                 Reset.setBounds(603, 418, 33, 33);
  107.                 contentPane.add(Reset);
  108.                 for(int i=0;i<12;i++) {
  109.                         System.out.println(randomnum[i]);
  110.                 }
  111.                
  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,  java.awt.Image.SCALE_FAST );
  117.         ImageIcon newIcon = new ImageIcon(img);
  118.         return newIcon;
  119.         }
  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,  java.awt.Image.SCALE_FAST );
  125.                 ImageIcon newIcon = new ImageIcon(img);
  126.                 pokers[i].setIcon(newIcon);
  127.                 }
  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.      

  142.        

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

返回列表