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

📄 gamecanvas.java

📁 极限运动攀岩 wtk编译就能运行.有详细源码
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
		KeySound	=false;
		soft1Key	=false;
		soft2Key	=false;

//		METHOD_TRACE("WORK OUT");
	}



	//--------------------------------------------------------------------------
	//
	// 绘画处理
	//
	// 绘画处理有跳着走被做,在这里不写操作·移动处理等的事
	//
	//--------------------------------------------------------------------------
	public void paint( Graphics graphics )
	{
		int i,j,k;
		String[] str = new String[7];		// 消息用
		//font = Font.getFont( Font.FACE_MONOSPACE , Font.STYLE_PLAIN, Font.SIZE_SMALL );
		
//		METHOD_TRACE("PAINT IN");
		//----------------------------------------------------------------------
		// 现在是绘画中再paint因为()被叫出了回扣做
		//----------------------------------------------------------------------
		if( sysData[13] != 1 )
			return;
		sysData[13] = 2;

		//----------------------------------------------------------------------
		// 图解拷贝&字体组件
		//
		// 正在复印做画刊
		// 作为一一参数给予的其他的 DrawText() 等
		//----------------------------------------------------------------------
		if( sysData[12] == 0 )
		{
			sysData[12] = 1;
			g = graphics;
			offg.setFont( font );
			g.setFont(font);
			// 过关绘画
			ClearOuterSpace();
		}
		//----------------------------------------------------------------------
		// 变更绘画标准位置
		//
		// translate()现在被设定的坐标
		// 向一旦 (0,0) 回复指定支线
		//----------------------------------------------------------------------
		g.translate( -g.getTranslateX() + midWidth, -g.getTranslateY() + midHeight );

		// 绘画时全面涂抹
		offg.setColor( 0x000000 );
		if( gameData[30] == 3 || gameData[30] == 4 )
			offg.fillRect( 0, 0, 120, 120 );
		offg.setColor( 0x000000 );
		//----------------------------------------------------------------------
		// 游戏内的绘画处理
		//
		//----------------------------------------------------------------------
		// Player 路线上的位置再取得
		if( posX != posX1 || posY != posY1)
		{
			posX1 = posX;
			posY1 = posY;
		}
		posX = (gameData[14]+1)/10;
		posY = (120-gameData[15])/10-1+pMove;

		// 再绘画判定 
		if( gameData[30] == 0 && (posX != posX1 || posY != posY1))
			gameData[30] = 2;
		else if( ifPhone == true )
			gameData[30] = 3;

		switch( gameState )
		{
			//------------------------------------------------------------------
			// 游戏 PLAY 
			//------------------------------------------------------------------
			case 5:
			case 7:
			{
				// 滚动判断
				if( gameData[15] < 40 )
					isMove = 1;

				if( isMove == 1 )
				{
					gameData[30] = 3;
					pMove++;
					if( pMove%7 == 0 )				// 每攀登上7个换下一个场景
					{
						isMove = 0;
						gameData[15] +=10;
					}
					else
						gameData[15] += 10;
					// 全部使用了路线数据的时候
					if( pMove == 147 )
						pMove = 0;
				}

				//	METHOD_TRACE("HOLD DRAW");
				// 支点全体绘画
				if( gameData[30] == 3 || gameData[30] == 4 )
				{
					//	METHOD_TRACE("DRAW34");
					for( i = 0;i < 10; i++)
					{
						for( j = 0;j < 11; j++)
						{
							if( route[j+11*(i+pMove)] < 30 )
								DrawImage( 1+route[j+11*(i+pMove)], j*10, 120-(i+1)*10+1);
							else
								DrawImage( aImage, j*10, 120-(i+1)*10+1);
						}
					}
				}
				// 角色动了的时候的绘画
				else if( gameData[30] == 2 )//gameData[30]控制角色是否动了
				{
					//	METHOD_TRACE("DRAW2");
					for( i = posY-5;i < posY+6; i++)
					{
						for( j = posX-5;j < posX+6; j++)
						{
							if( i > -1+pMove && i < 10+pMove && j > -1 && j < 11 && route[j+11*i] < 30 )
								DrawImage( 1+route[j+11*i], j*10, 120-(i+1-pMove)*10+1);
							else if( i < 10+pMove && i > -1+pMove && j > -1 && j < 11 )
								DrawImage( aImage, j*10, 120-(i+1-pMove)*10+1);
						}
					}
				}


				// METHOD_TRACE("HIGH LIGHT DRAW");
				// 练习 mode 时的最精采部分绘画
				// 跳跃模式时要跳向的支点用蓝色框框表示出来
				if( gameData[30] == 0 && isMove == 0
					&& gameData[19] == 0 && gameState != 7 )
					drawHighlight(posX,posY);			// 滚动,跳跃中不描绘

				// 终点绘画 
				// g.setColor( 0xff0000 );

				offg.setColor( 0xff0000 );
				if( pMove > degree*14 )
				{
					for( i = 0;i < 10;i++)
					{
						if( degree > 0 && route[11*(i+pMove)] == 999 )
						{
 							//g.fillRect(0,DRAW_H-(i+1)*10+7,DRAW_W-11,3);
							offg.fillRect(0,120-(i+1)*10+7,120-11,3);
							DrawImage( 55, 0, 120-(i+1)*10-4);
						}
					}
				}

 				// METHOD_TRACE("BODY DRAW");
				// 手和脚的绘画
				drawHand();
				drawFoot();

				// 头和躯体绘画 
				DrawImage( 31, gameData[14], gameData[15]);
				
				// 极限量和比分高度的绘画处理
				drawChar();

				// 失误画像绘画
				if( count > 33 )
					DrawImage( 47, width/2-midWidth-35, height/2-midHeight-15);

				// 进行动画片
				if( count == 1 )
					count = 2;
				break;
			}
			//------------------------------------------------------------------
			// 游戏过关
			//------------------------------------------------------------------
			case 9:
			{
				// 支点全体绘画
				for( i = 0;i < 10; i++)
				{
					for( j = 0;j < 11; j++)
					{
						if( route[j+11*(i+pMove)] < 30 )
							DrawImage( 1+route[j+11*(i+pMove)], j*10, 120-(i+1)*10+1);
						else
							DrawImage( aImage, j*10, 120-(i+1)*10+1);
					}
				}

				// 终点绘画
 				// g.setColor( 0xff0000 );
				offg.setColor( 0xff0000 );
				for( i = 0;i < 10;i++)
				{
					if( route[11*(i+pMove)] == 999 )
					{
 						// g.fillRect(0,DRAW_H-(i+1)*10+7,DRAW_W-11,3);
						offg.fillRect(0,120-(i+1)*10+7,120-11,3);
						DrawImage( 55, 0, 120-(i+1)*10-4);
					}
				}

				// 手和脚的绘画
				drawHand();
				drawFoot();

				// 头和躯体绘画 
				DrawImage( 31, gameData[14], gameData[15]);

				// 极限量和比分高度的绘画处理
				drawChar();

				// 过关画像绘画
				DrawImage( 42+degree, width/2-midWidth-40,
							height/2-midHeight-20);

				// 完美结局绘画
				if( gameData[28] == 0 )
					DrawImage( 50, midWidth, height/2-midHeight-40 );

				// 如果是最好的时间的话描绘 
				if( BestScore == 1 )
					DrawImage( 49, width/2-midWidth, height/2-midHeight+20 );
				
				break;
			}
			//------------------------------------------------------------------
			// 游戏超过
			//------------------------------------------------------------------
			case 8:
			{
				// 支点全体绘画 
				for( i = 0;i < 10; i++)
				{
					for( j = 0;j < 11; j++)
					{
						if( route[j+11*(i+pMove)] < 30 )
							DrawImage( 1+route[j+11*(i+pMove)], j*10, 120-(i+1)*10+1);
						else
							DrawImage( aImage, j*10, 120-(i+1)*10+1);
					}
				}

				// 终点绘画
 				// g.setColor( 0xff0000 );
				offg.setColor( 0xff0000 );
				for( i = 0;i < 10;i++)
				{
					if( route[11*(i+pMove)] == 999 )
					{
 						// g.fillRect(0,DRAW_H-(i+1)*10+7,DRAW_W-11,3);
						offg.fillRect(0,120-(i+1)*10+7,120-11,3);
						DrawImage( 55, 0, 120-(i+1)*10-4);
					}
				}

				// 手和脚的绘画
				drawHand();
				drawFoot();

				// 头和躯体绘画 
				DrawImage( 31, gameData[14], gameData[15]);

				// 界限表和总谱和高度的绘画处理
				drawChar();

				// 游戏超过画像绘画
				DrawImage( 48, width/2-midWidth-35, height/2-midHeight-15 );
				break;
			}
			//------------------------------------------------------------------
			// LOADING 画面(起动画面)
			//------------------------------------------------------------------
			case 1:
			{
				// 以白为背景
				offg.setColor( 0xeeeeee );
				offg.fillRect( 0, 0, 120, 120 );

				// 文字绘画
				offg.setColor( 0x000000 );
				//DrawText( "NOW LOADING...", 20, 40 );
				DrawText( "正在读取数据......", 20, 40 );
				// 框框绘画 
				offg.setColor( 0x000099 );
				offg.drawRect( 9, 54, 102, 12 );

				// 伸长的酒馆
				offg.setColor( 0x4444ff );
				offg.fillRect( 10, 55, gState, 11 );
				
				//repaint();
				//serviceRepaints();
				break;
			}
			//------------------------------------------------------------------
			// 回主界面 
			//------------------------------------------------------------------
			case 2:
			{
				// 背景绘画 
				for( i = 2;i >= 0;i--)
				{
					DrawImage( 0, i*40, 1);
					DrawImage( 0, i*40, 41);
					DrawImage( 0, i*40, 81);
				}

				// 回主界面画像绘画 
				DrawImage( 63, 0, 5 );

				// 版权画像绘画
				// DrawImage( 60, width/2-midWidth-50, 110);

				// 菜单画像绘画 
				if( gMenu == 0 )
				{
					// 游戏起动右箭形符号绘画
					DrawImage( 60, width/2-midWidth-50, 85);
					DrawImage( 56, width/2-midWidth+50, 95,10,0,10,10);
				}
				else if( gMenu == 1 )
				{
					DrawImage( 62, width/2-midWidth-50, 85);
					DrawImage( 56, width/2-midWidth+50, 95,10,0,10,10);
					DrawImage( 56, width/2-midWidth-60, 95,0,0,10,10);
				}
				else if( gMenu == 2 )
				{
					// 排列次序画像和左箭形符号
					DrawImage( 61, width/2-midWidth-50, 85);
					DrawImage( 56, width/2-midWidth+50, 95,10,0,10,10);
					DrawImage( 56, width/2-midWidth-60, 95,0,0,10,10);
				}
				else if( gMenu == 3 )
				{
					// 排列次序画像和左箭形符号
					DrawImage( 64, width/2-midWidth-50, 85);
					DrawImage( 56, width/2-midWidth-60, 95,0,0,10,10);
				}
				break;
			}
			//------------------------------------------------------------------
			// 路线选择 
			//------------------------------------------------------------------
			case 3:
			{
				// 背景绘画 
				if( gameData[30] == 3 )
				{
					for( i = 2;i >= 0;i--)
					{
							DrawImage( 0, i*40, 21);
							DrawImage( 0, i*40, 61);
							DrawImage( 0, i*40, 81);
					}
				}

				// 路线选择画像绘画 
				DrawImage( 38+degree, width/2-midWidth-35,
							height/2-midHeight-15);

				// 箭形符号表示
				if( degree > 0 )
					DrawImage(56, width/2-midWidth-45, height/2-midHeight-5,0,0,10,10);
				if( degree < 4 && degree <= degree0 )
					DrawImage(56, width/2-midWidth+35, height/2-midHeight-5,10,0,10,10);

				// 如果是完美的话描绘
				if( degree != 0 && aArray[degree-1] == 1 )
					DrawImage( 50, width/2-midWidth-40, height/2-midHeight-35);

				// 界限表和总谱和高度的绘画处理 
				drawChar();
				break;
			}
			//------------------------------------------------------------------
			// 顺序
			//------------------------------------------------------------------
			case 10:
			{
				int min,sec2,sec1,msec2,msec1;
				String title;
				str[0] = "初级";
				str[1] = "中级";
				str[2] = "上级";
				str[3] = "最上级";

				// 背景描画
				for( i = 2;i >= 0;i--)
					for( j = 2;j >= 0;j--)
						DrawImage( 0, i*40, j*40);

				// 回主界面绘画
				title = "最佳成绩";
				i = font.stringWidth(title)/2;
				j = font.getHeight();
 				// g.setColor( 0xffffff );
 				// g.fillRect(sys[SYS_DISP_W]/2-sys[SYS_DRAW_X]-i-1,10,i*2+2,j+1);
 				// g.setColor( 0x000000 );
				offg.setColor( 0xffffff );
				offg.fillRect(width/2-midWidth-i-1,10,i*2+2,j+1);
				offg.setColor( 0x000000 );
				DrawText( title, width/2-midWidth-i, 10+j/8);

				// 顺序数据绘画 
				j = font.stringWidth(str[3]);
				for( i = 0;i < 4;i++)
				{
					min = Score[i]/60000;
					sec2 = (Score[i]-min*60000)/10000;
					sec1 = (Score[i]-min*60000-sec2*10000)/1000;
					msec2 = (Score[i]-min*60000-sec2*10000-sec1*1000)/100;
					msec1 = (Score[i]-min*60000-sec2*10000-sec1*1000-msec2*100)/10;
 					// g.setColor( 0xffffff );
 					// g.fillRect(sys[SYS_DISP_W]/2-sys[SYS_DRAW_X]-54,22+18*(i+1),sys[SYS_DISP_W]/2-sys[SYS_DRAW_X]-54+j,16);
 					// g.setColor( 0x000000 );
					offg.setColor( 0xffffff );
					offg.fillRect(width/2-midWidth-54,22+18*(i+1),width/2-midWidth-54+j,16);
					offg.setColor( 0x000000 );
//					if( phoneid.equals("TS22") == true )
//						DrawText( str[i], width/2-midWidth-51, 23+18*(i+1));
//					else
					DrawText( str[i], width/2-midWidth-51, 24+18*(i+1));
					DrawImage( 54, width/2-midWidth-7, 22+18*(i+1),min*10,0,10,16);
					DrawImage( 54, width/2-midWidth+3, 22+18*(i+1),100,0,10,16);
					DrawImage( 54, width/2-midWidth+8, 22+18*(i+1),sec2*10,0,10,16);
					DrawImage( 54, width/2-midWidth+18, 22+18*(i+1),sec1*10,0,10,16);
					DrawImage( 54, width/2-midWidth+28, 22+18*(i+1),100,0,10,16);
					DrawImage( 54, width/2-midWidth+33, 22+18*(i+1),msec2*10,0,10,16);
					DrawImage( 54, width/2-midWidth+43, 22+18*(i+1),msec1*10,0,10,16);
				}
				break;
			}
			
			//------------------------------------------------------------------
			// 认证处理
			//------------------------------------------------------------------
			case 12:
			{
				// 回主界面窗口 
 				// g.setColor( 0xffffff );
 				// g.fillRect( 0, 0, DRAW_W, DRAW_H );
 				// g.setColor( 0x000000 );
 				// g.drawRect( 1, 2, 117, 115 );
				offg.setColor( 0xffffff );
				offg.fillRect( 0, 0, 120, 120 );
				offg.setColor( 0x000000 );
				offg.drawRect( 1, 2, 117, 115 );

				// 进行认证 
				if( gState == 0 )
				{
					// 回主界面
					str[0] = "检查使用期限";
					// 消息
					str[1] = "现在开始进行会员认证";
					str[2] = "的  ";
					str[3] = "  ";
					str[4] = "  ";
				}

				// 通讯错误 
				else if( gState == 4 )
				{
					// 回主界面
					str[0] = "通讯错误";
					// 消息
					str[1] = "通讯情况确认";
					str[2] = "通讯状况";
					str[3] = "重新启动";
					str[4] = "  ";
				}
				// 比分发送
				else if( gState == 5 )
				{
					//("比分发送2");
					// 回主界面
					str[0] = "比分发送中";
					// 消息
					str[1] = "请稍候";
					str[2] = "给...";
					str[3] = "  ";
					str[4] = "  ";
				}
				// 比分登记完成

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -