package shaoqingshan.yx;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.Graphics;
import shaoqingshan.comm.*;
import java.util.Random;
import java.util.Vector;
public class FrmMain extends GameCanvas implements Runnable {
private Thread thread;
private Graphics graphics;
private Board[][] board = new Board[9][9];
private Board[] cboard = new Board[9];
private Random random = new Random();
private Board activeBoard = new Board(); //已经选择的图
private Board moveBoard = new Board(); //正在经过的图
private int gameState; //游戏状态0未运行 1正在进行 2游戏结束 3退出
private boolean runPro = false;
private int score = 0;
private Vector v_path = null;// new Vector(); //路径
private String title = " 五子连 测试版 qingshan@gmail.com ";
private int title_tag = 0;
private Board[] nextimg = new Board[3];
private menu menu_ = null;
private CheckMenu checkMenu = new CheckMenu();
class CheckMenu implements iCheckCallBack {
public void disposal(String command) {
if (command.equals("重新开始")) {
init();
} else if (command.equals("读档")) {
String s = file.read("wzl");
int l=0;
if (s != null){
for (int i = 0; i < board.length; i++) {
for (int j = 0; j < board[i].length; j++) {
board[i][j].setImg(Integer.parseInt(s.substring(l++,l)));
}
}
}
score = Integer.parseInt(s.substring(l));
refurbish();
} else if (command.equals("存档")) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < board.length; i++) {
for (int j = 0; j < board[i].length; j++) {
sb.append(board[i][j].getImg());
}
}
sb.append(score);
file.write("wzl",sb.toString());
refurbish();
} else if (command.equals("退出")) {
gameState = 3;
sx.quitApp();
}else if (command.equals("返回")){
keyPressed(device.RIGHT_PRESSED);
return;
}else{
refurbish();
}
runPro = true;
menu_.remove();
menu_ = null;
}
}
class Board {
public int tag;
public int px;
public int py;
public int x;
public int y;
public int pathDirection = -1; //连接下一节点的方向 0上 1右 2下 3左
public Board chardBoard = null;
public Board parentBoard = null;
public Board getNextBoard() {
Board r = null;
if (chardBoard != null) return null;
if (pathDirection > 4){
System.out.println("getNextBoard error");
return null;
}
pathDirection++;
switch (pathDirection) {
case 0:
if ((py > 0) && (board[px][py - 1].img == 0) && (board[px][py - 1].chardBoard == null)&&(!board[px][py - 1].equals(parentBoard))) {
r = board[px][py - 1];
} else {
r = getNextBoard();
}
break;
case 1:
if ((px < 8) && (board[px + 1][py].img == 0) && (board[px + 1][py].chardBoard == null)&&(!board[px + 1][py].equals(parentBoard))) {
r = board[px + 1][py];
} else {
r = getNextBoard();
}
break;
case 2:
if ((py < 8) && (board[px][py + 1].img == 0) && (board[px][py + 1].chardBoard == null)&&(!board[px][py + 1].equals(parentBoard))) {
r = board[px][py + 1];
} else {
r = getNextBoard();
}
break;
case 3:
if ((px > 0) && (board[px - 1][py].img == 0) && (board[px - 1][py].chardBoard == null)&&(!board[px - 1][py].equals(parentBoard))) {
r = board[px - 1][py];
} else {
r = getNextBoard();
}
break;
default:
break;
}
if (r != null){
chardBoard = r;
chardBoard.parentBoard = this;
}
return r;
}
private int img = 0;
private int color = 0xFFFFFF;
public int getImg() {
return img;
}
public void setImg(int value) {
img = value;
switch (img) {
case 1:
color = 0x0000ff;
break;
case 2:
color = 0x00ff00;
break;
case 3:
color = 0xff0000;
break;
case 4:
color = 0x0099ff;
break;
case 5:
color = 0xff9900;
break;
case 6:
color = 0xff0099;
break;
default:
color = 0xffffff;
break;
}
}
public void print() {
graphics.setColor(color);
graphics.fillRect(x + 2, y + 2, device.BOARD_SPACE - 3,
device.BOARD_SPACE - 3);
graphics.setColor(0);
//if (img > 0)
// graphics.drawString(Integer.toString(img), x + 6, y + 2, 0);
graphics.setColor(0xffffff);
graphics.drawRect(x + 1, y + 1, device.BOARD_SPACE - 2,
device.BOARD_SPACE - 2);
}
public void printselect(boolean s) {
print();
if (s) {
graphics.setColor(0xff0000);
graphics.drawRect(x + 1, y + 1, device.BOARD_SPACE - 2,
device.BOARD_SPACE - 2);
} else {
graphics.setColor(0x00ff00);
graphics.drawRect(x + 1, y + 1, device.BOARD_SPACE - 2,
device.BOARD_SPACE - 2);
}
}
public void printmovein() {
graphics.setColor(0x0);
graphics.drawRect(x + 1, y + 1, device.BOARD_SPACE - 2,
device.BOARD_SPACE - 2);
}
public Board() {
}
}
public FrmMain() {
super(false);
thread = new Thread(this);
thread.start();
this.setFullScreenMode(true);
}
public void keyPressed(int keyCode) {
if (keyCode == device.RIGHT_PRESSED) {
String[] s = new String[5];
s[0] = "重新开始";
s[1] = "存档";
String re = file.read("wzl");
if (re == null){
s[2] = "读档(无档)";
}else{
s[2] = "读档";
}
s[3] = "返回";
s[4] = "退出";
if (menu_ == null) {
menu_ = new menu(s, checkMenu, graphics, this);
runPro = false;
} else {
menu_.remove();
menu_ = null;
refurbish();
runPro = true;
}
//弹出菜单
} else {
if (menu_ == null && gameState != 2) {
if (checkGameIsOver())return;
int gamekeyCode = getGameAction(keyCode);
int x = 0;
int y = 0;
if (moveBoard
没有合适的资源?快使用搜索试试~ 我知道了~
j2me游戏 五子行
共130个文件
png:12个
jpg:12个
class:11个
需积分: 3 11 下载量 11 浏览量
2008-05-14
14:43:47
上传
评论
收藏 629KB RAR 举报
温馨提示
j2me游戏 五子行 源码 k750
资源推荐
资源详情
资源评论
收起资源包目录
j2me游戏 五子行 (130个子文件)
FrmMain.class 13KB
menu.class 3KB
FrmMain$Board.class 3KB
file.class 3KB
FrmMain$CheckMenu.class 3KB
Dijkstra.class 3KB
WeightedGraph.class 2KB
menu$MenuItem.class 2KB
sx.class 1000B
device.class 649B
iCheckCallBack.class 170B
shaoqingshan.comm.dep2 6KB
shaoqingshan.yx.dep2 5KB
FrmMain.html 454B
wzl.jad 242B
sx.jad 35B
wzl.jar 20KB
FrmMain.java 23KB
menu.java 4KB
WeightedGraph.java 3KB
Dijkstra.java 3KB
file.java 2KB
sx.java 596B
device.java 543B
iCheckCallBack.java 111B
device.java~10~ 501B
device.java~10~ 353B
FrmMain.java~1161~ 23KB
FrmMain.java~1162~ 23KB
FrmMain.java~1163~ 23KB
FrmMain.java~1164~ 23KB
FrmMain.java~1165~ 23KB
FrmMain.java~1166~ 23KB
FrmMain.java~1167~ 23KB
FrmMain.java~1168~ 23KB
FrmMain.java~1169~ 23KB
FrmMain.java~1170~ 23KB
device.java~11~ 544B
device.java~12~ 545B
device.java~13~ 541B
menu.java~1~ 4KB
WeightedGraph.java~1~ 3KB
frmMain.java~1~ 1KB
Displayable1.java~1~ 829B
sx.java~1~ 601B
sx.java~1~ 589B
device.java~1~ 121B
iCheckCallBack.java~1~ 105B
Dijkstra.java~26~ 2KB
Dijkstra.java~27~ 2KB
Dijkstra.java~28~ 2KB
Dijkstra.java~29~ 2KB
menu.java~2~ 4KB
sx.java~2~ 607B
frmMain.java~2~ 121B
device.java~2~ 121B
iCheckCallBack.java~2~ 106B
Dijkstra.java~30~ 2KB
Dijkstra.java~31~ 3KB
Dijkstra.java~32~ 3KB
Dijkstra.java~33~ 3KB
Dijkstra.java~34~ 3KB
Dijkstra.java~35~ 3KB
menu.java~3~ 4KB
sx.java~3~ 611B
device.java~3~ 192B
frmMain.java~3~ 164B
iCheckCallBack.java~3~ 108B
file.java~42~ 2KB
file.java~43~ 2KB
file.java~44~ 2KB
file.java~45~ 3KB
file.java~46~ 3KB
file.java~47~ 3KB
file.java~48~ 3KB
file.java~49~ 2KB
menu.java~4~ 4KB
sx.java~4~ 609B
device.java~4~ 423B
device.java~4~ 244B
iCheckCallBack.java~4~ 113B
file.java~50~ 2KB
file.java~51~ 2KB
menu.java~5~ 4KB
device.java~5~ 788B
sx.java~5~ 593B
device.java~5~ 423B
menu.java~6~ 4KB
device.java~6~ 792B
sx.java~6~ 587B
device.java~6~ 439B
menu.java~7~ 4KB
device.java~7~ 796B
device.java~7~ 458B
device.java~8~ 828B
device.java~8~ 462B
device.java~9~ 462B
device.java~9~ 256B
a12.jpg 9KB
a3.jpg 9KB
共 130 条
- 1
- 2
资源评论
iotrue
- 粉丝: 6
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功