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

📄 sfcanvas.java

📁 j2me RPG手机游戏《征途》的源代码
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
				}catch(InterruptedException e){
					e.printStackTrace();
				}
				g.setColor(255,255,255);
				g.fillRect(0,0,getWidth(),getHeight());				
				
				g.drawImage(bloodImage,0,0,Graphics.TOP|Graphics.LEFT);				
				heroSprite.doMove(keyState);
				
				setX=heroSprite.x-getWidth()/2+20;//地图画的位置的左上脚坐标
				setY=heroSprite.y-getHeight()/2+20;
				if(mapdir==1){					
					ASprite ms1[]={monsterSprite,monsterSprite1,monsterSprite2,monsterSprite3,monsterSprite4,monsterSprite5,monsterSprite6,monsterSprite7,monsterSprite8,monsterSprite9,monsterSprite10,heroSprite};	//将需要排序的精灵纳入数组
					chgMonsterOrder(ms1);//将排序完成后的数组赋值
					MonsterSprite msp[]={monsterSprite,monsterSprite1,monsterSprite2,monsterSprite3,monsterSprite4,monsterSprite5,monsterSprite6,monsterSprite7,monsterSprite8,monsterSprite9,monsterSprite10};
					for(int m=0;m<msp.length;m++){
						doMonster(msp[m],heroSprite,rs,myid);
					}
				
					if(heroSprite.x-getWidth()/2+20<=0){
						setX=0;
					}
					if(heroSprite.x-getWidth()/2+20>=625-getWidth()){
						setX=625-getWidth();
					}
					if(heroSprite.y-getHeight()/2+20<=0){
						setY=0;
					}
					if(heroSprite.y-getHeight()/2+20>=625-getHeight()){
						setY=625-getHeight();
					}
					layManager.setViewWindow(setX,setY,getWidth(),getHeight());
					
					layManager.paint(g,0,0);//对层管理类进行描绘
					for(int m=0;m<msp.length;m++){
						monsterBlood(msp[m]);
					}					
					if(marktime<5){						
						marktime++;
					}else{						
						marktime=0;
					}
					g.setColor(0x000000FF);					
					g.fillTriangle(35-marktime-setX,45-marktime-setY,45-marktime-setX,35-marktime-setY,35-marktime-setX,35-marktime-setY);
					for(int h=0;h<ms1.length;h++){					
						ms1[h].setPosition(ms1[h].dx-setX,ms1[h].dy-setY);
						if(ms1[h].dx<(getWidth()+setX) && ms1[h].dx>setX &&ms1[h].dy<(getHeight()+setY)&& ms1[h].dy>setY){//只对进入屏幕范围类的精灵才进行描绘
							ms1[h].paint(g);
						}
					}//对精灵类进行描绘
					if(heroSprite.x<20&&heroSprite.y<20){
						gotoMap(0);
						mapdir=0;
						heroSprite.x=130;
						heroSprite.y=390;
					}
					if(heroSprite.isAlive==false){
						gotoMap(0);
						mapdir=0;
						heroSprite.x=180;
						heroSprite.y=180;
						heroSprite.hp=heroSprite.maxhp;
						heroSprite.isAlive=true;
					}					
				}else{					
					ASprite ms2[]={npcSprite,npcSprite1,heroSprite};	//将需要排序的精灵纳入数组
					chgMonsterOrder(ms2);//将排序完成后的数组赋值					
					
					if(heroSprite.lv<=6){
						heroSprite.prevexp=heroSprite.lv*heroSprite.lv*60-(heroSprite.lv-1)*(heroSprite.lv-1)*60+150;
						heroSprite.nextexp=heroSprite.prevexp+(heroSprite.lv-1)*(heroSprite.lv-1)*60-(heroSprite.lv-2)*(heroSprite.lv-2)*60+150;
					}else{
						heroSprite.prevexp=heroSprite.lv*(heroSprite.lv-5)*(heroSprite.lv-5)-40*(heroSprite.lv-4)*(heroSprite.lv-4)+150;
						heroSprite.nextexp=heroSprite.prevexp+50*(heroSprite.lv+1)*(heroSprite.lv-4)*(heroSprite.lv-4)-40*(heroSprite.lv-3)*(heroSprite.lv-3)+150;
					}
					if(heroSprite.x-getWidth()/2+20<=0){
						setX=0;
					}
					if(heroSprite.x-getWidth()/2+20>=465-getWidth()){
						setX=465-getWidth();
					}
					if(heroSprite.y-getHeight()/2+20<=0){
						setY=0;
					}
					if(heroSprite.y-getHeight()/2+20>=465-getHeight()){
						setY=465-getHeight();
					}
					layManager.setViewWindow(setX,setY,getWidth(),getHeight());
					layManager.paint(g,0,0);//对层管理类进行描绘
					if(npcSprite.isTalkable(heroSprite.x,heroSprite.y)==true){
						g.setColor(0x00FFFFFF);
						g.fillRoundRect(npcSprite.dx+30-setX,npcSprite.dy-setY,20,10,3,3);
						g.setColor(0x00000000);
						g.drawString("......",npcSprite.dx+32-setX,npcSprite.dy-setY-5,Graphics.TOP|Graphics.LEFT);
						if(keyState==256){
							if(isOpenshop==false){
								isOpenshop=true;
								heroSprite.isPause=true;
							}
						}
					}else{
						isOpenshop=false;						
					}					
					if(npcSprite1.isTalkable(heroSprite.x,heroSprite.y)==true){
						//System.out.println("dsafjjdflkjkalsdf");
						g.setColor(0x00FFFFFF);
						g.fillRoundRect(npcSprite1.dx-setX,npcSprite1.dy-setY-20,20,10,3,3);
						g.setColor(0x00000000);
						g.drawString("......",npcSprite1.dx-setX,npcSprite1.dy-setY-25,Graphics.TOP|Graphics.LEFT);
						if(keyState==256){//按下确定键时
							if(isOpenmisn==false){
								isOpenmisn = true;
								heroSprite.isPause=true;
							}else{
								isOpenmisn=false;
								heroSprite.isPause=false;
							}
						}
					}else{
						isOpenmisn=false;						
					}
					if(marktime<5){						
						marktime++;
					}else{
						//qOrh=true;
						marktime=0;
					}
					g.setColor(0x00FFCC00);					
					g.fillTriangle(134-setX,430+marktime-setY,144-setX,440+marktime-setY,154-setX,430+marktime-setY);
					g.drawImage(houseImagebottom,3-setX,145-setY,Graphics.TOP|Graphics.LEFT);
					for(int h=0;h<3;h++){
						ms2[h].setPosition(ms2[h].dx-setX,ms2[h].dy-setY);
						if(ms2[h].dx<(getWidth()+setX) && ms2[h].dx>setX &&ms2[h].dy<(getHeight()+setY)&& ms2[h].dy>setY){//只对进入屏幕范围类的精灵才进行描绘
							ms2[h].paint(g);
						}
					}//对精灵类进行描绘				
					g.drawImage(houseImagetop,3-setX,60-setY,Graphics.TOP|Graphics.LEFT);
					if(heroSprite.x<174&&heroSprite.x>94&&heroSprite.y>400){
						gotoMap(1);
						mapdir=1;
						heroSprite.x=30;
						heroSprite.y=30;
					}
				}
				g.setColor(0x00350BEC);
				switch(mapdir){
					case 0:
						g.drawString("引导之地",getWidth(),getHeight(),Graphics.BOTTOM|Graphics.RIGHT);
						break;
					case 1:
						g.drawString("新月之尖",getWidth(),getHeight(),Graphics.BOTTOM|Graphics.RIGHT);
						break;
				}
				
				if(isOpenItem==true){
					g.drawImage(gearImage,20,10,Graphics.TOP|Graphics.LEFT);
					g.setColor(0x00FFFFFF);
					g.drawString(heroSprite.hp+"/"+heroSprite.maxhp,130,20,Graphics.TOP|Graphics.RIGHT);
					g.drawString(heroSprite.exp+"/"+heroSprite.nextexp,130,35,Graphics.TOP|Graphics.RIGHT);
					g.drawString(heroSprite.at+"/"+heroSprite.df,130,50,Graphics.TOP|Graphics.RIGHT);
					g.drawString("等级"+heroSprite.itemlv,130,65,Graphics.TOP|Graphics.RIGHT);
					
					if(keyState==4){
						if(isDelpress==false){
							if(itempage>1){
								itempage--;
							}
						}else{
							if(isChkdel==false){
								isChkdel=true;
							}
						}
					}
					if(keyState==32&&itempage<4){
						if(isDelpress==false){
							if(itempage<4){
								itempage++;
							}
						}else{
							if(isChkdel==true){
								isChkdel=false;
							}
						}
					}
					g.drawString(heroSprite.gold+"G",130,95,Graphics.TOP|Graphics.RIGHT);					
					drawItem(heroSprite.itemcode,itempage);					
					g.setColor(0x60A51234);
					switch(itemcho){
						case 1:	
							g.drawRect(40,105,80,15);
							break;
						case 2:
							g.drawRect(40,120,80,15);
							break;
						case 3:
							g.drawRect(40,135,80,15);
							break;
					}
				}
				
				if(isOpenshop==true){					
					g.drawImage(shopImage,20,10,Graphics.TOP|Graphics.LEFT);
					switch(nowShopcho){
					case 0:
						g.setColor(0x00ffffff);
						g.drawRect(37,30,17,17);
						g.setColor(0x008A56E8);
						g.drawString("药瓶,补充",90,93,Graphics.TOP|Graphics.LEFT);
						g.drawString("HP至满,价格"+itemprice[0]+"G",40,107,Graphics.TOP|Graphics.LEFT);
						break;
					case 1:
						g.setColor(0x00ffffff);
						g.drawRect(56,30,17,17);
						g.setColor(0x008A56E8);
						g.drawString("布衣,攻防",90,93,Graphics.TOP|Graphics.LEFT);
						g.drawString(heroSprite.itemat[1]+"/"+heroSprite.itemdf[1]+",价格"+itemprice[1]+"G",40,107,Graphics.TOP|Graphics.LEFT);
						break;
					case 2:						
						g.setColor(0x00ffffff);
						g.drawRect(75,30,17,17);
						g.setColor(0x008A56E8);
						g.drawString("稠衣,攻防",90,93,Graphics.TOP|Graphics.LEFT);
						g.drawString(heroSprite.itemat[2]+"/"+heroSprite.itemdf[2]+",价格"+itemprice[2]+"G",40,107,Graphics.TOP|Graphics.LEFT);
						break;
					case 3:
						g.setColor(0x00ffffff);
						g.drawRect(98,30,17,17);
						g.setColor(0x008A56E8);
						g.drawString("铁甲,攻防",90,93,Graphics.TOP|Graphics.LEFT);
						g.drawString(heroSprite.itemat[3]+"/"+heroSprite.itemdf[3]+",价格"+itemprice[3]+"G",40,107,Graphics.TOP|Graphics.LEFT);
						break;
					case 4:
						g.setColor(0x00ffffff);
						g.drawRect(117,30,17,17);
						g.setColor(0x008A56E8);
						g.drawString("铜衣,攻防",90,93,Graphics.TOP|Graphics.LEFT);
						g.drawString(heroSprite.itemat[4]+"/"+heroSprite.itemdf[4]+",价格"+itemprice[4]+"G",40,107,Graphics.TOP|Graphics.LEFT);
						break;
					}
					switch(keyState){
					case LISTENER_RIGHT:
						if(nowShopcho<4){
							nowShopcho++;
						}
						break;
					case LISTENER_LEFT:
						if(nowShopcho>0){
							nowShopcho--;
						}
						break;
					case LISTENER_UP:
						if(buynum<heroSprite.numEmpty  && heroSprite.gold>=itemprice[nowShopcho]*(buynum+1)){
							buynum++;
						}
						break;
					case LISTENER_DOWN:
						if(buynum>0){
							buynum--;
						}
						break;
					case 256://按下FIRE键
						if(buynum!=0){
							for(int i=0;i<=buynum;i++){
								for(int j=0;j<12;j++){
									if(heroSprite.itemcode[j]=='0'){
										buynum--;
										heroSprite.gold=heroSprite.gold-itemprice[nowShopcho];
										heroSprite.itemcode[j]=chgToitemcode(nowShopcho);
										break;
									}
								}
							}						
							buynum=0;
							try{
								rs.setRecord(myid,heroSprite.chgTorms(false),0,heroSprite.chgTorms(false).length);
							}catch(Exception e){System.out.println(e);}
						}
						break;
					}					
					g.setColor(0x00ffffff);
					g.drawString(String.valueOf(buynum),111,50,Graphics.TOP|Graphics.LEFT);
					g.setColor(0x008A56E8);
					g.drawString(String.valueOf(heroSprite.numEmpty),110,128,Graphics.TOP|Graphics.LEFT);
				}
				if(heroSprite.hp>heroSprite.maxhp){
					heroSprite.hp=heroSprite.maxhp;
				}
				if(isOpenmisn==true){
					g.drawImage(missionImage,20,15,Graphics.TOP|Graphics.LEFT);
					g.setColor(0x00FFFF99);
					g.drawString("您的任务",70,35,Graphics.TOP|Graphics.LEFT);
					g.setColor(0x00FFFFFF);
					g.drawString("勇士,兽族人在我",44,60,Graphics.TOP|Graphics.LEFT);
					g.drawString("国边境大肆杀戮,",44,75,Graphics.TOP|Graphics.LEFT);
					g.drawString("举国上下一片恐慌,",44,90,Graphics.TOP|Graphics.LEFT);
					g.drawString("为了我们国家的存",44,105,Graphics.TOP|Graphics.LEFT);
					g.drawString("亡,向这群暴虐的",44,120,Graphics.TOP|Graphics.LEFT);
					g.drawString("野兽开战吧!",44,135,Graphics.TOP|Graphics.LEFT);
				}
				g.setColor(0x008A56E8);
				g.drawString(heroSprite.x+","+heroSprite.y,getWidth(),0,Graphics.TOP|Graphics.RIGHT);
				
				g.drawImage(hplImage,-51+(int)84*heroSprite.hp/heroSprite.maxhp,0,Graphics.TOP|Graphics.LEFT);
				g.drawImage(hpImage,0,0,Graphics.TOP|Graphics.LEFT);
				g.drawRoundRect(0,getHeight()-6,40,5,3,3);//经验
				g.fillRoundRect(0,getHeight()-5,(int)(heroSprite.exp-heroSprite.prevexp)*40/(heroSprite.nextexp-heroSprite.prevexp),3,3,3);
				g.drawString("Lv"+heroSprite.lv,45,getHeight()-15,Graphics.TOP|Graphics.LEFT);
				/*g.drawString(String.valueOf(monsterSprite.dir+1),25,getHeight()-25,Graphics.TOP|Graphics.LEFT);
				g.drawString(String.valueOf(monsterSprite1.dir+1),25,getHeight()-35,Graphics.TOP|Graphics.LEFT);
				g.drawString(String.valueOf(monsterSprite2.dir+1),25,getHeight()-45,Graphics.TOP|Graphics.LEFT);
				g.drawString(monsterSprite.x+"/"+monsterSprite.y,45,getHeight()-25,Graphics.TOP|Graphics.LEFT);
				g.drawString(monsterSprite1.x+"/"+monsterSprite1.y,45,getHeight()-35,Graphics.TOP|Graphics.LEFT);
				g.drawString(monsterSprite2.x+"/"+monsterSprite2.y,45,getHeight()-45,Graphics.TOP|Graphics.LEFT);*/
				flushGraphics();
				break;
			}		
		}
	}
	
	//精灵层叠次序的排序
	public ASprite[] chgMonsterOrder(ASprite ms[]){
		for(int l=0;l<ms.length-1;l++){
			for(int m=0;m<ms.length-1;m++){
				if(ms[m].dy>ms[m+1].dy){//根据Y值排序,本段采用了最简单的冒泡排序法
					tempMonster=ms[m];
					ms[m]=ms[m+1];
					ms[m+1]=tempMonster;
				}
			}
		}
		return ms;//返回排序结果
	}
	
	public char chgToitemcode(int itemcode){
		switch(itemcode){
			case 0:
				return '5';
			case 1:
				return '1';
			case 2:
				return '2';
			case 3:
				return '3';
			case 4:
				return '4';
		}
		return '6';
	}

	/* (非 Javadoc)
	 * @see javax.microedition.midlet.MIDlet#startApp()
	 */
	
}

⌨️ 快捷键说明

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