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

📄 main.java

📁 一个关于商业化游戏的源代码
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
    						if (cur.type == 2) // bonus mode
    						{
    							if ((!isBonus) && (!man.inUse))
    							{
    								isBonus = true;
   									cur.inUse = true;
   									man.inUse = true;
    								bonusTime = System.currentTimeMillis();
	    							blink = 0;
								}
    						}
    						else
    						{
    							if (cur.type == 0) // life
    							{
    								lifes++;
		   						}
    							else
    							{
    								num = 10;
									switch(cur.type)
									{
										case 3: num = 100; break;
										case 4: num = 50; break;
										case 5: num = 10; break;
										case 6: num = 20; break;
										default:;
									}
    								addMessage(man.x,man.y,num + "");
    								scores += num;
    							}
	    						dyn[i].visible = false;
    						}
    					}
    				}
    			}
			}
		}
		if (state != 5) man.update();
    	rel_dx = man.x - a_x_d;
    	rel_dy = man.y - a_y_d;

    	if ((rel_dx < x_bound) && (man.sdx < 0))
    	{
    		a_x_d += man.sdx;
    		if (a_x_d > 0) panel_dx = 4;

    	}
    	if ((rel_dx > (s_w - x_bound)) && (man.sdx > 0))
    	{
    		a_x_d += man.sdx;
    		if ((a_x_d < disp_x_range)) panel_dx = -4;
    	}

    	if ((rel_dy < (y_bound + panel_height)) && (man.sdy < 0))
    		a_y_d += man.sdy;
    	if ((rel_dy > (s_h - y_bound)) && (man.sdy > 0))
    		a_y_d += man.sdy;

    	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;

    	// hiding panel
    	if (s_h < 80)
    	{
    		if (panel_dy < 0) panel_y += panel_dy;
    		else
	    	if (panel_dy > 0) panel_y += panel_dy;
    		if (panel_y >= 0)
    		{
	    		panel_y = panel_dy = 0;
    		}
    		if (panel_y < -12)
	    	{
    			panel_y = -12;
    			panel_dy = 0;
	    	}
    	}
        /*
   		panel_x += panel_dx;
   		if (panel_x < 0) panel_x = panel_dx = 0;
   		if ((panel_x + panel_width) > s_w)
   		{
   			panel_x = s_w - panel_width;
   			panel_dx = 0;
   		}
        */
    }

	long tt = 0, tt2 = 0, tsum = 0, tcnt = 0;
	void updateMenu()
	{
		if (vMenu != null)
		{
			try
			{
			    switch (action)
			    {
					// left
					case -3: // 7210
					case Canvas.KEY_NUM4:menuIndex -= menuRange;
							break;
					// right
					case -4: // 7210
					case Canvas.KEY_NUM6:menuIndex += menuRange;
							break;
					// up
					case -1: // 7210
					case Canvas.KEY_NUM2:
							if (isPointer) menuIndex --;
							else menuDisp -= menuRange;
							break;
					// down
					case -2: // 7210
					case Canvas.KEY_NUM8:
							if (isPointer) menuIndex ++;
							else menuDisp += menuRange;
							break;
					// select
					case -5: // 60
					case -6: // 7210
					case Canvas.KEY_NUM5:
							if (isState)
							{
								if (menuIndex + 1 < vMenu.size())
								{
									vState.setElementAt(new Boolean(!(((Boolean)vState.elementAt(menuIndex)).booleanValue())),menuIndex);
								}
								else
								{
									action = -15;
									if (isState) midlet.setupOk();
									else midlet.menuBack();
								}
							}
							else if (menuLast)
							{
								action = -15;
								midlet.menuBack();
							}
							else midlet.menuOk(menuIndex);
							break;
					case Canvas.KEY_NUM1:
					case Canvas.KEY_NUM3:
					case Canvas.KEY_NUM7:
					case Canvas.KEY_NUM9:break;
					case -15:break;

					default:break;

					// exit
					case -7: // 7210
//					case KEY_STAR:
							if (midlet.menuLevel != 0)
							{
								action = -15;
								if (isState) midlet.setupOk();
								else midlet.menuBack();
							}
							break;
				}

//				if (menuIndex < 0) menuIndex = vMenu.size() - 1;
//				if (menuIndex >= vMenu.size()) menuIndex = 0;
				if (menuIndex < 0) menuIndex = menuIndex = 0;
				if (menuIndex >= vMenu.size()) menuIndex = vMenu.size() - 1;

				if (isPointer)
				{
					if (menuIndex < menuDisp) menuDisp = menuIndex;
					if (menuDisp + menuRange <= menuIndex) menuDisp = menuIndex - menuRange + 1;
				}
				else
				{
					if (menuDisp + menuRange > vMenu.size()) menuDisp = vMenu.size() - menuRange;
					if (menuDisp < 0) menuDisp = 0;
				}
			}
			catch(Exception ex){}
		}
        action = -15;
	}

	void updateEditor()
	{
		try
		{
		    switch (action)
		    {
				case -3:
				case Canvas.KEY_NUM4:if (editX > 0) editX--;
						break;
				case -4:
				case Canvas.KEY_NUM6:if (editX < 6) editX++;
						break;
				case -1:							
				case Canvas.KEY_NUM2:if (editY > 0) editY--;
						break;
				case -2:
				case Canvas.KEY_NUM8:if (editY < 3) editY++;
						break;
				case -6:
				case -5:
				case Canvas.KEY_NUM5:
						if (letters.charAt(editY * 7 + editX) == '_')
						{
							if (menuDisp > 0) menuDisp--;
						}
						else
						{
							if (menuDisp >= 2)
							{
								midlet.editOk(new String(editText));
							}
							else
							{
								menuDisp++;
							}
						}
						break;
				case Canvas.KEY_NUM1:
				case Canvas.KEY_NUM3:
				case Canvas.KEY_NUM7:
				case Canvas.KEY_NUM9:break;
				case -15:break;
				default:break;
				case -7:
				case KEY_STAR:
						action = -15;
						midlet.editBack();
						break;
			}
			ch = letters.charAt(editY * 7 + editX);
			if (ch != '_')
			{
				if (ch == '.') ch = ' ';
				editText[menuDisp] = ch;
			}
		}
		catch(Exception ex){}
        action = -15;
	}

    static int si,sl,sx,sn;
    static char sc;

    static void drawString(String str,int x,int y)
    {
    	sl = str.length();
    	if (sl > buf.length) sl = buf.length;
    	for (si = 0; si < sl; si++)
    		buf[si] = str.charAt(si);
    	drawChars(0,sl,x,y);
    }

    static void calcSn()
    {
		sn = 0;
		if (sc == '^')
		{
			int d = (sx / 25) * 25;
			if (sx != d) d = d + 25;
			sx = d;
		}
		else
		if (sc == '&')
		{
			int d = (sx / 14) * 14;
			if (sx != d) d = d + 14;
			sx = d;
		}
		else
		if (sc == '%')
		{
			int d = (sx / 14) * 14;
			if (sx != d) d = d + 14;
			sx = d;
		}
		else
		if ((sc >= '0') && (sc <= '9'))
		{
			sn = (int)(sc - '0');
		}
		else
		if (sc == '#')
		{
			sn = 36;
		}
		else
		if (sc == '.')
		{
			sn = 37;
		}
		else
		if (sc == ':')
		{
			sn = 38;
		}
		else
		if (sc == '_')
		{
			sn = 39;
		}
		else
		if (sc == ',')
		{
			sn = 40;
		}
		else
		if (sc == '*')
		{
			sn = 41;
		}
		else
		if (sc == '@')
		{
			sn = 42;
		}
		else
		if (sc == '(')
		{
			sn = 43;
		}
		else
		if (sc == ')')
		{
			sn = 44;
		}
		else
		if ((sc >= 'a') && (sc <= 'z'))
		{
			sn = (int)(sc - 'a') + 10;
		}
		else
		if ((sc >= 'A') && (sc <= 'Z'))
		{
			sn = (int)(sc - 'A') + 10;
		}
    }

	static void drawChars(int start,int cnt,int x,int y)
	{
		try
		{
    		sx = 0;
    		for (si = 0; si < cnt; si++)
    		{
    			sc = buf[si + start];
    			calcSn();
    			if ((sc != '^')&&(sc != '&')&&(sc != '%'))
    			{
	    			if (sc != ' ')
    				{
	    				g.setClip(sx + x,y,abcw[sn],8);
		    			g.drawImage(img[abc_index],sx + x - abcx[sn],y,20);
			    	}
					sx += abcw[sn];
					if (abcw[sn] > 9) sx--;
				}
	    	}
    	}
    	catch(Exception ex){}
    }
    
    static int getStringWidth(String str)
    {
    	sx = 0;
    	sl = str.length();
    	for (si = 0; si < sl; si++)
    	{
			sc = str.charAt(si);
			calcSn();
   			if ((sc != '^')&&(sc != '&')&&(sc != '*'))
   			{
				sx += abcw[sn];
				if (abcw[sn] > 9) sx--;
			}
    	}
    	return sx;
    }
    //////////////////////////////////////////////////////////////////////////////////
    void addItem(String item)
    {
    	if (vMenu == null) vMenu = new Vector();
    	vMenu.addElement(item.charAt(0) == ' ' ? item.substring(1) : item);
    }

    void addText(String text)
    {
    	w1 = text.length();
    	str = "";
    	str2 = "";
    	sx = j = 0;
    	for (i = 0; i < w1; i++)
    	{
    		sc = text.charAt(i);
    		calcSn();
   			str2 += sc;
			sx += abcw[sn];

			w2 = s_w - 16;
   			if (sx >= w2)
    		{
    			if (str.length() > 0)
    			{
					addItem(str);
					str = "";
				}
				else
				{
					addItem(str2);
					str2 = "";
				}
				sx -= j;
			}

			if ((sc == ' ') || (sc == ',') || (sc == '.') || (sc == '@'))
    		{   	
				str += str2;
				str2 = "";
				j = sx;
    		}
    	}
    	if (str.length() + str2.length() > 0) addItem(str + str2);
    	w1 = 0;
    }

    void addItem(String item,boolean state)
    {
    	addItem(item);
    	vState.addElement(new Boolean(state));
    }

    public void paint(Graphics gr)
    {
		tt = System.currentTimeMillis();
		if (g != gr) g = gr;
		gd = g;
    	try
    	{
			if (state == 101)
			{
				g.setColor(0x000000);
				g.fillRect(0,0,s_w,s_h);
				h1 = s_h >> 1;
   				str = "DEMO ENDED";
   				drawString(str,(s_w - getStringWidth(str)) >> 1,h1 - 16);
   				str = "PLEASE PURCHASE";
   				drawString(str,(s_w - getStringWidth(str)) >> 1,h1);
   				str = "REAL GAME";
   				drawString(str,(s_w - getStringWidth(str)) >> 1,h1 + 16);
			}
			else
    		if (state == 100)
    		{
    			g.setColor(0xFFFFFF);
    			g.fillRect(0,0,s_w,s_h);
    			if (fLogo != null)
    			{
	    			h1 = (s_h - fLogo.fh - 9) >> 1;
    				if ((isLogo2) && (fLogo2 != null))
    				{
		    			h1 = (s_h - fLogo.fh - fLogo2.fh - 9) >> 1;
    					g.setColor(0x0000FF);
	    				g.setClip(0,0,s_w,s_h);
	    				g.drawLine((s_w - fLogo.fw) >> 1,h1 + fLogo.fh + 4,((s_w - fLogo.fw) >> 1) + fLogo.fw,h1 + fLogo.fh + 4);
    					fLogo2.draw((s_w - fLogo2.fw) >> 1,h1 + fLogo.fh + 9);
    				}
    				fLogo.draw((s_w - fLogo.fw) >> 1,h1);
				}
    		}
    		else
    		if (state == 99)
    		{
    			g.setColor(0x000000);
    			g.fillRect(0,0,s_w,s_h);
    			if (fLogo != null) fLogo.draw((s_w - fLogo.fw) >> 1,(s_h - fLogo.fh) >> 1);
    			if (s_h < 100)
    			{
	   				str = "MARV THE";
   					drawString(str,(s_w - getStringWidth(str)) >> 1,(s_h >> 1));
	   				str = "MINER";
   					drawString(str,(s_w - getStringWidth(str)) >> 1,(s_h >> 1) + 16);
   				}
    		}
    		else
    		if (state == 98)
    		{
				g.setColor(0x000000);
				g.fillRect(0,0,s_w,s_h);
				h1 = 48;
   				str = names[c_lvl];
            	if (str == null) str = " ";

           		if ((str.length() + 3) * 8 >= s_w) str = str.substring(0,(s_w / 8) - 5) + "...";

⌨️ 快捷键说明

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