⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tankgamecanvas.java

📁 经典FC游戏《超惑星战记》的J2ME版本!!功能基本上都实现了
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
			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 + -