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

📄 main.java

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

        }

        MountainNum = 52 - card_index;
        Mountain = new Card[MountainNum];
        for (int j1 = 0; j1 < MountainNum; j1++) {
            Mountain[j1] = Cards[card_index];
            card_index++;
            Mountain[j1].SetOpened(true);
        }

        card_index = -1;
        for (int k1 = 0; k1 < 4; k1++) {
            PackNum[k1] = 0;
            for (int k2 = 0; k2 < 13; k2++) {
                Pack[k1][k2] = null;
            }

        }

        setSoftLabel("\u6094\u724C", "\u8FD4\u56DE");
        replay = new Command("\u91CD\u73A9", 1, 1);
        addCommand(replay);
        DrawAll();
        start_time = (new Date()).getTime();
        do {
            System.gc();
            Thread.sleep(40L);
            if (Action()) {
                DrawAll();
            }
        } while (!quit);
        Mountain = null;
        System.gc();
    }

    private boolean Action() throws Exception, Error {
        Score--;
        if (KeyEnter) {
            SetHold();
        } else
        if (KeyShort) {
            ShortCutKey();
        } else
        if (KeyShort2) {
            cy = 0;
            cx = 0;
        } else
        if (KeyShort3) {
            cy = 0;
            cx = 3;
        } else
        if (KeyUp) {
            if (cy != 0) {
                if (cy != 1 && (VRAM[cx][cy - 1].IsOpened() || VRAM[cx][cy] == null && !VRAM[cx][cy - 1].IsOpened())) {
                    cy--;
                } else
                if (cx != 2) {
                    cy = 0;
                }
            } else
            if (vy > 1) {
                vy--;
            }
            for (; cy != 0 && vy != 1 && vy >= cy; vy--) { }
        } else
        if (KeyDown) {
            if (cy == 0) {
                cy = CheckYPos(1);
            } else
            if (VRAM[cx][cy] != null) {
                cy = CheckYPos(cy + 1);
            }
            for (; vy != 1 && vy >= cy; vy--) { }
            for (; vy != 20 && VRAM[cx][vy + 1] != null && (vy + VertNum) - 1 <= cy; vy++) { }
        } else
        if (KeyLeft) {
            if (cy == 0) {
                if (cx == 3) {
                    cx = 1;
                } else
                if (cx != 0) {
                    cx--;
                }
            } else {
                if (cx != 0) {
                    cx--;
                }
                for (cy = CheckYPos(cy); vy != 1 && vy >= cy; vy--) { }
                for (; vy != 20 && (vy + VertNum) - 1 <= cy; vy++) { }
            }
        } else
        if (KeyRight) {
            if (cy == 0) {
                if (cx == 1) {
                    cx = 3;
                } else
                if (cx != 6) {
                    cx++;
                }
            } else {
                if (cx != 6) {
                    cx++;
                }
                for (cy = CheckYPos(cy); vy != 1 && vy >= cy; vy--) { }
                for (; vy != 20 && (vy + VertNum) - 1 <= cy; vy++) { }
            }
        } else
        if (SoftKey1) {
            if (undo) {
                undo = false;
                if (card_index != -1) {
                    for (card_index--; card_index >= 0 && Mountain[card_index].IsUsed(); card_index--) { }
                    if (card_index == -1) {
                        MountainCtr++;
                    }
                    Score -= 80;
                }
            }
        } else
        if (SoftKey2) {
            quit = true;
            GameMode = 0;
        } else {
            Score++;
            return false;
        }
        SoftKey1 = SoftKey2 = KeyUp = KeyDown = KeyLeft = KeyRight = KeyEnter = KeyShort = KeyShort2 = KeyShort3 = false;
        return true;
    }

    private int CheckYPos(int i) {
        if (i == 0) {
            return 0;
        }
        if (VRAM[cx][i] == null) {
            if (i > 1 && VRAM[cx][i - 1] != null) {
                return i;
            }
        } else
        if (VRAM[cx][i].IsOpened()) {
            return i;
        }
        if (VRAM[cx][1] == null) {
            return 1;
        }
        if (cy == 0 || VRAM[cx][i] != null) {
            for (i = 1; VRAM[cx][i + 1] != null && !VRAM[cx][i].IsOpened(); i++) { }
        } else {
            for (i = 20; VRAM[cx][i] == null && VRAM[cx][i - 1] == null; i--) { }
        }
        return i;
    }

    private void ShortCutKey() throws Exception, Error {
        if (HoldCardNum != 0) {
            return;
        }
        if (cy != 0) {
            if (VRAM[cx][cy] == null && VRAM[cx][cy - 1] != null) {
                cy--;
            }
            if (VRAM[cx][cy] != null && CheckRedAndBlack()) {
                int i;
                for (i = cy; VRAM[cx][i + 1] != null; i++) { }
                for (; i >= cy && MoveShortCut(VRAM[cx][i]); i--) {
                    VRAM[cx][i] = null;
                }

            }
        } else
        if (cy == 0 && cx == 1 && card_index != -1 && MoveShortCut(Mountain[card_index])) {
            Mountain[card_index].SetUsed(true);
            MountainNum--;
            if (MountainNum != 0) {
                for (card_index--; card_index >= 0 && Mountain[card_index].IsUsed(); card_index--) { }
                if (card_index == -1) {
                    MountainCtr++;
                }
            } else {
                MountainCtr = 0;
                card_index = -1;
            }
        }
        CheckComplete();
    }

    private boolean MoveShortCut(Card card) {
        int i = card.getType();
        int j = card.getNum();
        if (!card.IsOpened()) {
            return false;
        }
        if (PackNum[i] == 0 && j == 1) {
            Pack[i][0] = card;
            PackNum[i]++;
            Score += 50;
            return true;
        }
        if (PackNum[i] != 0 && Pack[i][PackNum[i] - 1].getNum() == j - 1) {
            Pack[i][PackNum[i]] = card;
            PackNum[i]++;
            Score += 50;
            return true;
        } else {
            return false;
        }
    }

    private void SetHold() throws Exception, Error {
        if (HoldCardNum == 0) {
            if (cy == 0) {
                int i;
                for (i = Mountain.length - 1; i >= 0 && Mountain[i].IsUsed(); i--) { }
                if (cx == 0) {
                    if (MountainNum == 0 || card_index == i && MountainCtr == 0) {
                        String as[] = {
                            "\u653E\u5F03", ""
                        };
                        as[1] = Score + "\u5206\u6570";
                        if (kd.s < Score) {
                            kd.s = Score;
                            RecordStore recordstore = null;
                            try {
                                recordstore = RecordStore.openRecordStore("Klondike", false);
                                byte abyte0[] = new byte[2];
                                abyte0[0] = (byte)(Score >> 8 & 0xff);
                                abyte0[1] = (byte)(Score & 0xff);
                                recordstore.setRecord(1, abyte0, 0, abyte0.length);
                                recordstore.closeRecordStore();
                            }
                            catch (Exception exception) {
                                try {
                                    recordstore.closeRecordStore();
                                }
                                catch (Exception exception1) { }
                            }
                        }
                        PopupBalloon(as, 2000, df);
                        quit = true;
                        return;
                    }
                    if (card_index == -1) {
                        card_index = 0;
                        MountainCtr--;
                    } else {
                        card_index++;
                    }
                    for (; i >= card_index && Mountain[card_index].IsUsed(); card_index++) { }
                    if (i < card_index) {
                        card_index = -1;
                    }
                    undo = true;
                } else
                if (cx == 1 && card_index != -1) {
                    HoldPointY = 0;
                    HoldPointX = 1;
                    HoldCards[0] = Mountain[card_index];
                    Mountain[card_index].SetUsed(true);
                    card_index2 = card_index;
                    HoldCardNum = 1;
                    MountainNum--;
                    if (MountainNum != 0) {
                        for (card_index--; card_index >= 0 && Mountain[card_index].IsUsed(); card_index--) { }
                        if (card_index == -1) {
                            MountainCtr++;
                        }
                    } else {
                        MountainCtr = 0;
                        card_index = -1;
                    }
                }
            } else {
                if (VRAM[cx][cy] == null && VRAM[cx][cy - 1] != null) {
                    cy--;
                }
                if (VRAM[cx][cy] != null) {
                    if (VRAM[cx][cy].IsOpened()) {
                        if (CheckRedAndBlack()) {
                            int j;
                            HoldPointY = j = cy;
                            for (; VRAM[cx][j] != null; j++) {
                                HoldCards[HoldCardNum] = VRAM[cx][j];
                                VRAM[cx][j] = null;
                                HoldCardNum++;
                            }

                            HoldPointX = cx;
                        }
                    } else {
                        VRAM[cx][cy].SetOpened(true);
                        Score += 20;
                    }
                }
            }
        } else
        if (cy == 0) {
            if (cx > 2) {
                int k;
                for (k = HoldCardNum - 1; k >= 0 && MoveShortCut(HoldCards[k]); k--) { }
                HoldCardNum = k + 1;
                CheckComplete();
            } else {
                PutCards(HoldPointX, HoldPointY);
            }
        } else {
            int l;
            for (l = cy; VRAM[cx][l] != null; l++) { }
            if (VRAM[cx][l] == null) {
                if (l == 1) {
                    if (HoldCards[0].getNum() == 13) {
                        PutCards(cx, l);
                    } else {
                        PutCards(HoldPointX, HoldPointY);
                    }
                } else {
                    Card card = VRAM[cx][l - 1];
                    Card card1 = HoldCards[0];
                    if (card.getNum() == card1.getNum() + 1 && (card.IsRed() && card1.IsBlack() || card.IsBlack() && card1.IsRed())) {
                        PutCards(cx, l);
                    } else {
                        PutCards(HoldPointX, HoldPointY);
                    }
                }
                CheckComplete();
            } else {
                PutCards(HoldPointX, HoldPointY);
            }
            for (; VRAM[cx][cy] != null && !VRAM[cx][cy].IsOpened(); cy++) { }
        }
    }

    private void PutCards(int i, int j) {
        if (j != 0) {
            for (int k = 0; k < HoldCardNum; k++) {
                VRAM[i][j + k] = HoldCards[k];
            }

            if (HoldPointY == 0) {

⌨️ 快捷键说明

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