📄 gobanghallcanvas.java
字号:
try {
menuimage = Image.createImage("/png/menu.png");
menudetailimage = Image.createImage("/png/menutemp.png");
} catch (IOException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
if(!inroomflag){
//插入菜单控件
menucontrol = new MenuControl(menuimage,menudetailimage,MENU_RECT_WIDTH,MENU_RECT_HEIGHT);
menucontrol.init(lm,STATE_NUM,mainWidth,mainHeight);
}else{
menucontrol.ReSetImage(menuimage,menudetailimage,MENU_RECT_WIDTH,MENU_RECT_HEIGHT);
menucontrol.init(lm,STATE_NUM,mainWidth,mainHeight);
menucontrol.ReInit();
}
menuimage = null;
menudetailimage=null;
gobangcontrol.rt.gc();
System.out.println("freeMorymenu: "+String.valueOf(gobangcontrol.rt.freeMemory()));
// 插入帮助提示精灵
Image helpimage = Image.createImage(HELP_INFO_WIDTH,HELP_INFO_HEIGHT);
Graphics helpg = helpimage.getGraphics();
//helpg.setFont(infofont);
String helpstr = "您可以通过按 * 号键";
helpg.drawString(helpstr,0,0,Graphics.TOP|Graphics.LEFT);
helpstr = null;
helpstr = "来查看本身的资料。";
helpg.drawString(helpstr,0,infofont.getHeight(),Graphics.TOP|Graphics.LEFT);
helpstr = null;
helpstr = "按#号键来退出房间菜单的操作";
helpg.drawString(helpstr,0,infofont.getHeight()*2,Graphics.TOP|Graphics.LEFT);
helpstr = null;
helpg = null;
//tempimage = setImageAlph(helpimage,false,0xffffffff);
helpsprite = new Sprite(helpimage);
tempimage = null;
helpimage = null;
helpsprite.setPosition(HELPINFO_X,HELPINFO_Y+moveheight);
lm.insert(helpsprite,0);
gobangcontrol.rt.gc();
System.out.println("freeMoryhelp: "+String.valueOf(gobangcontrol.rt.freeMemory()));
}
//描绘大厅里的用户信息
protected void drawhallinfo(){
player = gobangdeal.getPlayerInfo();
int tableid=0;
for(int i = 0;i<=SITCOUNT;i++){
if(!player[i].tableid.equals("")){
tableid = Integer.parseInt(player[i].tableid);
if(player[i].picture.equals("00")){
if(player[i].tableseq.equals("0")){
playersprite[i] = new PlayerSprite(boyimage1,USER_WIDTH,USER_HEIGHT);
playersprite[i].init(PFIR_X,PFIR_Y,tableid,TABLE_WIDTH,TABLE_HEIGHT,
TBWIDTH_IN_TILES,TBHEIGHT_IN_TILES);
}
else{
playersprite[i] = new PlayerSprite(boyimage2,USER_WIDTH,USER_HEIGHT);
playersprite[i].init(PSEC_X,PSEC_Y,tableid,TABLE_WIDTH,TABLE_HEIGHT,
TBWIDTH_IN_TILES,TBHEIGHT_IN_TILES);
}
}
else{
if(player[i].tableseq.equals("0")){
playersprite[i] = new PlayerSprite(girlimage1,USER_WIDTH,USER_HEIGHT);
playersprite[i].init(PFIR_X,PFIR_Y,tableid,TABLE_WIDTH,TABLE_HEIGHT,
TBWIDTH_IN_TILES,TBHEIGHT_IN_TILES);
}
else{
playersprite[i] = new PlayerSprite(girlimage2,USER_WIDTH,USER_HEIGHT);
playersprite[i].init(PSEC_X,PSEC_Y,tableid,TABLE_WIDTH,TABLE_HEIGHT,
TBWIDTH_IN_TILES,TBHEIGHT_IN_TILES);
}
}
lm.insert(playersprite[i],4);
if(player[i].status.equals("02")){ //用户状态为准备好
playersprite[i].nextFrame();
}else if(player[i].status.equals("03")){ //用户状态为正在游戏
int x = (tableid-1)%TBWIDTH_IN_TILES;
int y = (tableid -1)/TBWIDTH_IN_TILES;
gaminglayer.setCell(x,y,1);
}
}
}
display.setCurrent(this);
}
// 描绘大厅里信息的改变(坐下/站起)
protected void modifyhallinfo(){
String temp = maingameevent.getByName("modnum");
int modnum = Integer.parseInt(temp);
int tableid=0;
player = gobangdeal.getPlayerInfo();
if(!player[modnum].userid.equals("")){ //其他用户坐下
playersprite[modnum] = null;
if(!player[modnum].tableid.equals("")){
tableid = Integer.parseInt(player[modnum].tableid);
if(player[modnum].picture.equals("00")){
if(player[modnum].tableseq.equals("0")){
playersprite[modnum] = new PlayerSprite(boyimage1,USER_WIDTH,USER_HEIGHT);
playersprite[modnum].init(PFIR_X,PFIR_Y,tableid,TABLE_WIDTH,TABLE_HEIGHT,
TBWIDTH_IN_TILES,TBHEIGHT_IN_TILES);
}
else{
playersprite[modnum] = new PlayerSprite(boyimage2,USER_WIDTH,USER_HEIGHT);
playersprite[modnum].init(PSEC_X,PSEC_Y,tableid,TABLE_WIDTH,TABLE_HEIGHT,
TBWIDTH_IN_TILES,TBHEIGHT_IN_TILES);
}
}
else{
if(player[modnum].tableseq.equals("0")){
playersprite[modnum] = new PlayerSprite(girlimage1,USER_WIDTH,USER_HEIGHT);
playersprite[modnum].init(PFIR_X,PFIR_Y,tableid,TABLE_WIDTH,TABLE_HEIGHT,
TBWIDTH_IN_TILES,TBHEIGHT_IN_TILES);
}
else{
playersprite[modnum] = new PlayerSprite(girlimage2,USER_WIDTH,USER_HEIGHT);
playersprite[modnum].init(PSEC_X,PSEC_Y,tableid,TABLE_WIDTH,TABLE_HEIGHT,
TBWIDTH_IN_TILES,TBHEIGHT_IN_TILES);
}
}
lm.insert(playersprite[modnum],4);
}
}else{ //其他用户站起
if(playersprite[modnum]!=null){
lm.remove(playersprite[modnum]);
playersprite[modnum] = null;
}
if(player[modnum].status.equals("03")){ //用户在游戏中强退
tableid = Integer.parseInt(player[modnum].tableid);
int x = (tableid-1)%TBWIDTH_IN_TILES;
int y = (tableid-1)/TBWIDTH_IN_TILES;
gaminglayer.setCell(x,y,0);
}
}
}
//房间里其他用户状态的改变(0:准备好、1:开始游戏、2:游戏结束)
private void otherstatusmodfy(int operateid){
String temp = maingameevent.getByName("modnum");
int modnum = Integer.parseInt(temp);
int tableid=0;
player = gobangdeal.getPlayerInfo();
if(!player[modnum].tableid.equals("") && !player[modnum].tableseq.equals("")){
tableid = Integer.parseInt(player[modnum].tableid);
int x = (tableid-1)%TBWIDTH_IN_TILES;
int y = (tableid-1)/TBWIDTH_IN_TILES;
if(operateid == 1){
gaminglayer.setCell(x,y,1);
if(playersprite[modnum]!=null){
if(playersprite[modnum].getFrame() == 1){ //用户1 (桌子左 边)
playersprite[modnum].nextFrame();
}
if(playersprite[modnum+1].getFrame() == 1){//用户2 (桌子右 边)
playersprite[modnum+1].nextFrame();
}
}
}else if(operateid == 2){
gaminglayer.setCell(x,y,0);
if(playersprite[modnum]!=null){
if(playersprite[modnum].getFrame() == 1){//用户1 (桌子左 边)
playersprite[modnum].nextFrame();
}
if(playersprite[modnum+1].getFrame() == 1){//用户2 (桌子右 边)
playersprite[modnum+1].nextFrame();
}
}
}else if(operateid ==0){
if(playersprite[modnum]!=null){
if(playersprite[modnum].getFrame() == 0){
playersprite[modnum].nextFrame();
}
}
}
}
}
public void commandAction(Command arg0, Displayable arg1) {
// TODO 自动生成方法存根
}
// 补充初始化
protected synchronized void keyPressed(int keyCode){
if(initflag){
initother();//补充初始化
initflag = false;
}
if(menucontrol == null){//界面最后一个初始化控件,用来判断界面是否已经完成绘制
return;
}
if(helpsprite != null)
helpsprite.setVisible(false);
if(userinfosprite!=null)
userinfosprite.setVisible(false);
if(otherinfosprite!=null)
otherinfosprite.setVisible(false);
if(myinfoflag){ //判断是否修改资料
int infoaction = getGameAction(keyCode);
if(infoaction == Canvas.FIRE){
gobangcontrol.handleEvent(UniGameEvent.DATAMODIFYREQ,maingameevent);
}else{
handsprite.reflesh();
myinfosprite.setVisible(false);
myinfoflag=false;
}
paintCanvas();
}else{
handsprite.reflesh();
if(myinfosprite!=null){
myinfosprite.setVisible(false);
}
if(keyCode == 42){//*号键
displayMYINFO(handsprite.getTableid(),handsprite.getTableseq());
paintCanvas();
}else if(keyCode == 35){//#号键 退出房间
sendflag = true;
gobangdeal.getExitRoom(maingameevent.getCommNode());
}
if(menucontrol != null){
if(menucontrol.getvisibleflag()){
menurespond(keyCode); //对游戏菜单操作
}
else{
hallrespond(keyCode); //对大厅操作
}
}
}
//if(keyCode == 21||keyCode == -6){ //左恻软件 显示操作菜单
if(keyCode == 21||keyCode == -21){ //左恻软件 显示操作菜单
if(menucontrol != null){
if(menucontrol.getvisibleflag()){
menucontrol.toHide();
handsprite.setVisible(true);
}
else{
myinfoflag = false;
handsprite.setVisible(false);
menucontrol.toShow();
}
}
paintCanvas();
}
}
// 对游戏菜单响应用户按键操作
public void menurespond(int keyCode){
boolean repaintflag = true;
int action = getGameAction(keyCode);
switch(action)
{
case Canvas.UP :
menucontrol.toUp();
break ;
case Canvas.DOWN :
menucontrol.toDown();
break ;
case Canvas.FIRE:
switch(menucontrol.getmenustate()){
case EXITMENU:
handsprite.setVisible(true);
menucontrol.toHide();
break;
case MYINFO:
displayMYINFO(handsprite.getTableid(),handsprite.getTableseq());
break;
case HELP:
if(menucontrol.getvisibleflag()){
menucontrol.toHide();
handsprite.setVisible(true);
}
helpsprite.setVisible(true);
break;
case EXITROOM:
sendflag = true;
gobangdeal.getExitRoom(maingameevent.getCommNode());
break;
case EXITGAME:
sendflag = true;
gobangdeal.ExitGame(maingameevent.getCommNode().getUserId());
gobangcontrol.handleEvent(GobangEvent.MAINGAMEEXIT,maingameevent);
break;
default:
break;
}
}
if(repaintflag)
paintCanvas();
}
//根据按键对大厅进行操作
public void hallrespond(int keyCode){
boolean repaintflag = true;
int tableid =0;
int tableseq = 0;
int action = getGameAction(keyCode);
switch(action)
{
case Canvas.UP :
handsprite.NextPosition(0);
displayuserinfo(handsprite.getTableid(),handsprite.getTableseq());
if(handsprite.getY()>yViewWindow){
break;
}
moveheight = moveheight - TABLE_HEIGHT;
menucontrol.ResetPosition(0-TABLE_HEIGHT,0);
yViewWindow=yViewWindow - TABLE_HEIGHT;
helpsprite.setPosition(HELPINFO_X,HELPINFO_Y+moveheight);
lm.setViewWindow(xViewWindow, yViewWindow, wViewWindow, hViewWindow);
break ;
case Canvas.DOWN :
handsprite.NextPosition(1);
displayuserinfo(handsprite.getTableid(),handsprite.getTableseq());
if(handsprite.getY()-yViewWindow > mainHeight-TABLE_HEIGHT/2){
if(yViewWindow+mainHeight+BGTILE_HEIGHT>BG_HEIGHT){
break;
}
moveheight = moveheight + TABLE_HEIGHT;
menucontrol.ResetPosition(TABLE_HEIGHT,0);
helpsprite.setPosition(HELPINFO_X,HELPINFO_Y+moveheight);
yViewWindow=yViewWindow + TABLE_HEIGHT;
lm.setViewWindow(xViewWindow, yViewWindow, wViewWindow, hViewWindow);
}
break ;
case Canvas.LEFT :
handsprite.NextPosition(2);
displayuserinfo(handsprite.getTableid(),handsprite.getTableseq());
break ;
case Canvas.RIGHT :
handsprite.NextPosition(3);
displayuserinfo(handsprite.getTableid(),handsprite.getTableseq());
break ;
case Canvas.FIRE:
if(handsprite.getSelectFlag()){ //还未按下选择键
handsprite.setSelect();
tableid = handsprite.getTableid();
tableseq = handsprite.getTableseq();
int sitnum = tableid*2-1+tableseq;
if(!player[sitnum].userid.equals("")){ //判断座位上是否有人
//有人,取该用户的详细信息
sendflag = true;
gobangdeal.getPlayerDetail(maingameevent.getCommNode().getUserId(),player[sitnum].userid);
}else{//没人,用户自己坐下
sendflag = true;
gobangdeal.setSitRequest(commstructnode.getUserId(),commstructnode.getRoomId(),
String.valueOf(tableid),String.valueOf(tableseq));
}
}else{
repaintflag = false;
}
break;
default:
repaintflag = false;
break;
}
if(repaintflag){
paintCanvas();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -