📄 main.java
字号:
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 + -