⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.java

📁 J2ME的纸牌完整源代码及资源文件。 在WTK中设置类名
💻 JAVA
📖 第 1 页 / 共 3 页
字号:

import java.io.PrintStream;
import java.util.Date;
import java.util.Random;
import javax.microedition.lcdui.*;
import javax.microedition.rms.RecordStore;

public class Main extends CanvasEx
    implements Runnable, CommandListener {

    private KD kd;
    private static final int px[] = {
        2, 30, 58, 86, 114, 142, 170
    };
    int GameMode;
    private int C_TEXTCOLOR;
    private int C_BACKGROUND;
    private int C_TEXTCOLOR_F;
    private int C_BACKGROUND_F;
    private int VertNum;
    private int vy;
    private int cx;
    private int cy;
    private Card VRAM[][];
    private Card HoldCards[];
    private Card Mountain[];
    private int MountainNum;
    private int MountainCtr;
    private Card Pack[][];
    private int PackNum[];
    private int HoldCardNum;
    private int HoldPointX;
    private int HoldPointY;
    private Image i_back;
    private Image i_sys[];
    int Score;
    private Card Cards[];
    private int card_index;
    private int card_index2;
    private boolean quit;
    private boolean undo;
    private Thread thread;
    private GraphicsEx g;
    boolean SoftKey1;
    boolean SoftKey2;
    boolean KeyUp;
    boolean KeyDown;
    boolean KeyLeft;
    boolean KeyRight;
    boolean KeyEnter;
    boolean KeyShort;
    boolean KeyShort2;
    boolean KeyShort3;
    private Font sf;
    private Font mf;
    private Font lf;
    private Font df;
    private int ProgressUnit;
    private String MT;
    boolean pauseFlag;
    private long start_time;
    Command replay;
    private boolean timeExpire;
    int T;
    Command soft1;
    Command soft2;
    boolean reinit;
    private static final int FP_SHIFT = 13;
    private static final int FP_ONE = 8192;
    private static final int FP_HALF = 4096;
    public static final int MODE_POINT_SAMPLE = 0;
    public static final int MODE_BOX_FILTER = 1;

    public Main() {
        T = 18;
        soft1 = null;
        soft2 = null;
    }

    public void start(KD kd1) {
        kd = kd1;
        setCommandListener(this);
        thread = new Thread(this);
        thread.start();
    }

    private void InitImage() throws Exception {
        Cards = new Card[52];
        int l1 = 0;
        for (int i = 1; i <= 13;) {
            Cards[l1] = new Card(0, i, Image.createImage("/allcards1_" + i + ".png"));
            i++;
            l1++;
        }

        for (int j = 1; j <= 13;) {
            Cards[l1] = new Card(1, j, Image.createImage("/allcards2_" + j + ".png"));
            j++;
            l1++;
        }

        for (int k = 1; k <= 13;) {
            Cards[l1] = new Card(2, k, Image.createImage("/allcards3_" + k + ".png"));
            k++;
            l1++;
        }

        for (int l = 1; l <= 13;) {
            Cards[l1] = new Card(3, l, Image.createImage("/allcards4_" + l + ".png"));
            l++;
            l1++;
        }

        i_sys = new Image[24];
        l1 = 0;
        for (int i1 = 1; l1 < 8; i1++) {
            i_sys[l1] = Image.createImage("/back" + i1 + ".png");
            l1++;
        }

        for (int j1 = 1; j1 <= 4; j1++) {
            i_sys[l1] = Image.createImage("/other2_" + j1 + ".png");
            l1++;
        }

        for (int k1 = 1; k1 <= 12; k1++) {
            i_sys[l1] = Image.createImage("/other1_" + k1 + ".png");
            l1++;
        }

    }

    public void run() {
        try {
            main();
        }
        catch (Exception exception) { }
        catch (Error error) { }
        kd.Terminate();
    }

    public void main() throws Exception, Error {
        Object obj = null;
        timeExpire = false;
        g = getGraphics();
        C_TEXTCOLOR = GraphicsEx.getColorOfRGB(255, 255, 255);
        C_BACKGROUND = GraphicsEx.getColorOfRGB(36, 182, 85);
        C_TEXTCOLOR_F = GraphicsEx.getColorOfRGB(0, 0, 0);
        C_BACKGROUND_F = GraphicsEx.getColorOfRGB(182, 185, 82);
        for (int i = 0; i < 7; i++) {
            px[i] += (getWidth() - 180) / 2;
        }

        g.lock();
        g.setColor(C_BACKGROUND);
        g.fillRect(0, 0, getWidth(), getHeight());
        g.setColor(C_TEXTCOLOR);
        g.setFont(Font.getFont(64, 0, 16));
        g.drawString("\u8BFB\u53D6\u6E38\u620F", 120, 60, 1);
        g.unlock(true);
        sf = Font.getFont(0, 1, 8);
        mf = Font.getFont(0, 1, 0);
        lf = Font.getFont(0, 1, 16);
        if (mf.getHeight() < 14) {
            df = mf;
        } else {
            df = sf;
        }
        VertNum = (getHeight() - 27) / 12 - 1;
        InitImage();
        GameMode = 0;
        pauseFlag = false;
        VRAM = new Card[7][21];
        HoldCards = new Card[13];
        Mountain = null;
        Pack = new Card[4][13];
        PackNum = new int[4];
        System.gc();
        do {
            Thread.sleep(30L);
            clearkey();
            if (GameMode == 0) {
                GameMode = GameTitle();
            } else
            if (GameMode == 1) {
                GameMain();
            } else {
                return;
            }
        } while (true);
    }

    void clearkey() {
        SoftKey1 = SoftKey2 = KeyUp = KeyDown = KeyLeft = KeyRight = KeyEnter = KeyShort = KeyShort2 = KeyShort3 = false;
    }

    private long b2i(byte byte0) {
        if (byte0 < 0) {
            return (long)(256 + byte0);
        } else {
            return (long)byte0;
        }
    }

    private void DrawAll() {
        int k1 = 0;
        g.lock();
        g.setColor(C_BACKGROUND);
        g.fillRect(0, 0, getWidth(), getHeight());
        g.setColor(getColorOfRGB(255, 255, 0));
        g.drawLine(0, 23 + T, getWidth(), 23 + T);
        g.drawLine(0, 24 + T, getWidth(), 24 + T);
        for (int i = 0; i < 7; i++) {
            int l1 = 26 + T;
            for (int i1 = vy; i1 < vy + VertNum; i1++) {
                if (cx == i && cy == i1) {
                    k1 = l1;
                }
                if (VRAM[i][i1] == null) {
                    break;
                }
                if (VRAM[i][i1].IsOpened()) {
                    g.drawImage(VRAM[i][i1].getImage(), px[i], l1);
                } else {
                    g.drawImage(i_back, px[i], l1);
                }
                l1 += 12;
            }

            if (cy != 0 && HoldCardNum != 0 && i == cx) {
                int i2 = 26 + 12 * (cy - vy);
                for (int j1 = cy; j1 < vy + VertNum; j1++) {
                    if (HoldCardNum > j1 - cy) {
                        g.drawImage(HoldCards[j1 - cy].getImage(), px[i] + 2, i2 + T);
                    }
                    i2 += 12;
                }

            }
        }

        int j;
        for (j = Mountain.length - 1; j >= 0 && Mountain[j].IsUsed(); j--) { }
        if (card_index == j || card_index == -1 && MountainCtr == 0) {
            g.drawImage(i_sys[16 + MountainCtr], px[0], 1);
        } else {
            g.drawImage(i_back, px[0], 1);
        }
        if (card_index == -1) {
            g.drawImage(i_sys[20], px[1], 1);
        } else {
            g.drawImage(Mountain[card_index].getImage(), px[1], 1);
        }
        for (int k = 0; k < 4; k++) {
            if (PackNum[k] == 0) {
                g.drawImage(i_sys[12 + k], px[3 + k], 1);
            } else {
                g.drawImage(Pack[k][PackNum[k] - 1].getImage(), px[3 + k], 1);
            }
        }

        byte byte0 = 8;
        if (cy == 0) {
            if (HoldCardNum != 0) {
                g.drawImage(HoldCards[0].getImage(), px[cx] + 2, 1);
            }
            if (HoldCardNum == 0) {
                g.drawImage(i_sys[8], px[cx] + 8 + byte0, 4);
            } else {
                g.drawImage(i_sys[9], px[cx] + 8 + byte0, 4);
            }
        } else
        if (HoldCardNum == 0) {
            g.drawImage(i_sys[8], px[cx] + 8 + byte0, k1 + 3);
        } else {
            g.drawImage(i_sys[9], px[cx] + 8 + byte0, k1 + 3);
        }
        if (vy > 1) {
            g.drawImage(i_sys[10], px[3], 26);
        }
        for (int l = 0; l < 7; l++) {
            if (vy + VertNum >= 21 || VRAM[l][vy + VertNum] == null) {
                continue;
            }
            g.drawImage(i_sys[11], px[3], getHeight() - i_sys[11].getHeight());
            break;
        }

        g.unlock(true);
    }

    private void GameMain() throws Exception, Error {
        Random random = new Random();
        vy = 1;
        cx = cy = 0;
        SoftKey1 = SoftKey2 = KeyUp = KeyDown = KeyLeft = KeyRight = KeyEnter = KeyShort = KeyShort2 = KeyShort3 = false;
        quit = undo = false;
        HoldCardNum = 0;
        MountainCtr = 3;
        Score = 0;
        for (int i = 0; i < 7; i++) {
            for (int l1 = 0; l1 < 21; l1++) {
                VRAM[i][l1] = null;
            }

        }

        for (int j = 0; j < 4; j++) {
            PackNum[j] = 0;
        }

        i_back = i_sys[random.nextInt() & 7];
        SetPBar("\u6D17\u724C\u4E2D", true, 0, 51);
        for (int k = 0; k < 52; k++) {
            Cards[k].SetUsed(false);
        }

        for (int l = 0; l < 52; l++) {
            for (int i2 = 0; i2 < 52; i2++) {
                int l2 = ((random.nextInt() & 0x7f) * 52) / 128;
                Card card = Cards[i2];
                Cards[i2] = Cards[l2];
                Cards[l2] = card;
            }

            MovePBar(l);
        }

        card_index = 0;
        for (int i1 = 0; i1 < 7; i1++) {
            for (int j2 = 1; j2 <= i1 + 1; j2++) {
                VRAM[i1][j2] = Cards[card_index];
                card_index++;
                if (j2 == i1 + 1) {
                    VRAM[i1][j2].SetOpened(true);
                } else {
                    VRAM[i1][j2].SetOpened(false);
                }
            }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -