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

📄 rpg_demo.java

📁 这是本人及团队成员用j2me开发的手机游戏《骑士荣耀》
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
        		break;
        	case MAIN_STATE_ABOUT:
        		DrawAbout();
        		break;
        	}
        	input();
        	endTime=System.currentTimeMillis();
        	if(endTime-startTime<50)//如果一个循环的运行时间小于一定的时间
        	{
        		try 
        		{
					Thread.sleep(80);
				} catch (InterruptedException e) 
				{
					// TODO 自动生成 catch 块
					e.printStackTrace();
				}//end try
        	}//end if
        	/* System.gc();
        	 g.setColor(0);
             g.fillRect(0, 0, 80, 80);
             g.setColor(0xff0000);        
             g.drawString(""+Runtime.getRuntime().freeMemory(), 0, 0, 0);
             g.drawString(""+Runtime.getRuntime().totalMemory(), 0, 30, 0);*/
     		flushGraphics();
        	}//end while      
	      }//end run 
        
	public void DrawLogo()
	{
		int index=0;
		while(index<3)		//画三桢Logo界面
		{
			g.drawImage(logo_Image, SCREEN_WIDTH/2+10, SCREEN_HEIGHT/2, Graphics.VCENTER|Graphics.HCENTER);
			index++;
			try
			{
				Thread.sleep(1000);
			}
			catch (InterruptedException e)
			{
				e.printStackTrace();
			}
			flushGraphics();
		}
	}
    public void DrawMenu()
    {
    	g.setColor(0x00000000);
		g.fillRect(0,0,getWidth(),getHeight());
		try
		{
			menu_Image=Image.createImage("/background.png");
			g.drawImage(menu_Image,getWidth()/2, getHeight()/2+20, Graphics.VCENTER|Graphics.HCENTER);
			
		}catch(Exception exp)
		{
			System.out.println(exp);
		}
		for(int i=0;i<mainMenu.length;i++)
		{
			if(i==menu_Selected)
			{
				//g.setColor(highBGColor);
				//g.fillRect(50,startHeight+(i*highFont.getHeight())+spacing,SCREEN_WIDTH,highFont.getHeight());
				g.setFont(highFont);
				g.setColor(highColor);
				g.drawString(mainMenu[i],(SCREEN_WIDTH-lowFont.stringWidth(mainMenu[i]))/2,
						startHeight+(i*highFont.getHeight())+spacing,20);
			}else
			{
				g.setFont(lowFont);
				g.setColor(lowColor);
				g.drawString(mainMenu[i],(SCREEN_WIDTH-lowFont.stringWidth(mainMenu[i]))/2,startHeight+(i*highFont.getHeight())+spacing,20);
			}
		}
	}
    public void DrawLoading()
    {

		int times=0;
		int index=1;
		while(times<10)
		{	
			g.setColor(0x000000);
			g.fillRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);		
			buffer.delete(0, buffer.length());			//每次要将字符缓冲区清空
			buffer.append("读取中");
			for(int i=0;i<index;i++)
				buffer.append(".");
			
			g.setColor(0xffff00);
			g.setFont(medium);
			g.drawString(buffer.toString(), SCREEN_WIDTH/2-25, SCREEN_HEIGHT/2-10, Graphics.LEFT|Graphics.TOP);
			
			times++;
			index=(index+1)%4;
			
		/*	try 
			{
				Thread.sleep(500);
			} 
			catch (InterruptedException e) 
			{
				e.printStackTrace();
			}	*/		
	//		flushGraphics();
		}
		menu_Image=null;
		//System.out.println("run here_LOADING");
		System.gc();
    }
    public void DrawGame()
    {
    	lm=new LayerManager();
    	cunzi=new Map_cuizi();
    	bg=cunzi.BG_cell;
    	pz=cunzi.PZ_cell;
    	try
    	{
    		sprite_hero_Image=Image.createImage("/hero.png");
    		guaiwu_qiulin_Image=Image.createImage("/qiulin.png");
    		guaiwu_senlin_Image=Image.createImage("/senlin.png");
    		guaiwu_yanshi_Image=Image.createImage("/yanshi.png");
    		npc_king_Image=Image.createImage("/NPC_2.png");
			npc_shangdian_Image=Image.createImage("/NPC_1.png");
			npc_tiejiang_Image=Image.createImage("/NPC_3.png");
  
    	}catch(Exception e)
    	{
    		System.out.println(e.getMessage());
    	}
    	npc_king=new Npc(npc_king_Image,24,32,8,352+10,"镇长");
    	npc_tiejiang=new Npc(npc_tiejiang_Image,24,32,176+10,288-10,"铁匠");
    	npc_shangdian=new Npc(npc_shangdian_Image,24,32,22,448+28,"杂货商");
    	Hero=new Player_RPG(sprite_hero_Image,24,32,150,200+64+32);    	
    	/*for(int i=0;i<guai_map1.length;i++)    
    		guai_map1[i].defineCollisionRectangle(5, 5, 20, 25);*///给怪物设置碰撞区域
    	vec.addElement(new Enemy(guaiwu_yanshi_Image,32,32,1,5,0,50,Hero.spend_Move-1,368,128,"丘陵怪"));
    	vec.addElement(new Enemy(guaiwu_yanshi_Image,32,32,1,5,0,50,Hero.spend_Move-1,400,240,"丘陵怪"));
    	vec.addElement(new Enemy(guaiwu_yanshi_Image,32,32,1,5,0,50,Hero.spend_Move-1,192,112,"丘陵怪"));
    	vec.addElement(new Enemy(guaiwu_yanshi_Image,32,32,1,5,0,50,Hero.spend_Move-1,112,16,"丘陵怪"));
    	vec.addElement(new Enemy(guaiwu_yanshi_Image,32,32,1,5,0,50,Hero.spend_Move-1,320,16,"丘陵怪"));
    	vec.addElement(new Enemy(guaiwu_yanshi_Image,32,32,1,5,0,50,Hero.spend_Move-1,476,272,"丘陵怪"));
    	vec.addElement(new Enemy(guaiwu_yanshi_Image,32,32,1,5,0,50,Hero.spend_Move-1,80,80,"丘陵怪"));
    	vec.addElement(new Enemy(guaiwu_yanshi_Image,32,32,1,5,0,50,Hero.spend_Move-1,208,16,"丘陵怪"));
    	vec.addElement(new Enemy(guaiwu_yanshi_Image,32,32,1,5,0,50,Hero.spend_Move-1,416,80,"丘陵怪"));
    	/*for(int j=0;j<vec.size();j++)
        	lm.insert((Enemy)vec.elementAt(j), 0);*/
    	//**
    	
    	
    	tl_BG=new TiledLayer(32,32,map_cunzi_Image,16,16);
    	tl_PZ=new TiledLayer(32,32,map_cunzi_Image,16,16);
    	for(int i=0;i<bg.length;i++)
        {
        	for(int j=0;j<bg[i].length;j++)
        	{
        		tl_BG.setCell(j,i,bg[i][j]);
        		tl_PZ.setCell(j,i,pz[i][j]);
        	}
        }
    	lm.append(Hero);  	
    	lm.insert(npc_king,1);
    	lm.insert(npc_tiejiang,1);
    	lm.insert(npc_shangdian,1);
    	for(int i=0;i<vec.size();i++)    		
    	lm.insert((Enemy)vec.elementAt(i), 1);    	
    	lm.append(tl_PZ);
    	lm.append(tl_BG);
    }
    public void DrawAbout()
    {
    	g.setColor(0x1c1814);
		g.fillRect(0, 0, getWidth(), getHeight()+20);
		g.setColor(0x4cc428);
		g.setFont(highFont);
		g.drawString(buffer.append("2--上,4--左,6--右,8--下").toString(),0,0, Graphics.TOP|Graphics.LEFT);
		buffer.delete(0,buffer.length());
		g.drawString(buffer.append("5--普通攻击/技能攻击").toString(),0,20, Graphics.TOP|Graphics.LEFT);
		buffer.delete(0,buffer.length());
		g.drawString(buffer.append("7--使用红药").toString(),0,40, Graphics.TOP|Graphics.LEFT);
		buffer.delete(0,buffer.length());
		g.drawString(buffer.append("9--使用蓝药").toString(),0,60, Graphics.TOP|Graphics.LEFT);
		buffer.delete(0,buffer.length());
		g.drawString(buffer.append("#--人物状态查看").toString(),0,80, Graphics.TOP|Graphics.LEFT);
		buffer.delete(0,buffer.length());
		g.drawString(buffer.append("*--技能切换").toString(),0,100, Graphics.TOP|Graphics.LEFT);
		buffer.delete(0,buffer.length());
		g.drawString(buffer.append("本游戏由软技0531班game").toString(),0,getHeight()-40, Graphics.TOP|Graphics.LEFT);
		buffer.delete(0,buffer.length());
		g.drawString(buffer.append("one小组开发。仅供学习。").toString(),0,getHeight()-20, Graphics.TOP|Graphics.LEFT);
		buffer.delete(0,buffer.length());
		
    }

   public void render()
    {
	   	g.setColor(0x00ff0000);
		g.fillRect(0, 0, getWidth(), getHeight());
//    	滚动屏幕
		if((Hero.getX()-viewWindowX)<50){
			viewWindowX-=Hero.spend_Move;
			if(viewWindowX<=0)viewWindowX=0;
		}
		if(Hero.getX()+Hero.w_Frame+50>viewWindowX+getWidth()){
			viewWindowX+=Hero.spend_Move;
			if(viewWindowX+getWidth()>tl_BG.getWidth())viewWindowX=tl_BG.getWidth()-getWidth();
		}
		if(Hero.getY()-viewWindowY<50){
			viewWindowY-=Hero.spend_Move;
			if(viewWindowY<0)viewWindowY=0;
		}
		if(Hero.getY()+Hero.h_Frame*2>viewWindowY+getHeight()){
			viewWindowY+=Hero.spend_Move;
			if(viewWindowY+getHeight()>tl_BG.getHeight())viewWindowY=tl_BG.getHeight()-getHeight();
		}
		
		//根据上面的调整重新设置视窗的位置
		
		lm.setViewWindow(viewWindowX,viewWindowY, getWidth(),getHeight());
		checkCollision(PlayerState);
		
		lm.paint(g, 0, 0);
		
		g.translate(-viewWindowX,-viewWindowY);
		npc_king.DrawState(g,npc_Name_king,npc_king.x,npc_king.y);
		npc_tiejiang.DrawState(g,npc_Name_tiejiang,npc_tiejiang.x,npc_tiejiang.y);
		npc_shangdian.DrawState(g,npc_Name_shangdian,npc_shangdian.x,npc_shangdian.y);
		//(Enemy)vec.elementAt(0).DrawState(g,guai_map1[0].nx,guai_map1[0].ny,guai_map1[0].name);
		for(int i=0;i<vec.size();i++)
		{
			((Enemy)(vec.elementAt(i))).DrawState(g, ((Enemy)(vec.elementAt(i))).nx, ((Enemy)(vec.elementAt(i))).ny, ((Enemy)(vec.elementAt(i))).name);
		}
		g.translate(viewWindowX, viewWindowY);
		Hero.Draw_STATE(g, touxiang_Image,red_Image,blue_Image,jn_Image,SCREEN_WIDTH,SCREEN_HEIGHT);
		
    }//end render
    private void checkCollision(int key)
	{
		if (Hero.collidesWith(tl_PZ, true))
		{
			if (key == LEFT_PRESSED)
			{
				Hero.move(Hero.spend_Move, 0);
			    Hero.px+=Hero.spend_Move;
			}
			else if (key == RIGHT_PRESSED)
			{
				Hero.move(-Hero.spend_Move, 0);
				Hero.px-=Hero.spend_Move;
			}
			else if (key == UP_PRESSED)
			{
				Hero.move(0, Hero.spend_Move);
				Hero.py+=Hero.spend_Move;
			}
			else if(key==DOWN_PRESSED)
			{
				Hero.move(0, -Hero.spend_Move);
				Hero.py-=Hero.spend_Move;
			}
		}//end if

	}//end checkCollission
    public void DrawGameMenu() 
	{
		g.setColor(0x000000);
		g.drawRect(getWidth()-70, 30, 70, 120);
		g.setColor(0xf3ddaa);
		g.fillRect(getWidth()-69, 31, 69, 119);
		
		for(int i=0;i<gameMenu.length;i++)
		{
			if(i==gamemenu_Selected)
			{
				//g.setColor(highBGColor);
				//g.fillRect(50,startHeight+(i*highFont.getHeight())+spacing,SCREEN_WIDTH,highFont.getHeight());
				g.setFont(highFont);
				g.setColor(highColor);
				g.drawString(gameMenu[i],getWidth()-65,30+i*28,20);
			}else
			{
				g.setFont(lowFont);
				g.setColor(lowColor);
				g.drawString(gameMenu[i],getWidth()-65,30+i*28,20);
			}
		}
		/*g.setFont(mini);
		g.setColor(0xff0000);
		
		g.fillRect(121, 30+gamemenu_Selected*28, 54, 14);
		
		g.setColor(0x0000ff);
		for(int i=0;i<gameMenu.length;i++)
			g.drawString(gameMenu[i], 125, 30+i*28, Graphics.TOP|Graphics.LEFT);*/
	}
    public void drawManssage()
    {
    	
    }
    public void drawGameover()
	{
    	
		try 
		{
			gameover_Image=Image.createImage("/gameover.png");
		} 
		catch (IOException e) 
		{
			e.printStackTrace();
		}
		try 
		{
			player.stop();
			player.close();
			is=getClass().getResourceAsStream("/gameover.mid");
			player=Manager.createPlayer(is,"audio/midi");
			player.realize();
			player.setLoopCount(-1);
			player.start();
		}catch (MediaException e) 
		{
			e.printStackTrace();
		}
		catch (IOException e)
		{
			e.printStackTrace();
		} 
		g.setColor(0x008c8a7b);
		g.fillRect(0,0,SCREEN_WIDTH,SCREEN_HEIGHT+20);
		
			g.drawImage(gameover_Image, SCREEN_WIDTH/2, SCREEN_WIDTH/2, Graphics.VCENTER|Graphics.HCENTER);

			flushGraphics();
			try 
			{
				Thread.sleep(3000);
			} 
			catch (InterruptedException e) 
			{
				e.printStackTrace();
			}
			mapindex=MAP_CUNZI;
	}
    public void DrawTacking(String[] arg0)
    {
    	g.setColor(0x00ffffff);
    	g.drawRect(0,getHeight()-40,getWidth(),40);
    	g.setColor(0x00f3ddaa);
    	g.fillRect(1,getHeight()-39,getWidth()-1,39);
    	g.setColor(0x000000);
    	g.setFont(medium);	
    	g.drawString(arg0[tacking_Selected],3,getHeight()-37,20);   
    	}
    public void hero_Judge()
    {
//    	System.out.println("----"+Hero.px);
//		System.out.println("++++"+Hero.py);
    	if(Hero.exp>=Hero.exp_max)
		{
			Hero.Levelup(true);
		}
    	if(Hero.hp<=0)
    	{
    		for(int i=0;i<vec.size();i++)
				lm.remove((Enemy)vec.elementAt(i));

⌨️ 快捷键说明

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