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

📄 main.java

📁 一个关于商业化游戏的源代码
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
    }

    static void createBuffer()
    {

   		out("SB1=" + Runtime.getRuntime().freeMemory());
   		h1 = a_h > s_h ? a_h : s_h;

		ioff = Image.createImage(a_w,h1);
		goff = ioff.getGraphics();

		if (img[back_index] != null)
   		for (i = 0; i < a_w; i += 32)
    		for (j = 0; j < h1; j += 32)
  				goff.drawImage(img[back_index],i,j,20);
		else
		{
   			goff.setColor(0x000000);
   			goff.fillRect(0,0,a_w,h1);
   		}
   		img[back_index] = null;
		System.gc();
   		out("SB2=" + Runtime.getRuntime().freeMemory());
   	}

    static void locateMan()
    {
      	// setting display position to miner
      	a_x_d = man.x - (s_w >> 1);
      	a_y_d = man.y - (s_h >> 1);
    	if (a_x_d < 0) a_x_d = 0;
    	if (a_y_d < 0) a_y_d = 0;
    	if (a_x_d >= disp_x_range) a_x_d = disp_x_range;
    	if (a_y_d >= disp_y_range) a_y_d = disp_y_range;
    }

    static void drawP()
    {
    	gd = goff;
		h1 = s_h - a_h;
		if (h1 < 0) h1 = 0;
   		for (j = obj.x1, x = obj.x1, y = obj.y1 + obj.disp + h1, k = 0;
   			 j < obj.x2;
				 j += 10, x += 10, y += obj.k, k++)
		{
			if (obj.blocks[k]) 
				frm = fB[obj.imageIndex];
			else
			{             
				if (p_num == -1) start_closed_blocks++;
				frm = fB[obj.imageIndex + 3];
			}
   			if (frm != null)
   			{
   				if ((p_num == k) || (p_num == -1)) frm.draw(x,y,obj.x1,0,obj.x2 - obj.x1 + 4,a_h + h1);
   				if (p_num == k)
   				{
					for (i2 = 0; i2 < aObj.length; i2++)
					{
						obj2 = aObj[i2];
						if (obj2.type == C_S)
							if ((obj2.x1 - 12 <= x) && (obj2.x1 + 10 >= x) && (obj.ymin - 10 <= obj2.ymin) && (obj.ymax + 10 >= obj2.ymin))
								drawS2();
					}
				}
   			}
   		}
   		if (p_num != -1) drawType(C_Sl2);
    }

    static void drawS2()
    {
    	gd = goff;
		h1 = s_h - a_h;
		if (h1 < 0) h1 = 0;
		frm = fS[(obj2.subtype << 1) + 1];
		if (frm != null)
		{
    		dy = frm.h;
			x = obj2.x1 - (frm.w >> 1);
			for (y1 = 0, y = obj2.ymin + h1; y1 < 12; y += dy, y1 += dy) 
				frm.draw(x,y,0,obj2.ymin + h1,a_w,obj2.ymax - obj2.ymin);
		}
    }

    static void drawType(int c_t)
    {
    	gd = goff;
		h1 = s_h - a_h;
		if (h1 < 0) h1 = 0;
		for (i = 0; i < aObj.length; i++)
		{
			try
			{
				obj = obj2 = aObj[i];
				if ((c_t == C_P) && (obj.type == C_P)) drawP();
				else
				if ((c_t == C_S) && (obj.type == C_S))
				{
		    		frm = fS[obj.subtype << 1];
		    		if (frm != null)
		    		{
			    		dy = frm.h;
		    			x = obj.x1 - (frm.w >> 1);
						for (y1 = obj.ymin, y = obj.ymin + h1; y1 < obj.ymax; y += dy, y1 += dy) 
							frm.draw(x,y,0,obj.ymin + h1 + 2,a_w,obj.ymax - obj.ymin);
					}
				}
				else
				if ((c_t == C_S2) && (obj.type == C_S)) drawS2();
				else
				if ((c_t == C_Wall) && (obj.type == C_Wall))
				{
					dy = 0;
		    		frm = fW[obj.subtype << 1];
		    		if (frm != null)
		    		{
			    		dy = frm.h;
		    			x = obj.x1 - (frm.w >> 1);
						frm.draw(x,obj.ymin + h1,0,obj.ymin + h1,a_w,obj.ymax - obj.ymin);
					}
	    			frm = fW[(obj.subtype << 1) + 1];
	    			if (frm != null)
	    			{
	    				x = obj.x1 - (frm.w >> 1);
			    		dy = frm.h;
						for (y1 = obj.ymin, y = obj.ymin + h1; y1 < obj.ymax; y += dy, y1 += dy) 
							frm.draw(x,y,0,obj.ymin + dy + h1,a_w,obj.ymax - obj.ymin - dy);
					}
				}
				else
				if ((c_t == C_Sucker) && (obj.type == C_Sucker))
				{
					x1 = obj.x1;
					y1 = obj.y1;
					x2 = obj.x2;
					y2 = obj.y2;
					ym = obj.ymin - 20;
					dx = 0;
					frm = fSu[obj.subtype * 6];
					if (frm != null)
					{
						for (y = ym; y <= y1; y += frm.h) 
							frm.draw(x1 - (frm.w >> 1),y + h1,0,ym + h1,a_w,y1 - ym - 3);
						for (y = ym; y <= y2; y += frm.h) 
							frm.draw(x2 - (frm.w >> 1),y + h1,0,ym + h1,a_w,y2 - ym - 3);
					}
					frm = fSu[obj.subtype * 6 + 3];
					if (frm != null)
					{
						for (x = obj.xmin; x <= obj.xmax; x += frm.w) 
							frm.draw(x,ym - (frm.h >> 1) + h1,obj.xmin,0,obj.xmax - obj.xmin,a_h + h1);
					}
					frm = fSu[obj.subtype * 6 + 4];
					if (frm != null)
					{
						frm.draw(obj.xmin - (frm.w >> 1),ym - (frm.h >> 1) + h1,0,0,a_w,a_h + h1);
					}
					frm = fSu[obj.subtype * 6 + 2];
					if (frm != null)
					{
						frm.draw(obj.xmax - (frm.w >> 1),ym - (frm.h >> 1) + h1,0,0,a_w,a_h + h1);
					}
					frm = fSu[obj.subtype * 6 + 1];
					if (frm != null)
					{
						frm.draw(obj.x1 - (frm.w >> 1),y1 - frm.h + h1,0,0,a_w,a_h + h1);
					}
					frm = fSu[obj.subtype * 6 + 5];
					if (frm != null)
					{
						frm.draw(obj.x2 - (frm.w >> 1),y2 - frm.h + h1,0,0,a_w,a_h + h1);
					}
				}
				else
				if ((c_t == C_Slope) && (obj.type == C_Slope))
				{
					x1 = obj.x1 - 7 - (obj.k < 0 ? 13 : 0);
			    	frm = fSl[obj.subtype * 4 + obj.imageIndex];
			    	dx = obj.k * frm.h;
			    	if (frm != null)
			    	for (j = obj.y1, x = x1; j < obj.y2; j += frm.h, x += dx)
			    	{
						frm.draw(x,j + h1,0,obj.ymin + h1,a_h,obj.ymax - obj.ymin);
			    	}
				}
				else
				if ((c_t == C_Sl2) && (obj.type == C_Slope))
				{
					x1 = obj.x1 - 7 - (obj.k < 0 ? 13 : 0);
			    	frm = fSl[obj.subtype * 4 + obj.imageIndex + 3];
			    	dx = obj.k * frm.h;
			    	if (frm != null)
			    	for (j = obj.y1, x = x1; j < obj.y2; j += frm.h, x += dx)
			    	{
						frm.draw(x,j + h1,0,obj.ymin + h1,a_h,obj.ymax - obj.ymin);		    				
			    	}
			    	if (obj.k == 0) 
			    	{
			    		frm = fSl[obj.subtype * 4 + 6];
//						frm.draw(x1,obj.y1,0,obj.ymin + h1,a_h,obj2.ymax - obj.ymin);
			    	}
			    	else frm = fSl[obj.subtype * 4 + obj.imageIndex];
			    	if (frm != null)
			    	{
						frm.draw(x1,obj.y1 + h1,0,obj.ymin + h1,a_h,obj2.ymax - obj.ymin);		    				
			    	}
				}
				else
				if ((c_t == C_Teleport) && (obj.type == C_Teleport))
				{
					frm = fTr[obj.subtype << 1];
					if (frm != null)
					{
						x = obj.x1 - (frm.w >> 1);
						y = obj.y1 - (y1 = frm.h) + h1;
						frm.draw(x,y,x,y,frm.fw,frm.fh);
						frm = fTr[(obj.subtype << 1) + 1];
						if (frm != null)
						{
							x = obj.x1 - (frm.fw >> 1);
							y = obj.y1 - y1 + 1 + h1;
							goff.setClip(x,y,frm.fw,frm.fh);
							goff.drawImage(img[frm.index],x - frm.fw * (num++),y,20);
				    	}
			    	}
				}
			}
			catch(Exception ex)
			{
				ex.printStackTrace();
			}
		}
    }

    void readAnimation(String prefix)
    {
    	if (v1 == null) v1 = new Vector();
    	for (j = 0; j < 16; j++)
    		if ((str = gp(prefix + "." + j)) != null) v1.addElement(parse(str));
    	if (v1.size() > 0)
    	{
    		hAnims.put(prefix,v1);
    		v1 = null;
    	}
    }

   	static String tmp = null;
    static Vector parse(String str)
    {
    	tmp = "";
    	int l = str.length() - 1;
    	v2 = new Vector();
    	for (int i = 0; i <= l; i++)
    	{
    		char c = str.charAt(i);
    		if (i == l) tmp += c;
    		if ((c == ',') || (i == l))
    		{
    			try
    			{
    				v2.addElement(new Integer(Integer.parseInt(tmp)));
    			}
    			catch(Exception ex){}
    			tmp = "";
    		}
    		else tmp += c;
    	}
    	tmp = null;
    	return v2;
    }

    void addMessage(int x,int y,String text)
    {
    	msg = new M(x,y,text);
    	vM.addElement(msg);
    }

    static boolean isKeyPressed = false;
    protected void keyPressed(int keyCode)
    {
	    isKeyPressed = true;
	    action = keyCode;
	    switch (action)
	    {
            case -3:// left
			case Canvas.KEY_NUM4:
					actionMask = 1;
					break;
			case -4:// right
			case Canvas.KEY_NUM6:
					actionMask = 2;
					break;
			case -1:// up
			case Canvas.KEY_NUM2:
					actionMask = 4;
					break;
			case -2:// down
			case Canvas.KEY_NUM8:
					actionMask = 8;
					break;
			case -5:// jump
			case -6:
			case Canvas.KEY_NUM5:
					actionMask = 16;
					break;
			case Canvas.KEY_NUM1:// jump
					actionMask = 32;
					break;
			case Canvas.KEY_NUM3:// jump
					actionMask = 64;
					break;
			case Canvas.KEY_NUM7:break;
			case Canvas.KEY_NUM9:break;
			case -15:break;
			case -7:
			case Canvas.KEY_STAR:
					actionMask = 128;
					break;
			default:break;
		}
	}

    protected void keyReleased(int keyCode)
    {
		actionMask = 0;
		isKeyPressed = false;
	}

	void updateMsg()
	{
      	for (i = 0; i < vM.size(); i++)
      	{
      		msg = (M)vM.elementAt(i);
      		msg.update();
      		y = (a_h - s_h);
      		if (y > 0) y = 0;
      		if ((msg.x < 0) || (msg.y < y) || (msg.x > a_w) || (msg.y > a_h))
      		{
      			vM.removeElementAt(i);
      		}
      	}
	}                   	

    void update()
    {
		updateMsg();

		for (i = 0; i < aObj.length; i++) aObj[i].update();

		// if small by vertical

		if (s_h < 80)
		if ((System.currentTimeMillis() - panelTime > 3000) || (state != 0))
		{
			panel_dy = 1;
   			panelTime = System.currentTimeMillis();
		}

    	if (state == 0)
    	{
    		if (s_h < 80)
    		if (action != -15)
    		{
    			panel_dy = -1;
    			panelTime = System.currentTimeMillis();
    		}
    	    switch (action)
    	    {
                case -3:
    			case Canvas.KEY_NUM4:
    					man.shift(-step,0);
    					break;
				case -4:
    			case Canvas.KEY_NUM6:
    					man.shift(step,0);
    					break;
				case -1:
    			case Canvas.KEY_NUM2:
    					man.shift(0,-step);
    					break;
				case -2:
    			case Canvas.KEY_NUM8:
    					man.shift(0,step);
    					break;
				case -5:
				case -6:
    			case Canvas.KEY_NUM5:
    					man.jump(99);
    					break;
    			case Canvas.KEY_NUM1:
    					man.jump(-step);
    					break;
    			case Canvas.KEY_NUM3:
    					man.jump(step);
    					break;
				case Canvas.KEY_NUM7:break;
				case Canvas.KEY_NUM9:break;
    			case -15:break;
				case -7:
    			case Canvas.KEY_STAR:
    					action = -15;
    					leaveTime = System.currentTimeMillis();
    					if (lifes > 0) midlet.menuLevel = 10;
    					else 
    					{
    						midlet.menuLevel = 0;
    						midlet.paused = false;
						}
			    		midlet.returnMenu();
    					break;
    			default:break;
    		}
		}

		for (i = 0; i < dyn.length; i++)
		{
			cur = dyn[i];
			if (cur != null)
			if (cur.visible)
			{
    			dyn[i].update();
  				cur.alarm = false;					
				if (cur.class_type == Dynamic.T_B)
					if (cur.inUse)
					{
						if ((!man.inUse) || ((state > 0) && (state < 33))) 
						{
							dyn[i].visible = false;	
						}
					}
    			if (state == 0)
    			if ((cur.curObj == man.curObj) && (man.curObj != null))
    			{
    				if ((cur.x - man.x >= - 30) && (cur.x - man.x <= 30))
    				{
	    				cur.alarm = true;					
    				}

    				if ((cur.x - man.x >= - 10) && (cur.x - man.x <= 10))
    				{
    					if ((cur.class_type == Dynamic.T_A)  ||
    						((cur.class_type == Dynamic.T_T) && (cur.type == 0) && (cur.a2 != 1)))
    					{
   							if (!cur.inUse)
	   						{
    							if (lifes > 0 && (damaged == 0) && (!man.inUse || isBonus))
    							{
    								if (((cur.class_type == Dynamic.T_A) || (cur.class_type == Dynamic.T_T)) && isBonus)
    								{
	    								addMessage(man.x,man.y,"25");
    									scores += 25;
			    						dyn[i] = null;
    								}
    								else
    								{
    									state = 3;
    								}
								}

    							if ((man.inUse) && (!isBonus) && (cur.class_type == Dynamic.T_T) && (cur.type != 0)) state = 3;

    							if ((man.inUse) && (!isBonus) && ((cur.class_type == Dynamic.T_A) || 
    								((cur.class_type == Dynamic.T_T) && (cur.type == 0))))
  	 							{
									dyn[i] = null;
	    							man.inUse = false;
    								addMessage(man.x,man.y,"25");
   									scores += 25;
		    						fire.a2 = 1;
    								fire.x = man.x;
    								fire.y = man.y;
			    					fire.finished = false;
    								fire.visible = true;
	    							fire.loop = false;
    							}
							}
    					}
    					else
    					if ((cur.class_type == Dynamic.T_T) && (cur.type != 0) && (cur.a2 != 1))
    					{
    						if (lifes > 0 && (damaged == 0))
    						{
								state = 3;
							}
    					}
    					if (cur.class_type == Dynamic.T_B)
    					{
    						if (cur.type == 1) // bomb
    						{
    							if ((!cur.inUse) && (!man.inUse) && (!isBonus))
    							{
    								cur.inUse = true;
    								man.inUse = true;
    							}
    						}
    						else

⌨️ 快捷键说明

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