📄 gamecanvas.java
字号:
//System.out.println("draw bomb gda.bombing"); imgNum=28; imgY=gda.manBeginY-picsPos[imgNum][4]+1; switch(gda.bombState) { case 0: //System.out.println("draw bomb:0"); for(j=-2;j<3;j++) { g.setClip((i+j)*stepW-bx,imgY,picsPos[imgNum][3],picsPos[imgNum][4]); g.drawImage(midPic,(i+j)*stepW-picsPos[imgNum][1]-bx,imgY-picsPos[imgNum][2], Graphics.TOP|Graphics.LEFT); bombX=ra.nextInt()%4; bombY=ra.nextInt()%8; g.setClip((i+j)*stepW-bx+bombX,imgY-4+bombY,picsPos[imgNum][3],picsPos[imgNum][4]); g.drawImage(midPic,(i+j)*stepW-picsPos[imgNum][1]-bx+bombX,imgY-4-picsPos[imgNum][2]+bombY, Graphics.TOP|Graphics.LEFT); //checkNormalBomb(gda.bombingNu+j); //if(gda.bombingNu+j>0 && gda.bombingNu+j<gda.colNu) { // checkNormalBomb(gda.bombingNu+j); //} } break; case 1: //System.out.println("draw bomb:1"); for(j=-1;j<2;j++) { g.setClip((i+j)*stepW-bx,imgY,picsPos[imgNum][3],picsPos[imgNum][4]); g.drawImage(midPic,(i+j)*stepW-picsPos[imgNum][1]-bx,imgY-picsPos[imgNum][2], Graphics.TOP|Graphics.LEFT); bombX=ra.nextInt()%4; bombY=ra.nextInt()%8; g.setClip((i+j)*stepW-bx+bombX,imgY-4+bombY,picsPos[imgNum][3],picsPos[imgNum][4]); g.drawImage(midPic,(i+j)*stepW-picsPos[imgNum][1]-bx+bombX,imgY-4-picsPos[imgNum][2]+bombY, Graphics.TOP|Graphics.LEFT); //if(gda.bombingNu+j>0 && gda.bombingNu+j<gda.colNu) { // checkNormalBomb(gda.bombingNu+j); //} //checkNormalBomb(gda.bombingNu+j); } bombX=ra.nextInt()%8; bombY=ra.nextInt()%8; g.setClip(i*stepW-bx+bombX-4,imgY-12+bombY,picsPos[imgNum][3],picsPos[imgNum][4]); g.drawImage(midPic,i*stepW-picsPos[imgNum][1]-bx+bombX-4,imgY-12-picsPos[imgNum][2]+bombY, Graphics.TOP|Graphics.LEFT); g.setClip(i*stepW-bx,imgY,picsPos[imgNum][3],picsPos[imgNum][4]); g.drawImage(midPic,i*stepW-picsPos[imgNum][1]-bx,imgY-picsPos[imgNum][2], Graphics.TOP|Graphics.LEFT); bombX=ra.nextInt()%8; bombY=ra.nextInt()%8; g.setClip(i*stepW-bx+bombX+4,imgY-12+bombY,picsPos[imgNum][3],picsPos[imgNum][4]); g.drawImage(midPic,i*stepW-picsPos[imgNum][1]-bx+bombX+4,imgY-12-picsPos[imgNum][2]+bombY, Graphics.TOP|Graphics.LEFT); break; case 2: //System.out.println("draw bomb:2"); g.setClip(i*stepW-bx,imgY,picsPos[imgNum][3],picsPos[imgNum][4]); g.drawImage(midPic,i*stepW-picsPos[imgNum][1]-bx,imgY-picsPos[imgNum][2], Graphics.TOP|Graphics.LEFT); bombX=ra.nextInt()%8; bombY=ra.nextInt()%8; g.setClip(i*stepW-bx+bombX,imgY+bombY,picsPos[imgNum][3],picsPos[imgNum][4]); g.drawImage(midPic,i*stepW-picsPos[imgNum][1]-bx+bombX,imgY-picsPos[imgNum][2]+bombY, Graphics.TOP|Graphics.LEFT); gda.mapData[bi+i][5]=(byte)0xFF; gda.mapData[bi+i][6]=(byte)0xFF; gda.bombing=false; gda.bombState=0; for(j=1;j<4;j++) { if(bi+i+j>0 && bi+i+j<gda.colNu) { gda.checkNormalBomb(bi+i+j); } } break; } } else { //System.out.println("draw bomb at"+(bi+i)); imgNum=gda.mapData[bi+i][5]; imgY=gda.manBeginY-picsPos[imgNum][4]+1; j=gda.bombStatus[bi+i]; if(j==100) { j=3; } if(bi+i+1<gda.colNu-1 && gda.mapData[bi+i][5]==(byte)0x02 && gda.mapData[bi+i+1][5]!=(byte)0xFF) { g.setClip(i*stepW-bx,imgY,picsPos[imgNum][3],picsPos[imgNum][4]); g.drawImage(midPic,i*stepW-picsPos[imgNum][1]-bx-j*16,imgY-picsPos[imgNum][2], Graphics.TOP|Graphics.LEFT); } else { g.setClip(i*stepW-bx,imgY,picsPos[imgNum][3],picsPos[imgNum][4]); g.drawImage(midPic,i*stepW-picsPos[imgNum][1]-bx-j*16,imgY-picsPos[imgNum][2], Graphics.TOP|Graphics.LEFT); } } } } } ///画临时的网格 g.setClip(0,0,128,128); g.setColor(0x00333333); for(i=1;i<16;i++) { g.drawLine(i*8,0,i*8,128); } /////画状态栏 g.setClip(1,4,20,20); g.drawImage(status,1,4,Graphics.TOP|Graphics.LEFT); g.setColor(0x00FF0000); g.setFont(Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_BOLD,Font.SIZE_SMALL)); g.setClip(20,7,20,20); g.drawString("x "+blackMan.manNum,20,7,Graphics.TOP|Graphics.LEFT); g.setClip(38,6,16,16); g.drawImage(status,18,6,Graphics.TOP|Graphics.LEFT); g.setClip(55,7,20,20); g.drawString("x "+blackMan.appleBombNum,55,7,Graphics.TOP|Graphics.LEFT); /////画血槽 i=blackMan.hp/30; for(j=0;j<i;j++) { g.setClip(73+j*5,10,6,7); //g.fillRoundRect(70+j*10,10,10,3,2,2); g.drawImage(status,73+j*5-36,9,Graphics.TOP|Graphics.LEFT); } ////画苹果炸弹爆炸倒计时 if(gda.putBombOk) { g.setColor(0x00FF0000); g.setFont(Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_BOLD,Font.SIZE_SMALL)); i=gda.appleBombX-blackMan.mapPosX/stepW; imgY=gda.manBeginY-picsPos[imgNum][4]+2-15-gda.appleStrY; g.setClip(i*stepW+4,imgY,25,25); g.drawString(""+gda.bombCount,i*stepW+4,imgY,Graphics.TOP|Graphics.LEFT); if(gda.bombCount==0) { //苹果炸弹爆炸 imgNum=28; imgY=gda.manBeginY-picsPos[imgNum][4]+2; i=gda.appleBombX-blackMan.mapPosX/stepW; //PlaySound.bomb(); switch(gda.appleBombState) { case 0: for(j=-1;j<3;j++) { g.setClip((i+j)*stepW-bx,imgY,picsPos[imgNum][3],picsPos[imgNum][4]); g.drawImage(midPic,(i+j)*stepW-picsPos[imgNum][1]-bx,imgY-picsPos[imgNum][2], Graphics.TOP|Graphics.LEFT); bombX=ra.nextInt()%4; bombY=ra.nextInt()%8; g.setClip((i+j)*stepW-bx+bombX,imgY-4+bombY,picsPos[imgNum][3],picsPos[imgNum][4]); g.drawImage(midPic,(i+j)*stepW-picsPos[imgNum][1]-bx+bombX,imgY-4-picsPos[imgNum][2]+bombY, Graphics.TOP|Graphics.LEFT); if(gda.appleBombX+j>0 && gda.appleBombX+j<gda.colNu) { gda.checkAppleBomb(gda.appleBombX+j); } gda.mapData[gda.appleBombX][5]=(byte)0xFF; gda.mapData[gda.appleBombX][6]=(byte)0xFF; } break; case 1: break; case 2: gda.checkAppleBomb(gda.appleBombX); gda.putBombOk=false; gda.bombing=false; gda.mapData[gda.appleBombX][5]=(byte)0xFF; gda.mapData[gda.appleBombX][6]=(byte)0xFF; gda.appleBombState=0; break; } } } ///////////////////////////////////画苹果炸弹 if(showMenuFlag) { drawMenu(g); } ////////////////////////////////// } //end of if(showTitle) } if(showCon==3) { //画过关画面 //g.drawString("hhhhhhhhh",20,50,Graphics.TOP|Graphics.LEFT); //gda.reset(); //showCon=2; drawPass(g); } if(showCon==4) { //画个game over的画面 if(colW<5) { drawPass(g); } else { g.setClip(0,0,srcW,srcH); g.setColor(0x00FFFFFF); g.drawString("失败了,再来一次吧",10,10,Graphics.TOP|Graphics.LEFT); } } if(showCon==5) { //画个通关的画面 if(colW<5) { drawPass(g); } else { g.setClip(0,0,srcW,srcH); g.setColor(0x00FFFFFF); g.drawString("任务完成,厉害",10,10,Graphics.TOP|Graphics.LEFT); } } ///////////////////////////////////////////////////////// } //////////////////////////////////////////////////////////////////////////////////////////////// public void drawMenu(Graphics g) { //画游戏菜单 /////////////////////////////////////////////////////////////////////////////////////////////// myGraphic=g; int i,j; if(showMenuFlag) { //画菜单 g.setClip(10,10,100,100); g.drawImage(grid,10,10,Graphics.TOP|Graphics.LEFT); //g.setColor(0x00AA8800); //g.fillRect(10,10,108,108); if(menuClass==0) { //一级菜单 for(i=0;i<menuStr.length;i++) { if(menuItemId==i) { //g.setColor(0x00222222); g.setClip(10,10+20*i,100,20); g.drawImage(menuItem,10,10+20*i,Graphics.TOP|Graphics.LEFT); } g.setColor(0x000000); g.setClip(10,10+20*i,100,20); g.setFont(Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_PLAIN,Font.SIZE_SMALL)); g.drawString(menuStr[i],10,10+i*20,Graphics.TOP|Graphics.LEFT); } } else { ///二级菜单 switch(menuItemId) { case 1: case 2: showHelp=true; //g.setClip(20,20,136,168); //g.fillRect(20,20,136,168); int tmpX=0,tmpY=0,endX=110,maxLine=5,lineNum=0,lineStep=20; Font ft=Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_PLAIN,Font.SIZE_SMALL); g.setColor(0x00000000); g.setClip(0,0,srcW,srcH); g.setFont(Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_PLAIN,Font.SIZE_SMALL)); for(i=strPointer[page];i<helpStr.length();i++) { if(tmpX>=endX) { tmpX=0; lineNum+=1; if(lineNum>=maxLine) { //helpPageNum+=1; //lineNum=0; strPointer[page+1]=(short)i; //System.out.println("cur helpPageNum"+helpPageNum); break; } //System.out.println("cur helpPageNum"+helpPageNum); } else if(helpStr.charAt(i)=='\n') { tmpX=0; lineNum+=1; if(lineNum>=maxLine) { //helpPageNum+=1; //lineNum=0; strPointer[page+1]=(short)i; //System.out.println("cur helpPageNum"+helpPageNum+"curPage"+page); break; } //System.out.println("cur helpPageNum"+helpPageNum); continue; //if(lineNum>=maxLine) { // strPointer //; } else { if(i>0) { tmpX+=ft.charWidth(helpStr.charAt(i-1))+1; } else { tmpX=ft.charWidth(helpStr.charAt(i)); } } tmpY=lineNum*lineStep; //System.out.println("beginCol"+beginCol+" tmpY"+tmpY+" lineNum"+lineNum+" tmpX"+tmpX); g.drawString(""+helpStr.charAt(i),10+tmpX,10+tmpY+beginCol*lineStep,Graphics.TOP|Graphics.LEFT); //g.drawString("look look hh",35,45,Graphics.TOP|Graphics.LEFT); //替换成写帮助字串 g.drawString("返回...",100,100,Graphics.TOP|Graphics.LEFT); } break; case 3: //sound control g.setColor(0x00FFFFFF); g.setClip(0,0,srcW,srcH); g.setFont(Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_PLAIN,Font.SIZE_SMALL)); g.drawString("音量控制",20,10,Graphics.TOP|Graphics.LEFT); //g.setColor(0x0000FF00); g.drawRect(25,45,80,10); int strollW=100/soundMaxVar*soundVar; g.setColor(0x00CDCDDD); g.fillRect(36,76,strollW-1,9); g.setColor(0x00FFFFFF); g.drawString(soundVar+"/"+soundMaxVar,70,105,Graphics.TOP|Graphics.LEFT); g.drawString("返回...",120,159,Graphics.TOP|Graphics.LEFT); break; } } } ///////////////////////////////////////////////////////////////////////////////////// } public void drawPass(Graphics g) { myGraphic=g; int i; g.setColor(0x00000000); for(i=0;i<32;i++) { g.fillRect(i*4,0,colW,128); } clearKey(); } public void clearKey() { keyup=false; keyup1=false; keydown=false; keydown1=false; keyleft=false; keyleft1=false; keyright=false; keyright1=false; keyfire=false; keyfire1=false; //keyTouched=false; keyRightFunc=false; //右功能键 manWait=false; //走路停止后主角停止休息标记 } public void keyPressed(int keyCode) { //System.out.println("key pressed!"); //clearKey(); keyTouched=true; int action = getGameAction(keyCode); if(keyCode==-7) { keyRightFunc=true; } switch (action) { case UP: keyup=true; keyup1=true; break; case DOWN: keydown=true; keydown1=true; break; case LEFT: keyleft=true; keyleft1=true; break; case RIGHT: keyright=true; keyright1=true; break; case FIRE: keyfire=true; keyfire1=true; break; case KEY_NUM0: break; case KEY_NUM9: } } public void keyReleased(int keyCode) { int action = getGameAction(keyCode); switch (action) { case UP: keyup=false; break; case DOWN: keydown=false; break; case LEFT: keyleft=false; manWait=true; break; case RIGHT: keyright=false; manWait=true; break; case FIRE: keyfire=false; manWait=true; break; case KEY_NUM0: break; case KEY_NUM9: } } public void keyRepeated(int keyCode){ keyPressed(keyCode); } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -