SubKorea > CYBER JAVA GAME > ±â¾ï·ÂÅ×½ºÆ®1 (Mnemonic) ¼Ò½ººÐ¼® #1, 2

/*
 * @author Francois Chouinard
 * 97-11-15
 * All rights reserved
 
import java.awt.*;
import java.awt.image.*;
import java.applet.AudioClip;
 
interface Game_Interface {

    public final int HIDE = 0;
    public final int SHOW = 1;
    public final int GONE = 2;
}
 
class Card implements Game_Interface {

    private int ID;
    private Image image;
    private int status;

    Card(Image my_image, int my_ID) {

        image = my_image;
        ID = my_ID;
        status = HIDE;
    }
 
    public Image getImage() {return image;}
    public void setImage(Image my_image) {image = my_image;}
 
    public int getID() {return ID;}
    public void setID(int my_ID) {ID = my_ID;}

    public int getStatus() {return status;}
    public void setStatus(int my_Status) {status = my_Status;}
 
} // À§·Î
 
public final class memory extends java.applet.Applet implements Runnable, Game_Interface {
 
    // PRIVATE FIELD
    private final int CARDS = 20;

    private final int CARD_WIDTH = 40;
    private final int CARD_HEIGHT = 50;

    private final int H_GAP = 20;
    private final int V_GAP = 10;

    private final int ROW = 5;
    private final int COLUMN = 8;

    private Card Board[][];

    private final Color BGCOLOR = new Color(51,102,0);

    private int WIDTH = 500;
    private int HEIGHT = 390;

    private Thread runner = null;

    private String message;

    private String message1 = "Player 1, pick a card";
    private String message2 = "Player 1, pick another card";

    private String message3 = "Player 2, pick a card";
    private String message4 = "Player 2, pick another card";

    private String message5 = "Player 1, you win !";
    private String message6 = "Player 2, you win !";

    private String message7 = "Â¥¹è±âÀ¯¸Ó¿Í ÇÔ²²...";
 
    private Image ImageSet[];
    private Image Hide_Card, Mnemonic;
 
    private AudioClip beep, yahoo;
 
    private Integer Score1, Score2;

    private final int PLAYER1 = 1;
    private final int PLAYER2 = 2;

    private int turn;
    private int pick;
    private int matchCard;

    private Card lastCard,lastCard2; // À§·Î

 /**
  *  public void init()
  *  Initialize the applet.
  *
  */
    public void init()  {

        super.init();

        getImageAndSound();

        initBoard();

        setMessage("Player 1, pick a card");

        setBackground(BGCOLOR);

        setLayout(null);

        resize(WIDTH, HEIGHT);
 
    } // À§·Î

/**
 *  public void initBoard()
 *  Initialize the game board.
 */
    public void initBoard()    {

        Score1 = new Integer(0);
        Score2 = new Integer(0);

        turn = PLAYER1;

        pick = 0;
        matchCard = 0;
        int ID = 0;
 
        Board = new Card[ROW][COLUMN];

        for(int i = 0; i < CARDS; i++) {

            Card card1 = new Card(ImageSet[ID], ID);
            putCard(card1);

            Card card2 = new Card(ImageSet[ID], ID);
            putCard(card2);

            ID++;
        }
    } // À§·Î
 
 /**
  *  public void putCard(Card card)
  *  Puts randomly a card on the board.
  *
  */
    public void putCard(Card card)    {

        int x = (int)(Math.random()*COLUMN);
        int y = (int)(Math.random()*ROW);

        boolean place = false;
 
        while(place != true) {

            if(Board[y][x] == null) {

               Board[y][x] = card;
               place = true;

            } else {

                 x = (int)(Math.random()*COLUMN);
                 y = (int)(Math.random()*ROW);
            }
        }
    } // À§·Î

 /**
  *  public void getImageAndSound()
  *  Get the differents images and sounds.
  *
  */
    public void getImageAndSound() {

        MediaTracker tracker;
        tracker=new MediaTracker(this);
 
        beep = getAudioClip(getCodeBase(), "ding.au");
        yahoo = getAudioClip(getCodeBase(), "yahoo.au");
 
        Image collection = getImage(getCodeBase(), "Cards.gif");

        tracker.addImage(collection, 0);

        try {

            tracker.waitForID(0);

        } catch(InterruptedException e) {}
 
        Hide_Card = createImage(new FilteredImageSource(
                   collection.getSource(), new CropImageFilter(0, 0, 40, 50)));

        tracker.addImage(Hide_Card, 1);
 
        ImageSet = new Image[CARDS];
 
        for(int i = 0; i < CARDS; i++) {

            ImageSet[i] = createImage(new FilteredImageSource(
                  collection.getSource(), new CropImageFilter(40*(i+1), 0, 40, 50)));

            tracker.addImage(ImageSet[i], 1);
        }

        try {

            tracker.waitForID(1);

        } catch(InterruptedException e) { }
 
        Mnemonic = getImage(getCodeBase(), "Mnemonic.gif");
        tracker.addImage(Mnemonic, 3);
 
        try {

            tracker.waitForID(3);

        } catch(InterruptedException e) { }
 
    } // À§·Î
 
 /**
  *  public void start()
  *  Starts the main thread of this applet.
  *
  */
    public void start() {

        if(runner != null && runner.isAlive()) {

            runner = new Thread(this);
            runner.start();

        } else if(runner == null) {

            runner = new Thread(this);
            runner.start();

        }
    } // À§·Î
 
 /**
  *  public void stop()
  *  Stops the main thread of this applet.
  *
  *
  */
    public void stop() {

        if(runner != null && runner.isAlive()) {

            runner.suspend();
        }
    } // À§·Î