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

📄 gamecanvas.java

📁 极限运动攀岩 wtk编译就能运行.有详细源码
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
		if( degree == 0 )
			k = 1;
		else if( degree == 4 )
			k = 3;
		else
			k = degree;

		// 支点作成
		for(i = 0;i < 207;i++)
		{
			// 逆时针转支点配置
			if( (random1.nextInt()>>>1)%2 == 0 )
			{
				for(j = 0;j < 8;j++)
				{
					// 生成支点及空白
					l = (random1.nextInt()>>>1)%(3*k+38);
					if(l < 30 )
						route[i*3+(i/4)*21+12+a[j]] = l;
					else
						route[i*3+(i/4)*21+12+a[j]] = 255;
				}
			}
			// 右旋转支点配置
			else
			{
				for(j = 7;j >= 0;j--)
				{
					// 生成支点及空白
					l = (random1.nextInt()>>>1)%(3*k+35);
					if(l < 30 )
						route[i*3+(i/4)*21+12+a[j]] = l;
					else
						route[i*3+(i/4)*21+12+a[j]] = 255;
				}
			}
		}

		// 在最初时右手抓住的位置
		route[39] = (random1.nextInt()>>>1)%30;
 		// METHOD_TRACE("MAKE COURCE OUT");
	}

	//------------------------------------------------------------------------------
	//
	// 抓住支点的 catchHold()
	//
	//------------------------------------------------------------------------------
	private final int catchHold()
	{
 		// METHOD_TRACE("CATCH HOLD");
		int k,temp = 0;

		// 核对操作中的手
		if( gameData[16] == 0 )
			k = -1;
		else
			k = 1;

		// 被捉住的事完成的支点核对
		//posY+1 < 10+pMove对角色位置的判断
		//route[posX+k+11*(posY+1)] < 30判断是否有支点可以抓住
		//gameData[9] == 2判断运动方向(上下左右)
		//count2 == 0判断是否已经在运动中
		if( posY+1 < 10+pMove && route[posX+k+11*(posY+1)] < 30 //&& (gridx-1 > -1 || gridx+1 < 11)
			&& gameData[9] == 2 && count2 == 0 )
		{
			// 上
			gameData[15]-=5;
			count2 = 1;
			temp = 0;
 			// height+=250;
		}
		else if( (posX-2 > -1 || posX+2 < 11) && route[posX+2*k+11*posY] < 30
				&& gameData[9] == 4 && count2 == 0 )
		{
			// 中
			gameData[14]+=5*k;
			count2 = 1;
			temp = 0;
		}
		else if( (posX-2 > -1 || posX+2 < 11) && posY-1 > -1+pMove && route[posX+2*k+11*(posY-1)] < 30
				&& gameData[9] == 6 && posY > 3 && count2 == 0 )
		{
			// 下
			gameData[14]+=5*k;
			gameData[15]+=5;
			count2 = 1;
			temp = 0;
 			// height-=250;
		}
		else if( gameData[9] == 0
				&& ((k==-1 && posX < 9) || (k==1 && posX > 1))
				&& count2 == 0 )
		{
			// 自由手
			if( count == 2 || count == 4 )
				gameData[14]-=10*k;
			if( count == 2 && k == -1)
				rightHand = 7;
			else if( count == 2 && k == 1)
				leftHand = 7;
			if( count == 4 )
				gameData[18] = 1;
			count++;
			temp = 5;
		}
		else if( count2 == 0 )
		{
			count = 5;
		}

		if( count2 == 3 )
		{
			if( gameData[9] == 2 )
			{
				// 上
				gameData[15]-=5;
				gameData[18] = 1;
				gameData[17] = route[posX+k+11*(posY+1)]%10;
				temp = 0;
				pHeight+=500;
			}
			else if( gameData[9] == 4 )
			{
				// 中
				gameData[14]+=5*k;
				gameData[18] = 1;
				gameData[17] = route[posX+2*k+11*posY]%10;
				temp = 0;
			}
			else if( gameData[9] == 6 )
			{
				// 下
				gameData[14]+=5*k;
				gameData[15]+=5;
				gameData[18] = 1;
				gameData[17] = route[posX+2*k+11*(posY-1)]%10;
				temp = 0;
				pHeight-=500;
			}
		}

		// 手足的换入新品和极限量规的恢复
		if( gameData[18] == 1 )//count2=2或者count=4时
		{
			// 时间点数开始
			if( timeSet == 0)
				timeSet = 1;

			gameData[18] = 0;
			if( k == -1 )
			{
				gameData[16] = 1;
				leftHand = 0;
				rightHand = 0;
				leftFoot = 2;
				rightFoot = 0;
				gameData[9] = rightHand;
			}
			else
			{
				gameData[16] = 0;
				rightHand = 0;
				leftHand = 0;
				leftFoot = 0;
				rightFoot = 2;
				gameData[9] = leftHand;
			}
			count2 = 0;//如果count2=2就恢复为0
			gMax1 = gMax2;
			if( temp == 0 )
				gameData[30] = 2;
			else
				gameData[30] = 3;
			count = 0;
			if( (random1.nextInt()>>>1)%50 == 0 )
				rValue = 3+temp;
			else
				rValue = 0+temp;
			//("CATCH HOLD");
			return 2;
		}

		//("NOT CATCH HOLD");
		if( count > 4 )
		{
			count = 0;
			// 到基本状态返还手的状态
			gameData[9] = 0;
			if( k == -1 )
				leftHand = 0;
			else
				rightHand = 0;
		}
		return 2;

 		// METHOD_TRACE("CATCH HOLD END");
	}

	//------------------------------------------------------------------------------
	//
	// 跳跃处理 jumpAction()
	//
	//------------------------------------------------------------------------------
	private static final int jumpAction()
	{
 		// METHOD_TRACE("JUMP ACTION IN");
		int k;

		if( gameData[16] == 0 )
			k = -1;
		else
			k = 1;

		// 在游戏中跳跃做
		// 以跳跃被捉住的事完成的支点
		if( posX+k>-1 && posX+k<11 && posY+3 < 10+pMove && route[posX+k+11*(posY+3)] < 30
			&& gameData[9] == 2 )
		{
			// 上
			gameData[19] = 1;
			gameData[17] = route[posX+k+11*(posY+3)]%10;
 			// height+=1500;
			count = 20;
			gameData[18] = 0;
		}
		else if( posX+3*k>-1 && posX+3*k<11 && posY+2 < 10+pMove&& route[posX+3*k+11*(posY+2)] < 30
			&& gameData[9] == 4 )
		{
			// 中
			gameData[19] = 1;
			gameData[17] = route[posX+3*k+11*(posY+2)]%10;
 			// height+=1000;
			count = 20;
			gameData[18] = 0;
		}
		else if( posX+3*k>-1 && posX+3*k<11 && posY-2 > -1+pMove && route[posX+3*k+11*(posY-2)] < 30
			&& gameData[9] == 6 && posY > 4)
		{
			// 下
			gameData[19] = 1;
			gameData[17] = route[posX+3*k+11*(posY-2)]%10;
 			// height-=1000;
			count = 20;
			gameData[18] = 0;
		}

		// 左右的手臂交替
		if( gameData[19] == 1)
		{
			// 时间点数开始
			if( timeSet == 0)
				timeSet = 1;

 			// game[GAME_LIMIT_GAGE] -= game[GAME_LIMIT_GAGE]/2;
 			// game[GAME_LIMIT_MAX] -= game[GAME_LIMIT_MAX]/10;
			gMax1 -= gMax1/(degree/3+2)+(7-degree);
			gMax2 -= gMax2/(8+degree/2)+(5-degree);

			if( k == -1 )
			{
				leftFoot = 0;
				rightFoot = 2;
			}
			else
			{
				leftFoot = 2;
				rightFoot = 0;
			}
			//("JUMP ACTION");
			return 2;
		}
		//("NOT JUMP ACTION");
		count = 0;
		gameData[9] = 0;
		if( k == -1 )
			leftHand = 0;
		else
			rightHand = 0;
		return 2;

	}

	//------------------------------------------------------------------------------
	//
	// 跳跃动画片 jumpAnimation()
	//
	//------------------------------------------------------------------------------
	private static final void jumpAnimation()
	{
 		// METHOD_TRACE("JUMP ANIME IN");
		int k;

		if( gameData[16] == 0 )
			k = -1;
		else
			k = 1;

		// 手的处理
		// 向上
		if( gameData[9] == 2 )
		{
			gameData[15]-=6;
			pHeight+=300;
			count++;
		}
		// 中
		else if( gameData[9] == 4 )
		{
			gameData[14]+=4*k;
			gameData[15]-=4;
			pHeight+=200;
			count++;
		}
		// 下
		else if( gameData[9] == 6 )
		{
			gameData[14]+=4*k;
			gameData[15]+=4;
			pHeight-=200;
			count++;
		}

		// 要在目标支点位置抓住的状态
		if( count == 25 )
		{
			if( k == -1 )
			{
				gameData[16] = 1;
				rightHand = 0;
				leftHand = 0;
				gameData[9] = rightHand;
			}
			else
			{
				gameData[16] = 0;
				leftHand = 0;
				rightHand = 0;
				gameData[9] = leftHand;
			}
			gameData[19] = 0;
			gameData[18] = 0;
			gameData[30] = 2;
			count = 0;
			// random追加极限量规减少量
			if( (random1.nextInt()>>>1)%30 == 0 )
				rValue = 3;
			else
				rValue = 0;
		}

 		// METHOD_TRACE("JUMP ANIME OUT");
	}


	//--------------------------------------------------------------------------
	//
	// 回复到回主界面
	//
	//
	//--------------------------------------------------------------------------
	private final void backTitle()
	{
		// 返回回主界面画面
		gameState = 2;
		gameData[30] = 3;
		InitGame();
		//sound.Play( 0, 2);
		for(int i=49;i>0;i--)
			cImage[i] =null;
		try
		{
		cImage[60] = Image.createImage( "/" + 60 + ".png" );
		cImage[61] = Image.createImage( "/" + 61 + ".png" );
		cImage[62] = Image.createImage( "/" + 62 + ".png" );
		cImage[63] = Image.createImage( "/" + 63 + ".png" );
		cImage[64] = Image.createImage( "/" + 64 + ".png" );
		}
		catch(Exception e)
		{
		}
		SetSoftLabel("开始","");
		//setCommandListener(null);
		Counter2 = Counter1;
	}

	//--------------------------------------------------------------------------
	//
	// 绘画
	//
	//--------------------------------------------------------------------------

	//--------------------------------------------------------------------------
	//
	// 太文字版 drawString()
	//
	// ○ Arg1:角色串
	// ○ Arg2:位置
	// ○ Arg3:位置Y
	//
	//--------------------------------------------------------------------------
	private static final void DrawText( String Str, int Str_X, int Str_Y )
	{
        // g.drawString( Str, Str_X, Str_Y, g.LEFT | g.TOP );
        offg.drawString( Str, Str_X, Str_Y, offg.LEFT | offg.TOP );
	}

	//--------------------------------------------------------------------------
	//
	// drawImage() 折叠(全体转送)
	//
	// 描绘对象的全体的时使用
	//
	// ○ Arg1:绘画的印象
	// ○ Arg2 :描绘印象的位置 X
	// ○ Arg3 :描绘印象的位置 Y
	// ○ Arg4 :绘画对象
	//
	//--------------------------------------------------------------------------
	public static final void DrawImage( int No, int x, int y)//, Graphics gx )
	{
 		// g.setClip( 0, 0, DRAW_W, DRAW_H );
 		// g.drawImage( img[No], x, y, g.LEFT | g.TOP );
		offg.drawImage( cImage[No], x, y, offg.LEFT | offg.TOP );
	}
	public static final void DrawImage( Image cImage, int x, int y )
	{
 		// g.drawImage( img, x, y, g.LEFT | g.TOP );
		offg.drawImage( cImage, x, y, offg.LEFT | offg.TOP );
	}

	//--------------------------------------------------------------------------
	//
	// drawImage() 折叠 (一部份转送)
	//
	// 想描绘只限于印象的一部分的时使用
	//
	// ○ Arg1 :描绘的印象的号码
	// ○ Arg2 :绘画地点位置 X
	// ○ Arg3 :绘画地点位置 Y
	// ○ Arg4 :绘画原先的位置 X
	// ○ Arg5 :绘画原先的位置 Y
	// ○ Arg6 :描绘的宽度
	// ○ Arg7 :描绘的高度
	// ○ Arg8 :绘画对象
	//
	// ┏━━━━━━━━┓
	// ┃        ┃
	// ┃ ( x1, y1)    ┃
	// ┃ ★─┐    ┃ ┏━━━━━━┓
	// ┃ │喂│    ┃ ┃  ( x2, Y2) ┃
	// ┃ └─┘    ┃←┃  ★─┐ ┃
	// ┃        ┃ ┃  │喂│ h ┃
	// ┃        ┃ ┃  └─┘ ┃
	// ┃        ┃ ┃    w  ┃
	// ┗━━━━━━━━┛ ┗━━━━━━┛
	//   <绘画地点>     <绘画原先>
	// 
	// 
	// ○使者实例:DrawImage( Img1, 10, 10, 30, 0, 16, 16 ); 
	// 
	// 在↑显示的 (10,10) 的位置,
	// 从画像 Img1 的 (30,0) 的位置只描绘 16 × 16 的尺寸的情况。
	//
	//--------------------------------------------------------------------------
	public static final void DrawImage( int No, int x1, int y1, int x2, int y2, int w, int h)//, Graphics gx )
	{
		//----------------------------------------------------------------------
		// 切割从绘画领域开始的部分
		//----------------------------------------------------------------------
		if( x1 < 0 )
		{
			x2 -= x1;	w += x1;	x1 = 0;
		}
		if( y1 < 0 )
		{
			y2 -= y1;	h += y1;	y1 = 0;
		}
		if( x1 + w > 120 )
		{
			w -= ( (x1 + w) - 120 );
		}
		if( y1 + h > 120 )
		{
			h -= ( (y1 + h) - 120 );
		}

		//----------------------------------------------------------------------
		// 需要如果只绘画绘画
		//----------------------------------------------------------------------
		if( w > 0 && h > 0 )
		{
			// 把速度当作画面全体事先回复
 			// g.setClip( x1, y1, w, h );
			offg.setClip( x1, y1, w, h )

⌨️ 快捷键说明

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