📄 tankgamecanvas.java
字号:
dm.drawImage(g, gm.lgr.imBeamName, (width-gm.lgr.imControlPanl.width)/2+103, (height-gm.lgr.imControlPanl.height)/2+16, 0, 16);
if(TankSprite.CRUSHER_BEAM)
dm.drawImage(g, gm.lgr.imBeamName, (width-gm.lgr.imControlPanl.width)/2+23, (height-gm.lgr.imControlPanl.height)/2+16, 1, 16);
if(TankSprite.HOVER_BEAM)
dm.drawImage(g, gm.lgr.imBeamName, (width-gm.lgr.imControlPanl.width)/2+183, (height-gm.lgr.imControlPanl.height)/2+48, 2, 16);
if(TankSprite.KEY_BEAM)
dm.drawImage(g, gm.lgr.imBeamName, (width-gm.lgr.imControlPanl.width)/2+7, (height-gm.lgr.imControlPanl.height)/2+96, 3, 16);
if(TankSprite.DIVE_BEAM)
dm.drawImage(g, gm.lgr.imBeamName, (width-gm.lgr.imControlPanl.width)/2+183, (height-gm.lgr.imControlPanl.height)/2+64, 4, 16);
if(TankSprite.WALL1_BEAM)
dm.drawImage(g, gm.lgr.imBeamName, (width-gm.lgr.imControlPanl.width)/2+183, (height-gm.lgr.imControlPanl.height)/2+80, 5, 16);
if(TankSprite.WALL2_BEAM)
dm.drawImage(g, gm.lgr.imBeamName, (width-gm.lgr.imControlPanl.width)/2+183, (height-gm.lgr.imControlPanl.height)/2+96, 6, 16);
dm.drawString(g, gm.lgr.imFont, TankSprite.tankHball+"", (width-gm.lgr.imControlPanl.width)/2+80, (height-gm.lgr.imControlPanl.height)/2+174);
dm.drawString(g, gm.lgr.imFont, TankSprite.tankBolt+"", (width-gm.lgr.imControlPanl.width)/2+112, (height-gm.lgr.imControlPanl.height)/2+174);
dm.drawString(g, gm.lgr.imFont, TankSprite.tankMissile+"", (width-gm.lgr.imControlPanl.width)/2+144, (height-gm.lgr.imControlPanl.height)/2+174);
if(timeCnt++%2==0)
switch (Menu.controlActive) {
case Menu.CONTROL_HBALL:
dm.drawImage(g, gm.lgr.imBeamName, (width-gm.lgr.imControlPanl.width)/2+69, (height-gm.lgr.imControlPanl.height)/2+157, 7, 16);
break;
case Menu.CONTROL_BOLT:
dm.drawImage(g, gm.lgr.imBeamName, (width-gm.lgr.imControlPanl.width)/2+101, (height-gm.lgr.imControlPanl.height)/2+157, 7, 16);
break;
case Menu.CONTROL_MISSILE:
dm.drawImage(g, gm.lgr.imBeamName, (width-gm.lgr.imControlPanl.width)/2+133, (height-gm.lgr.imControlPanl.height)/2+157, 7, 16);
break;
}
g.setClip(0, 0, width, height);
}
//游戏信息
public void gameInfo(Graphics g){
int offset=height/40;
g.setClip(0, 0, width, height);
if(TankSprite.isShowMap){
g.drawRGB(gm.lgr.mapArray, 0, Maps.w*LoadGameResource.zoom/2, width-Maps.w*LoadGameResource.zoom/2-offset, offset, Maps.w*LoadGameResource.zoom/2, Maps.h*LoadGameResource.zoom/2, true);
g.drawRect(width-Maps.w*LoadGameResource.zoom/2-offset, offset, Maps.w*LoadGameResource.zoom/2, Maps.h*LoadGameResource.zoom/2);
dm.drawSprite(g, gm.lgr.imWheel, gm.lgr.poit,(Maps.x+gm.lgr.tankSprite.x)*LoadGameResource.zoom/32+width-Maps.w*LoadGameResource.zoom/2-offset, offset+(Maps.y/2+gm.lgr.tankSprite.y)*LoadGameResource.zoom/32);
dm.drawString(g, gm.lgr.imFont, "X:"+(Maps.x+gm.lgr.tankSprite.x), width-gm.lgr.imFont.frameSize*6, height-gm.lgr.imFont.height*2); //显示X轴坐标
dm.drawString(g, gm.lgr.imFont,"Y:"+(Maps.y+gm.lgr.tankSprite.y), width-gm.lgr.imFont.frameSize*6,height-gm.lgr.imFont.height); //显示Y轴坐标
}
if(TankSprite.spriteState==TankSprite.KANE){
dm.drawString(g, gm.lgr.imFont,"G", width/12+1, height/4+8*offset);
dm.drawString(g, gm.lgr.imFont,"U",width/12+1,height/4+8*offset+gm.lgr.imFont.height);
dm.drawString(g, gm.lgr.imFont,"N", width/12+1, height/4+8*offset+gm.lgr.imFont.height*2);
//底纹 黑色
g.setColor(0);
g.fillRect(width/12, height/4, 8, 8*offset);
//填充 白色 显示人物枪状态
g.setColor(255,255,255);
g.fillRect(width/12, height/4+(8-TankSprite.kaneGun)*offset, 8, TankSprite.kaneGun*offset);
//框 灰色
g.setColor(127,127,127);
for(int i=0;i<8;i++){ //
g.drawRect(width/12, height/4+i*offset, 8, offset);
}
}else{
if(TankSprite.HOVER_BEAM){
dm.drawString(g, gm.lgr.imFont, "H", width/12+1, height/4+8*offset);
dm.drawString(g, gm.lgr.imFont, "O",width/12+1,height/4+8*offset+gm.lgr.imFont.height);
dm.drawString(g, gm.lgr.imFont, "V", width/12+1, height/4+8*offset+gm.lgr.imFont.height*2);
//底纹 黑色
g.setColor(0);
g.fillRect(width/12, height/4, 8, 8*offset);
//填充 白色 显示Tank飞行燃料
g.setColor(255,255,255);
g.fillRect(width/12, height/4+(8-TankSprite.tankHov)*offset, 8, TankSprite.tankHov*offset);
//框 灰色
g.setColor(127,127,127);
for(int i=0;i<8;i++){ //
g.drawRect(width/12, height/4+i*offset, 8, offset);
}
}
}
dm.drawString(g, gm.lgr.imFont,"P", width/12+1, height/2+20+8*offset);
dm.drawString(g, gm.lgr.imFont,"O",width/12+1,height/2+20+8*offset+gm.lgr.imFont.height);
dm.drawString(g, gm.lgr.imFont,"W", width/12+1, height/2+20+8*offset+gm.lgr.imFont.height*2);
//底纹
g.setColor(0);
g.fillRect(width/12, height/2+20, 8, 8*offset);
//生命
g.setColor(255,255,255);
g.fillRect(width/12, height/2+20+(8-gm.lgr.tankSprite.pow/2)*offset, 8, gm.lgr.tankSprite.pow/2*offset);
//边框
g.setColor(255,0,0);
for(int i=0;i<8;i++){
g.drawRect(width/12, height/2+20+i*offset, 8, offset);
}
}
public void drawContinue(Graphics g){
g.setColor(0);
g.fillRect(0, 0, width, height);
dm.drawString(g, gm.lgr.imFont, "GAME OVER", width/2-40, height/4);
dm.drawString(g, gm.lgr.imFont, "CONTINUE", width/2-32, height/2-8);
dm.drawString(g, gm.lgr.imFont, "EXIT", width/2-32, height/2+8);
switch(Menu.continueActive){
case Menu.MENU_CONTINUE:
dm.drawSprite(g, gm.lgr.imWheel, gm.lgr.choose,width/4,height/2-8);
break;
case Menu.MENU_EXIT:
dm.drawSprite(g, gm.lgr.imWheel, gm.lgr.choose,width/4,height/2+8);
break;
}
}
public void drawAbout(Graphics g){
addCommand(back);
int menuHeight=gm.lgr.imFont.height;
int menuOffset = (height - menuHeight) / 3;
g.setColor(0);
g.fillRect(0, 0, width, height);
if(gm.isGameStart){
dm.drawString(g, gm.lgr.imFont, "Num2&Up UP", 0, menuHeight*2);
dm.drawString(g, gm.lgr.imFont, "Num8&DOWN DOWN", 0, menuHeight*4);
dm.drawString(g, gm.lgr.imFont, "Num4&LEFT LEFT", 0, menuHeight*6);
dm.drawString(g, gm.lgr.imFont, "Num6&RIGHT RIGHT", 0, menuHeight*8);
dm.drawString(g, gm.lgr.imFont, "Num1 CHANGE", 0, menuHeight*10);
dm.drawString(g, gm.lgr.imFont, "Num3 CONTROLPANEL", 0, menuHeight*12);
dm.drawString(g, gm.lgr.imFont, "Num0 MAPMESSAGE", 0, menuHeight*14);
}else{
dm.drawString(g, gm.lgr.imFont, "All Rights Reserved", (width-8*19)/2, menuOffset + menuHeight * 0);
dm.drawString(g, gm.lgr.imFont, "@ Tile Transpanzer", (width-8*18)/2, menuOffset + menuHeight * 2);
dm.drawString(g, gm.lgr.imFont, "@ author Jjyo", (width-8*13)/2, menuOffset + menuHeight * 4);
dm.drawString(g, gm.lgr.imFont, "@ version 1.0.0", (width-8*15)/2, menuOffset + menuHeight * 6);
dm.drawString(g, gm.lgr.imFont, "@ email jjyo@163.com",(width-8*20)/2, menuOffset + menuHeight *8);
dm.drawString(g, gm.lgr.imFont, "@ Copyright: jjyo (c) 2008", (width-8*26)/2, menuOffset + menuHeight * 10);
}
}
//游戏地图切换效果
public final boolean drawJalousie(Graphics g,int rowNum,int colNum,int RGB,int changeTime,boolean isOpen)
{
g.setColor(RGB);
int cellMaxW = width/colNum;
int cellMaxH = height/rowNum;
int perHalfCellWidthchange = cellMaxW/(2*changeTime);
int perHalfCellHeightchange = cellMaxH/(2*changeTime);
if(perHalfCellWidthchange<1)
perHalfCellWidthchange = 1;
if(perHalfCellHeightchange<1)
perHalfCellHeightchange = 1;
int cellX = 0;
int cellY = 0;
int cellW = 0;
int cellH = 0;
if(isOpen)
{
cellX = cellMaxW/2-timeCnt*perHalfCellWidthchange;
cellY = cellMaxH/2-timeCnt*perHalfCellHeightchange;
cellW = 2*timeCnt*perHalfCellWidthchange;
cellH = 2*timeCnt*perHalfCellHeightchange;
if(cellX <= 0&&cellY <=0)
return true;
}else
{
cellX = timeCnt*perHalfCellWidthchange;
cellY = timeCnt*perHalfCellHeightchange;
cellW = cellMaxW-2*timeCnt*perHalfCellWidthchange;
cellH = cellMaxH-2*timeCnt*perHalfCellHeightchange;
if(cellW <= 0&&cellH <=0)
return true;
}
for(int i=0;i<rowNum;i++)
for(int j=0;j<colNum;j++)
{
g.fillRect(cellX+j*cellMaxW,cellY+i*cellMaxH,cellW,cellH);
}
return false;
}
//进度条
public boolean drawLoading(Graphics g,int RGB,int loadTime,String name){
loadTime-=2;
g.setColor(RGB);
g.fillRect(0, 0, width, height);
dm.drawString(g, gm.lgr.imFont, gm.lgr.map.mapId, width/2-32, 20);
dm.drawString(g, gm.lgr.imFont, "Loading...", width/2-4*10, height / 2 - 25);
g.setColor(255, 255, 255);
g.drawRect(10, height / 2, width - 20, 10);
g.setColor(248, 95, 3);
g.fillRect(10 + 1, height / 2 + 1, timeCnt * (width - 20) / loadTime - 1, 10 - 1);
dm.drawString(g, gm.lgr.imFont, "%"+timeCnt*100/loadTime, width/2-16, height/2+1);
if(timeCnt>=loadTime)
return true;
return false;
}
public void commandAction(Command c, Displayable d) { //实现命令接口
//如果命令是主菜单
if(c==menu){
removeCommand(menu);
addCommand(back); //删除MENU信念,增加BACK命令
//改变游戏状态为菜单状态
GameManage.gameState=GameManage.GAMESTATE_MENU;
gm.menu.initMenu();
}
if(c==back){
removeCommand(back);
//改变游戏状态为游戏状态
if(gm.isGameStart){
GameManage.gameState=GameManage.GAMESTATE_GAMELOOP;
}else{
GameManage.gameState=GameManage.GAMESTATE_MENU;
}
gm.menu.initMenu();
}
}
public void start() {
// TODO Auto-generated method stub
gm.menu.keyAction = 0;
switch (GameManage.gameState) {
case GameManage.GAMESTATE_MENU:
if (GameManage.isVolOn) {
gm.lgr.menuAudio.setLoop();
gm.lgr.menuAudio.play();
}
break;
case GameManage.GAMESTATE_GAMELOOP:
gm.isGameStart=true;
break;
case GameManage.GAMESTATE_PAUSE:
break;
case GameManage.GAMESTATE_CONTINUE:
break;
}
mainThread = new Thread(this);
mainThread.start();
}
public boolean isPressStar = false; //按键是否按下
protected void keyPressed(int keyCode) // 系统的按键按下处理,处理程序感兴趣的按键事件
{
if (GameManage.gameState == GameManage.GAMESTATE_GAMELOOP) {
if (keyCode == Canvas.KEY_STAR) {
if (!isPressStar) {
isPressStar = true;
}
}
}
gm.judgeKeyCode(keyCode, getGameAction(keyCode));
}
protected void keyReleased(int keyCode) // 处理程序感兴趣的按键事件
{
gm.freeKey(keyCode, getGameAction(keyCode));
}
public void stop() {
// TODO Auto-generated method stub
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -