📄 gobangcanvas.java
字号:
// 向层里插入棋子颜色的层
Image colorimage = null;
try {
colorimage = Image.createImage("/png/usercolor.png");
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
Image blackimage = Image.createImage(COLOR_WIDTH,COLOR_HEIGHT);
Graphics blackgra = blackimage.getGraphics();
blackgra.drawImage(colorimage,0-COLOR_WIDTH,0,Graphics.TOP|Graphics.LEFT);
blackimage=this.setImageAlph(blackimage,true);
blacksprite = new Sprite(blackimage);
lm.insert(blacksprite,1);
blacksprite.setVisible(false);
blackgra = null;
blackimage = null;
//System.out.println("colorblackimage: "+String.valueOf(gobangcontrol.rt.freeMemory()));
Image whiteimage = Image.createImage(COLOR_WIDTH,COLOR_HEIGHT);
Graphics whitegra = whiteimage.getGraphics();
whitegra.drawImage(colorimage,0,0,Graphics.TOP|Graphics.LEFT);
whiteimage=this.setImageAlph(whiteimage,true);
whitesprite = new Sprite(whiteimage);
lm.insert(whitesprite,1);
whitesprite.setVisible(false);
whitegra= null;
whiteimage = null;
colorimage = null;
gobangcontrol.rt.gc();
//System.out.println("whiteimage: "+String.valueOf(gobangcontrol.rt.freeMemory()));
Graphics gra = null;
//画帮助提示图层
tempimage = Image.createImage(HELP_WIDTH,HELP_HEIGHT); //读取指针图片
gra = tempimage.getGraphics();
gra.setFont(chatfont);
gra.drawString("你可以通过*号键来跳转 ",0,0,Graphics.TOP|Graphics.LEFT);
gra.drawString("各个操作区,#号键来返 ",0,chatfont.getHeight(),Graphics.TOP|Graphics.LEFT);
gra.drawString("回大厅。 ",0,2*chatfont.getHeight(),Graphics.TOP|Graphics.LEFT);
//gra.drawString("你好你好你好士大夫大师傅 ",0,3*chatfont.getHeight(),Graphics.TOP|Graphics.LEFT);
helpsprite = new Sprite(tempimage);
helpsprite.setPosition(HELP_INFO_X,HELP_INFO_Y);
helpsprite.setVisible(true);
helpflag = true;
qipanselectflag = false; //棋盘被不能选种
lm.insert(helpsprite,1);
tempimage = null;
gra = null;
gobangcontrol.rt.gc();
//System.out.println("handimage: "+String.valueOf(gobangcontrol.rt.freeMemory()));
// 插入菜单精灵
Image menuimage = null;
Image menudetailimage=null;
try {
menuimage = Image.createImage("/png/menu.png");
menudetailimage = Image.createImage("/png/gamingmenu.png");
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
//System.out.println("menu: "+String.valueOf(gobangcontrol.rt.freeMemory()));
//插入菜单控件
menucontrol = new MenuControl(menuimage,menudetailimage,MENU_RECT_WIDTH,MENU_RECT_HEIGHT);
menucontrol.init(lm,STATENUM,mainWidth,mainHeight);
menuimage = null;
menudetailimage = null;
//System.out.println("menu: "+String.valueOf(gobangcontrol.rt.freeMemory()));
}
public void init(GobangControl gobangcontrol){
initflag = true;
waitopptimer = 0;
waitoppflag = false;
sendflag = false;
resendflag = 0;
gamestate = USERSIT;
backflag = true;
regetflag = false;
this.gobangcontrol = gobangcontrol;
gameinit();
display = gobangcontrol.getDisplay();
gobangdeal = GobangDeal.getInstance();
maingameevent = gobangcontrol.getMainGameEvent();
commstructnode = maingameevent.getCommNode();
if(commstructnode.getTableSeq() == 0){
usercolor = BLACK_COLOR;
anticolor = WHITE_COLOR;
}
else{
usercolor = WHITE_COLOR;
anticolor = BLACK_COLOR;
}
if(g==null)
g = getGraphics();
gobangdeal.setEventDeal(this);
// presprite.setVisible(false);
// selectsprite.setVisible(false);
// selectsprite.setNewPosition(7,7);
menucontrol.toHide();
usertime = GAME_TIME;
opptime = GAME_TIME;
blacksprite.setVisible(false);
whitesprite.setVisible(false);
displayuserinfo();
displayoppinfo();
qipanselectflag = false;
for(int i=0;i<QIZIWIDTH_IN_TILES;i++){
for(int j=0;j<QIZIHEIGHT_IN_TILES;j++){
chessesflag[i][j]=true;
}
}
operatelayerinit();
helpflag = true;
helpsprite.setVisible(true);
paintCanvas();
gobangcontrol.rt.gc();
display.setCurrent(this);
if(gobangtimer != null){
gobangtimer.ToExit();
gobangtimer = null;
}
gobangtimer = new GobangTimer(this);
gobangtimer.start();
}
private void initother(){//补充初始化
Image tempimage = null;
Graphics gra = null;
//画棋子图层
try {
tempimage = Image.createImage("/png/qizi.png"); //读取棋子图片
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
qizilayer = new TiledLayer(QIZIWIDTH_IN_TILES,QIZIHEIGHT_IN_TILES,tempimage,QIZI_WIDTH,QIZI_HEIGHT);
qizilayer.setPosition(QIZI_X,QIZI_Y);
lm.insert(qizilayer,2); //插入棋子图层
tempimage = null;
//System.out.println("qizi: "+String.valueOf(gobangcontrol.rt.freeMemory()));
//画用户选择框
Image createimage = Image.createImage(QIZI_WIDTH*2+2,QIZI_HEIGHT*2+2);
gra = createimage.getGraphics();
gra.drawRect(0,0,QIZI_WIDTH-1,QIZI_HEIGHT-1);
gra.setStrokeStyle(Graphics.SOLID);
gra.drawRect(QIZI_WIDTH+2,QIZI_HEIGHT+2,QIZI_WIDTH*2,QIZI_HEIGHT*2);
createimage = setImageAlph(createimage,true);
selectsprite = new SelectSprite(createimage,QIZI_WIDTH+1,QIZI_HEIGHT+1);
selectsprite.init(SELECT_FIR_X,SELECT_FIR_Y,QIZI_WIDTH,QIZI_HEIGHT,QIZIWIDTH_IN_TILES,QIZIHEIGHT_IN_TILES);
selectsprite.setVisible(false);
lm.insert(selectsprite,2);
gra = null;
createimage = null;
//System.out.println("userselect: "+String.valueOf(gobangcontrol.rt.freeMemory()));
//前一步棋标志
Image preimage = Image.createImage(QIZI_WIDTH,QIZI_HEIGHT);
gra = preimage.getGraphics();
gra.setColor(255,0,0);
gra.fillArc(3,3,4,4,0,360);
preimage = setImageAlph(preimage,true);
presprite = new SelectSprite(preimage,QIZI_WIDTH,QIZI_WIDTH);
presprite.init(PRE_FIR_X,PRE_FIR_Y,QIZI_WIDTH,QIZI_HEIGHT,QIZIWIDTH_IN_TILES,QIZIHEIGHT_IN_TILES);
lm.insert(presprite,2);
preimage = null;
gra = null;
gobangcontrol.rt.gc();
//System.out.println("preimage: "+String.valueOf(gobangcontrol.rt.freeMemory()));
gobangcontrol.rt.gc();
//画等待其他用户开始提示框
tempimage = Image.createImage(WAIT_WIDTH,WAIT_HEIGHT); //读取指针图片
gra = tempimage.getGraphics();
gra.setFont(chatfont);
gra.drawString("等待其他玩家开始 ",0,0,Graphics.TOP|Graphics.LEFT);
waitsprite = new Sprite(tempimage);
waitsprite.setPosition(WAIT_START_X,WAIT_START_Y);
waitsprite.setVisible(false);
lm.insert(waitsprite,2);
tempimage = null;
gra = null;
//System.out.println("waitotherbegin: "+String.valueOf(gobangcontrol.rt.freeMemory()));
//画等待对家应答提示框
tempimage = Image.createImage(WAIT_WIDTH,WAIT_HEIGHT); //读取指针图片
gra = tempimage.getGraphics();
gra.setFont(chatfont);
gra.drawString("等待对家响应,请稍等! ",0,0,Graphics.TOP|Graphics.LEFT);
waitoppsprite = new Sprite(tempimage);
waitoppsprite.setPosition(WAIT_OPPRESPOND_X,WAIT_OPPRESPOND_Y);
waitoppsprite.setVisible(false);
lm.insert(waitoppsprite,2);
tempimage = null;
gra = null;
gobangcontrol.rt.gc();
//System.out.println("waitrespond: "+String.valueOf(gobangcontrol.rt.freeMemory()));
//插入游戏结束提示图层
Image endimage=null;
try {
endimage = Image.createImage("/png/endimage.png");
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
gameendlayer = new TiledLayer(1,1,endimage,END_WIDTH,END_HEIGHT);
lm.insert(gameendlayer,0);
gameendlayer.setPosition(END_ORIGIN_X,END_ORIGIN_Y);
endimage = null;
//System.out.println("endimage: "+String.valueOf(gobangcontrol.rt.freeMemory()));
//插入询问框
agreencontrol = new ConfirmControl(AGREEN_WIDTH,AGREEN_HEIGHT,MAX_IN_ROW,CONFIRMTYPE);
lm.insert(agreencontrol,0);
agreencontrol.setVisible(false);
//System.out.println("agreencontrol: "+String.valueOf(gobangcontrol.rt.freeMemory()));
//插入确认提示框
promptcontrol = new ConfirmControl(PROMPT_WIDTH,PROMPT_HEIGHT,MAX_IN_ROW,PROMPTTYPE);
lm.insert(promptcontrol,0);
promptcontrol.setVisible(false);
//System.out.println("affirm: "+String.valueOf(gobangcontrol.rt.freeMemory()));
// 画指针图标
try {
tempimage = Image.createImage("/png/mouse.png"); //读取指针图片
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
mousesprite = new MouseSprite(tempimage,HAND_WIDTH,HAND_HEIGHT);
rectinit();
mousesprite.init(chatrect,operaterect,inforect,qipanrect);
lm.insert(mousesprite,0);
tempimage = null;
gobangcontrol.rt.gc();
//System.out.println("hander: "+String.valueOf(gobangcontrol.rt.freeMemory()));
presprite.setVisible(false);
selectsprite.setVisible(false);
selectsprite.setNewPosition(7,7);
mousesprite.setCurrRect(operaterect);
mousesprite.setDisplay();
mousesprite.setVisible(true);
}
// 功能操作菜单标志初始化
public void operateinit(boolean flag){
for(int i = 0; i < OPERATE_WIDTH_TILES; i++){
operateflag[i] = flag;
}
}
//功能操作菜单初始化
private void operatelayerinit(){
operateinit(true);
operatelayer.fillCells(0,0,OPERATE_WIDTH_TILES,1,0);
graylayer.fillCells(0,0,OPERATE_WIDTH_TILES,1,0);
operatelayer.setCell(0,0,5); //开始按键
operatelayer.setCell(1,0,6); //帮助按键
operatelayer.setCell(2,0,7);//返回按键
}
//用户开始后重新设置要显示的功能操作菜单
private void operatelayerstart(){
operateinit(true);
operatelayer.fillCells(0,0,OPERATE_WIDTH_TILES,1,0);
graylayer.fillCells(0,0,OPERATE_WIDTH_TILES,1,0);
operatelayer.setCell(0,0,1); //放弃按键
operatelayer.setCell(1,0,3); //悔棋按键
operatelayer.setCell(2,0,4);//求和按键
operatelayer.setCell(3,0,2);//认输按键
}
// 轮到对家下子功能操作菜单
private void operateoppstart(){
operateinit(true);
operatelayer.fillCells(0,0,OPERATE_WIDTH_TILES,1,0);
graylayer.fillCells(0,0,OPERATE_WIDTH_TILES,1,0);
operatelayer.setCell(0,0,6); //帮助按键
operatelayer.setCell(1,0,8); //聊天按键
operatelayer.setCell(2,0,9);//设置按键
}
private void drawchatinfo(){
chatcontrol = new ChatControl(lm,chatfont,CHATCONTROL_WIDTH,CHATCONTROL_HEIGHT);
chatcontrol.init("你可以通过*号键来切换各个操作区间",CHAT_MAX_ROW,CHAT_MAX_NUM,CHAT_ARRY_NUM);
chatcontrol.setPosition(CHAT_ORIGIN_X,CHAT_ORIGIN_Y);
// chatcontrol.setVisible(true);
chatcontrol.clear();
gobangcontrol.rt.gc();
String contenttemp[] = new String[CHAT_ARRY_NUM];
for(int i=0;i<CHAT_ARRY_NUM-2;i++){
contenttemp[i] = "";
}
contenttemp[0] = "你可以通过*号键来切换各个操作区间";
contenttemp[1] = "欢迎进入五子棋游戏,如您发现游戏有不足的地方请提供宝贵的意见";
chatcontrol.append(contenttemp,1);
contenttemp = null;
}
private void displayuserinfo(){
//显示用户头像
Image userheadimage = null;
try {
if(commstructnode.getPicture().equals("00"))
userheadimage = Image.createImage("/png/boyhead.png");
else
userheadimage = Image.createImage("/png/girlhead.png");
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
if(userheadsprite != null){
lm.remove(userheadsprite);
userheadsprite = null;
}
userheadsprite = new Sprite(userheadimage);
userheadimage = null;
userheadsprite.setPosition(USER_ORIGIN_X,USER_ORIGIN_Y);
lm.insert(userheadsprite,1);
//显示用户的游戏时间
if(timelayer == null){
try {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -