canvas1.java~11~
来自「这是另外一个连连看 是比较早期的作品。。」· JAVA~11~ 代码 · 共 505 行
JAVA~11~
505 行
package game;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import java.io.*;
import javax.microedition.lcdui.Displayable;
import java.io.IOException;
import javax.microedition.lcdui.Font;
public class Canvas1 extends Canvas implements Runnable {
//變量。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
Thread thread1; //創建線程
Image img_buffer; //雙緩沖圖片
Image bG; //背景
int SCx; //屏幕寬
int SCy; //屏幕高
int picW; //小圖片寬
int picH; //小圖片高
int picNum; //小圖片的種類數量
int STATE; //游戲所屬狀態
MIDlet1 MIDlet;
int key; //存儲按鍵
Font font;
public static final int UP = -1;
public static final int DOWN = -2;
public static final int LEFT = -3;
public static final int RIGHT = -4;
public static final int FIRE = -5;
public static final int logo = 1;
public static final int MENU = 2;
public static final int ABOUT = 3;
public static final int LEVEL = 4; //暫未開放
public static final int PLAY = 5;
Tools tool;
Graphics Dg; //雙緩沖畫筆
////////////////////////////////////////////////////////////
//游戲數據變量
int logoCount; //LOGO動畫計時器
int arry[][]; //格子數組
int rectX; //主目錄的選項框坐標
int playX; //游戲中負責選中目標的小框框坐標
int playY; //游戲中負責選中目標的小框框坐標
int oldplayX; //上一個目標的小框框坐標
int oldplayY; //上一個目標的小框框坐標
int color; //目標框的顏色
int oldFlag; //上一個目標框的圖片
int newFlag; //新的目標框圖片(用于判斷是否消去)
boolean showPic; //判斷是否可見(用于判斷是否已消去)
boolean door; //判斷開關
int count; //計時器 具體實現詳見LEVEL函數
int HP;
int aboutPicY;
int speed; //速度(擴展數據)
int level; //難度(擴展數據)
////////////////////////////////////////////////////////////
//游戲圖片
Image logo1;
Image logo2;
Image logoTemp;
Image main;
Image start;
Image about;
Image bar;
Image shuoming;
Image endF;
//.........................游戲小圖片
Image img_2;
Image img_girl;
Image img_haitun;
Image img_huise;
Image img_TT;
Image img_yellow;
////////////////////////////////////////////////////////////////
//...................................構造函數..............................................
public Canvas1(MIDlet1 MIEDlet) {
this.setFullScreenMode(true); //2.0
SCx = this.getWidth(); //為了取整數 所以減去1
SCy = this.getHeight() - picH; //保留屏幕頂端
picW = 15;
picH = 15;
//游戲開始
this.MIDlet = MIEDlet;
thread1 = new Thread(this);
this.tool = new Tools(this);
picNum = 6;
arry = new int[SCx / picW][SCy / picH];
img_buffer = Image.createImage(SCx, SCy);
Dg = img_buffer.getGraphics();
font = Font.getFont(font.FACE_SYSTEM, font.STYLE_BOLD, font.SIZE_LARGE);
////////////////////////////////////////////////////////////////////////////
//游戲數據初始化
STATE = 2;
logoCount = 0;
rectX = 10;
oldFlag = 1;
playX = 1;
playY = 1;
oldplayY = 1;
door = false;
HP = 55;
aboutPicY = SCy;
///////////////////////////////////////////////////////////////////
//游戲圖片初始化
bG = tool.getImage("/pic/backJ.png");
logo1 = tool.getImage("/pic/logo1.png");
logo2 = tool.getImage("/pic/logo2.png");
logoTemp = logo1;
main = tool.getImage("/pic/main.png");
start = tool.getImage("/pic/start.png");
about = tool.getImage("/pic/about.png");
bar = tool.getImage("/pic/bar.png");
// shuoming = tool.getImage("/pic/shuoming.png");
// endF = tool.getImage("/pic/endF.png");
// img_2 = tool.getImage("/pic/2.png");
// img_haitun = tool.getImage("/pic/haitun.png");
// img_huise = tool.getImage("/pic/huise.png");
// img_TT = tool.getImage("/pic/TT.png");
// img_yellow = tool.getImage("/pic/yellow.png");
// img_girl = tool.getImage("/pic/girl.png");
// sound = new SoundPlayer(0);
//
// sound.play();
}
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//自定义函数
void reInt() {
logoCount = 0;
rectX = 10;
oldFlag = 1;
playX = 1;
playY = 1;
oldplayY = 1;
door = false;
HP = 55;
aboutPicY = SCy;
}
void gameInit() { //初始化各自
for (int i = 0; i < SCx / picW; i++) {
for (int j = 1; j < SCy / picH; j++) {
int r = tool.getNumber(1, picNum);
arry[i][j] = r;
// System.out.println("aaaaa" + i + " " + j + " " + arry[i][j]);
}
}
}
void drawPic(Graphics g) {
if (HP <= 0) {
g.drawImage(endF, 20, 50, 20);
}
for (int i = 0; i < SCx / picW; i++) {
for (int j = 1; j < SCy / picH; j++) {
switch (arry[i][j]) {
case 0:
break;
case 1:
g.drawImage(img_2, i * picW, j * picH, 20);
break;
case 2:
g.drawImage(img_haitun, i * picW, j * picH, 20);
break;
case 3:
g.drawImage(img_huise, i * picW, j * picH, 20);
break;
case 4:
g.drawImage(img_TT, i * picW, j * picH, 20);
break;
case 5:
g.drawImage(img_yellow, i * picW, j * picH, 20);
break;
case 6:
g.drawImage(img_girl, i * picW, j * picH, 20);
break;
}
}
}
}
void drawRect(Graphics g) {
g.drawRect(playX * picW, playY * picH, picW, picH);
g.drawRect(oldplayX * picW, oldplayY * picH, picW, picH);
}
void setColor(Graphics g) {
color++;
if (color <= 0) {
g.setColor(0);
} else if (color <= 2) {
g.setColor(0xfffff);
} else if (color <= 4) {
g.setColor(0xffff);
} else if (color <= 6) {
g.setColor(0xfff);
} else if (color <= 8) {
g.setColor(0xff);
} else if (color <= 9) {
g.setColor(0xf);
}
if (color == 10) {
color = 0;
}
}
void panduan(boolean b) {
if (arry[playX][playY] == 0) { //判斷LOCAL是否為空
} else {
newFlag = arry[playX][playY];
if (playX != oldplayX || playY != oldplayY) { //判斷是否為自己點自己
if (newFlag == oldFlag) { //判斷是否相同
arry[playX][playY] = 0;
arry[oldplayX][oldplayY] = 0;
oldplayX = playX;
oldplayY = playY;
HP = 55;
} else {
oldplayX = playX;
oldplayY = playY;
oldFlag = newFlag;
}
}
}
door = false;
}
void level(int speed) {
count++;
if (count == speed) {
HP -= 1;
// System.out.println("aaaaaaaaaaaaaaaaaaaaaa");
count = 0;
}
}
void menuChoice(int keyCode) {
switch (key) {
case KEY_NUM4:
case LEFT:
rectX = 10;
break;
case KEY_NUM6:
case RIGHT:
rectX = 137;
break;
case KEY_NUM5:
case FIRE:
if (rectX == 10) {
STATE = PLAY;
gameInit();
} else {
STATE = ABOUT;
}
break;
}
}
void keyPlay(int key) {
switch (key) {
case KEY_NUM2:
case DOWN:
if (playY != SCy / picH - 1)
playY++;
break;
case KEY_NUM8:
case UP:
if (playY != 1)
playY--;
break;
case KEY_NUM4:
case LEFT:
if (playX != 0)
playX--;
break;
case KEY_NUM6:
case RIGHT:
if (playX != SCx / picW - 1)
playX++;
break;
case KEY_NUM5:
case FIRE:
door = true;
if (HP <= 0) {
STATE = MENU;
reInt();
}
break;
}
}
//啟動線程。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
public void gameStart() {
thread1.start();
}
//////////////////////////////////////////////////////////////////////////////
//邏輯處理
// public static final int logo=1;
// public static final int MENU=2;
// public static final int ABOUT=3;
//public static final int LEVEL=4;//暫未開放
//public static final int PLAY=5;
public void logic() {
switch (STATE) {
case logo:
logoCount++;
if (logoCount == 70) {
logoTemp = logo2;
}
if (logoCount == 120) {
STATE = MENU;
}
break;
case MENU:
break;
case ABOUT:
if (aboutPicY != -175) {
aboutPicY--;
}
break;
case LEVEL:
break;
case PLAY:
level(1);
if (door) {
panduan(door);
}
break;
}
}
/////////////////////////////////////////////////////////////////////////////////
protected void keyPressed(int keyCode) {
//標題畫面操作
key = keyCode;
// switch (key) {
// case KEY_NUM2:case DOWN:
//
// break;
// case KEY_NUM8:case UP:
//
// break;
//
// case KEY_NUM4:case LEFT:
//
// break;
// case KEY_NUM6:case RIGHT:
//
// break;
// case KEY_NUM5:case FIRE:
//
// break;
// }
switch (STATE) {
case logo:
break;
case MENU:
menuChoice(key);
break;
case ABOUT:
if (key == FIRE) {
STATE = PLAY;
}
break;
case LEVEL:
break;
case PLAY:
keyPlay(key);
break;
}
}
protected void keyReleased(int keyCode) {
key = 0;
}
protected void paint(Graphics g) {
Graphics gg = g;
g = Dg;
g.setColor(0xffffff);
g.fillRect(0, 0, SCx, SCy);
/////////////////////////////////////////////////////
switch (STATE) {
case logo:
g.drawImage(logoTemp, 45, 50, 20);
break;
case MENU:
g.setColor(0);
g.drawImage(main, 0, 0, 20);
g.drawImage(about, 137, 10, 20);
g.drawImage(start, 10, 10, 20);
g.drawRect(rectX, 10, start.getWidth(), start.getHeight());
break;
case ABOUT:
g.drawImage(shuoming, 0, aboutPicY, 20);
break;
case LEVEL:
break;
case PLAY:
g.drawImage(bG, 5, 0, 20);
tool.drawPartImage(g, bar, 0, 0, 90, 0, SCx, 14);
tool.drawPartImage(g, bar, 38, 0, 90, 0, SCx, 14);
tool.drawPartImage(g, bar, 76, 0, 90, 0, SCx, 14);
tool.drawPartImage(g, bar, 114, 0, 90, 0, SCx, 14);
tool.drawPartImage(g, bar, 152, 0, 90, 0, SCx, 14);
tool.drawPartImage(g, bar, 20, 0, 15, 0, HP, 14);
drawPic(g);
setColor(g);
drawRect(g);
if (HP <= 0) {
g.drawImage(endF, 20, 50, 20);
}
break;
}
///////////////////////////////////////////////////
g = gg;
g.drawImage(img_buffer, 0, 0, g.TOP | g.LEFT);
}
public void run() {
while (MIDlet.START) {
long start = System.currentTimeMillis();
try {
this.logic();
this.repaint();
this.serviceRepaints();
} catch (Exception e) {
e.printStackTrace();
}
;
long end = System.currentTimeMillis();
if ((70 - (end - start)) > 0) {
try {
thread1.sleep(70 - (end - start));
} catch (InterruptedException ex) {
}
}
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?