home *** CD-ROM | disk | FTP | other *** search
/ All for Cell Phones: Sony Ericsson / Sony-Ericsson 2004.iso / Java / Memory2 / Memory.jar / MemBoard.class (.txt) < prev    next >
Encoding:
Java Class File  |  2001-12-11  |  3.6 KB  |  162 lines

  1. import java.io.IOException;
  2. import java.util.Date;
  3. import java.util.Random;
  4. import javax.microedition.lcdui.Graphics;
  5. import javax.microedition.lcdui.Image;
  6.  
  7. public class MemBoard {
  8.    private static final int ROWS = 4;
  9.    private static final int COLS = 4;
  10.    private static final int CARDS = 16;
  11.    private static final int PAIRS = 8;
  12.    private static final String TRYS_STR = "trys:";
  13.    private static final String PAIRS_STR = "pairs:";
  14.    private int[] board;
  15.    private Image cardBackSide;
  16.    private Image[] cardFrontSide;
  17.    private Image cursorOn;
  18.    private Image cursorOff;
  19.    private int curX;
  20.    private int curY;
  21.    private int c1Index;
  22.    private int c2Index;
  23.    private int trys;
  24.    private int pairs;
  25.  
  26.    public MemBoard() {
  27.       try {
  28.          this.cardBackSide = Image.createImage("m0.png");
  29.          this.cardFrontSide = new Image[]{Image.createImage("m1.png"), Image.createImage("m2.png"), Image.createImage("m3.png"), Image.createImage("m4.png"), Image.createImage("m5.png"), Image.createImage("m6.png"), Image.createImage("m7.png"), Image.createImage("m8.png")};
  30.          this.cursorOn = Image.createImage("cursorOn.png");
  31.          this.cursorOff = Image.createImage("cursorOff.png");
  32.       } catch (IOException var2) {
  33.       }
  34.  
  35.       this.newGame();
  36.    }
  37.  
  38.    public void newGame() {
  39.       Date var7 = new Date();
  40.       int[] var5 = new int[16];
  41.       this.board = new int[16];
  42.  
  43.       for(int var3 = 0; var3 < 8; ++var3) {
  44.          var5[var3] = var3 + 1;
  45.          var5[var3 + 8] = var3 + 1;
  46.          this.board[var3] = var3 + 1;
  47.          this.board[var3 + 8] = var3 + 1;
  48.       }
  49.  
  50.       Random var6 = new Random();
  51.       var6.setSeed(var7.getTime());
  52.       int var2 = 16;
  53.  
  54.       for(int var8 = 0; var8 < 16; ++var8) {
  55.          int var1 = Math.abs(var6.nextInt()) % var2;
  56.          this.board[var8] = var5[var1];
  57.          --var2;
  58.  
  59.          for(int var4 = var1; var4 < var2; ++var4) {
  60.             var5[var4] = var5[var4 + 1];
  61.          }
  62.       }
  63.  
  64.       this.curX = 0;
  65.       this.curY = 0;
  66.       this.c1Index = -1;
  67.       this.c2Index = -1;
  68.       this.trys = 0;
  69.       this.pairs = 0;
  70.    }
  71.  
  72.    public void drawBoard(Graphics var1) {
  73.       for(int var2 = 0; var2 < 4; ++var2) {
  74.          for(int var3 = 0; var3 < 4; ++var3) {
  75.             if (this.board[var2 + var3 * 4] != 0) {
  76.                var1.drawImage(this.cardBackSide, 2 + var2 * 17, 2 + var3 * 17, 20);
  77.             } else {
  78.                var1.setColor(255, 255, 255);
  79.                var1.fillRect(2 + var2 * 17, 2 + var3 * 17, 15, 15);
  80.             }
  81.          }
  82.       }
  83.  
  84.       var1.setColor(0, 0, 0);
  85.       var1.drawString("trys:", 70, 2, 20);
  86.       var1.drawString(Integer.toString(this.trys), 72, 17, 20);
  87.       var1.drawString("pairs:", 70, 42, 20);
  88.       var1.drawString(Integer.toString(this.pairs), 72, 57, 20);
  89.    }
  90.  
  91.    public void drawCursor(Graphics var1) {
  92.       var1.drawImage(this.cursorOn, this.curX * 17, this.curY * 17, 20);
  93.    }
  94.  
  95.    public void eraseCursor(Graphics var1) {
  96.       var1.drawImage(this.cursorOff, this.curX * 17, this.curY * 17, 20);
  97.    }
  98.  
  99.    public boolean gameOver() {
  100.       return this.pairs == 8;
  101.    }
  102.  
  103.    public void moveCursor(int var1) {
  104.       switch (var1) {
  105.          case 0:
  106.             --this.curY;
  107.             break;
  108.          case 1:
  109.             ++this.curY;
  110.             break;
  111.          case 2:
  112.             --this.curX;
  113.             break;
  114.          case 3:
  115.             ++this.curX;
  116.       }
  117.  
  118.       if (this.curY < 0) {
  119.          this.curY = 3;
  120.       } else if (this.curY > 3) {
  121.          this.curY = 0;
  122.       }
  123.  
  124.       if (this.curX < 0) {
  125.          this.curX = 3;
  126.       } else if (this.curX > 3) {
  127.          this.curX = 0;
  128.       }
  129.  
  130.    }
  131.  
  132.    public boolean showCard(Graphics var1) {
  133.       if (this.board[this.curX + this.curY * 4] != 0) {
  134.          if (this.c1Index == -1) {
  135.             this.c1Index = this.curX + this.curY * 4;
  136.          } else if (this.c1Index != this.curX + this.curY * 4) {
  137.             this.c2Index = this.curX + this.curY * 4;
  138.          }
  139.  
  140.          var1.drawImage(this.cardFrontSide[this.board[this.curX + this.curY * 4] - 1], 2 + this.curX * 17, 2 + this.curY * 17, 20);
  141.          if (this.c1Index != -1 && this.c2Index != -1) {
  142.             if (this.board[this.c1Index] == this.board[this.c2Index]) {
  143.                this.board[this.c1Index] = 0;
  144.                this.board[this.c2Index] = 0;
  145.                ++this.pairs;
  146.             }
  147.  
  148.             ++this.trys;
  149.             this.c1Index = -1;
  150.             this.c2Index = -1;
  151.             return true;
  152.          }
  153.       }
  154.  
  155.       return false;
  156.    }
  157.  
  158.    public int numTrys() {
  159.       return this.trys;
  160.    }
  161. }
  162.