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

📄 util.java

📁 J2ME程序开发实用例子
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
							if((spt.x %16) == 4){
								spt.x -=v;
							}else if((spt.x %16) == 12){
								spt.x +=v;
							}
						}else if(spt.getDir() == Sprite.DIR_DOWN){
							sprite_changeSpeed(spt,0,v);
							if((spt.x %16) == 4){
								spt.x -=v;
							}else if((spt.x %16) == 12){
								spt.x +=v;
							}
						}else if(spt.getDir() == Sprite.DIR_LEFT){
							sprite_changeSpeed(spt,-v,0);
							if((spt.y %16) == 4){
								spt.y -=v;
							}else if((spt.y %16) == 12){
								spt.y +=v;
							}
						}else if(spt.getDir() == Sprite.DIR_RIGHT){
							sprite_changeSpeed(spt,v,0);
							if((spt.y %16) == 4){
								spt.y -=v;
							}else if((spt.y %16) == 12){
								spt.y +=v;
							}
						}
						break;
				}
				
				break;
		}
	}
	
	
	
	
	public void ai_player(Sprite spt){
		switch(sprite_getMainState(spt.state)){
			case SPT_STATE_FREE:
				switch(spt.state){
					case SPT_STATE_FREE_WAIT:
						
						break;
					case SPT_STATE_FREE_STEP:
						
						Vector tmp = sprite_canMove(spt,spt.w,spt.h);
						for (int i = 0; i < tmp.size(); i ++) {
							int[] tile = (int[])tmp.elementAt(i);
							for (int j = 0; j < tile.length >>1; j ++) {
								int NI = tile[j*2];
								int NP = tile[j*2+1];
//								System.out.println(NP);
								
								if(NP == PHY_X_LT_0){
									spt.x = 0;
									sprite_changeSpeed(spt,0,0);
									break;
								}else if(NP == PHY_X_GT_W){
									spt.x = mapW - 16;
									sprite_changeSpeed(spt,0,0);
								}else if(NP == PHY_Y_LT_0){
									spt.y = 0;
									sprite_changeSpeed(spt,0,0);
								}else if(NP == PHY_Y_GT_H){
									spt.y = mapH- 16;
									sprite_changeSpeed(spt,0,0);
								} else if (NP != - 1) {
									if (NP == PHY_BRICK) {
										sprite_changeSpeed(spt,0,0);
									} else if (NP == PHY_ROCK) {
										sprite_changeSpeed(spt,0,0);
									} else if (NP == PHY_WATER) {
										sprite_changeSpeed(spt,0,0);
									}else if(NP == PHY_GRASS){
										
									} else if (NP == PHY_ICE) {
										
									} else if (NP == PHY_BLOCKHOUSE) {
										sprite_changeSpeed(spt,0,0);
									}
								}
								
							}
						}
						sprite_changePosition(spt);
						break;
				}
				
				break;
		}
	}
	
	
	
	public void sprite_addBullet(Sprite form){
		sprite_add(ID_BULLET,Sprite.DIR_UP,"null");
		Sprite buttlte = sprite_getOnIndex(sprite_getSize() - 1);
		sprite_setDir(buttlte,form.getDir());
		
		switch(form.getDir()){
			case Sprite.DIR_UP:
				buttlte.x = form.x + 7;
				buttlte.y = form.y + form.h;
				break;
			case Sprite.DIR_DOWN:
				buttlte.x = form.x + 7;
				buttlte.y = form.y ;
				break;
			case Sprite.DIR_RIGHT:
				buttlte.x = form.x + 7;
				buttlte.y = form.y + 7;
				break;
			case Sprite.DIR_LEFT:
				buttlte.x = form.x + form.w;
				buttlte.y = form.y + 7;
				break;
		}
		
		sprite_changeState(buttlte,SPT_STATE_FREE_STEP);
	}
	
	public void ai_bulletState(Sprite spt,int nextState){
		
		switch(sprite_getMainState(spt.state)){
			case SPT_STATE_FREE:
				switch(spt.state){
					case SPT_STATE_FREE_WAIT:
						spt.vx = spt.vy = 0;
						break;
					case SPT_STATE_FREE_STEP:
						if(spt.getDir() == Sprite.DIR_UP){
							sprite_changeSpeed(spt,0,-12);
						}else if(spt.getDir() == Sprite.DIR_DOWN){
							sprite_changeSpeed(spt,0,12);
						}else if(spt.getDir() == Sprite.DIR_LEFT){
							sprite_changeSpeed(spt,-12,0);
						}else if(spt.getDir() == Sprite.DIR_RIGHT){
							sprite_changeSpeed(spt,12,0);
						}
						sprite_changePosition(spt);
						break;
				}
				
				break;
		}
		
		
	}
	
	
	
	
	public void ai_bullet(Sprite spt){
		switch(spt.state){
			case SPT_STATE_FREE_WAIT:
			case SPT_STATE_FREE_STEP:			 
				int nextx = spt.x + spt.vx;
				int nexty = spt.y + spt.vy;
				if(nextx <0){
					sprite_changeState(spt,SPT_STATE_DEAD_START);
					sprite_changeSpeed(spt,0,0);
					spt.x = 0;
				}else if(nextx + spt.w > mapW){
					sprite_changeState(spt,SPT_STATE_DEAD_START);
					sprite_changeSpeed(spt,0,0);
					spt.x = mapW - spt.w ;
				}else if(nexty <0){
					sprite_changeState(spt,SPT_STATE_DEAD_START);
					sprite_changeSpeed(spt,0,0);
					spt.y = 0;
				}else if(nexty + spt.h > mapH ){
					sprite_changeState(spt,SPT_STATE_DEAD_START);
					sprite_changeSpeed(spt,0,0);
					spt.y = mapH - spt.h;
				}
				
				for (int i = 0; i < 2; i ++) {
					int[] data = new int[6];
					int offY = 0;
					if (spt.getDir() == Sprite.DIR_RIGHT || spt.getDir() == Sprite.DIR_LEFT) {
						data = buttllCanMove(spt.getDir(),spt.x,spt.y + i * 2,spt.vx,spt.vy,4,4);
					} else if (spt.getDir() == Sprite.DIR_DOWN || spt.getDir() == Sprite.DIR_UP) {
						data = buttllCanMove(spt.getDir(),spt.x + i * 2,spt.y,spt.vx,spt.vy,4,4);
					}
					boolean isCollide = (data[0] & 1 ) != 0;
					int cx = data[1];
					int cy = data[2];
					int NP = data[3];
					int NI = data[4];
					if (isCollide) {
						switch (spt.getDir()) {
							case Sprite.DIR_RIGHT:
							case Sprite.DIR_LEFT:
								if (NP == PHY_BRICK) {
									spt.x = cx;
									phy_setDataValue(NI,- 1);
									int IN_T = NI + map_data[0].length;
									if (phy_getId(IN_T) == 0 && i == 0) {
										phy_setDataValue(IN_T,- 1);
									}
									sprite_changeState(spt,SPT_STATE_DEAD_START);
									sprite_changeSpeed(spt,0,0);
								} else if (NP == PHY_ROCK) {
									sprite_changeSpeed(spt,0,0);
									sprite_changeState(spt,SPT_STATE_DEAD_START);
								} else if (NP == PHY_WATER) {
									
								} else if (NP == PHY_ICE) {
									
								} else if (NP == PHY_BLOCKHOUSE) {
									
								}
								break;
							case Sprite.DIR_DOWN:
							case Sprite.DIR_UP:
								spt.y = cy;
								if (NP == PHY_BRICK) {
									spt.y = cy;
									phy_setDataValue(NI,- 1);
									int IN_T = NI + 1;
									if (phy_getId(IN_T) == 0 && i == 0) {
										phy_setDataValue(IN_T,- 1);
									}
									sprite_changeState(spt,SPT_STATE_DEAD_START);
									sprite_changeSpeed(spt,0,0);
								} else if (NP == PHY_ROCK) {
									sprite_changeSpeed(spt,0,0);
									sprite_changeState(spt,SPT_STATE_DEAD_START);
								} else if (NP == PHY_WATER) {
									
								} else if (NP == PHY_ICE) {
									
								} else if (NP == PHY_BLOCKHOUSE) {
									
								}
								break;
						}
						
					}
				}
				sprite_changePosition(spt);
				break;
			case SPT_STATE_DEAD_START:
				sprite_addBulletBoom(spt);
				
				spriteS.removeElement(spt);
				break;
			case SPT_STATE_DEAD_REMOVE:
				break;
		}
	}
	
	public void sprite_addBulletBoom(Sprite form){
		sprite_add(ID_BULLET_BOOM,Sprite.DIR_UP,"null");
		Sprite bulletBoom = sprite_getOnIndex(sprite_getSize() - 1);
		sprite_setDir(bulletBoom,form.getDir());
		bulletBoom.frames = new int[]{0,1};
		switch(bulletBoom.getDir()){
			case Sprite.DIR_UP:
				bulletBoom.x = form.x;// - (bulletBoom.w >>1)
				bulletBoom.y = form.y;
				break;
			case Sprite.DIR_DOWN:
				bulletBoom.x = form.x;// - (bulletBoom.w >>1)
				bulletBoom.y = form.y;// + 8
				break;
			case Sprite.DIR_RIGHT:
				bulletBoom.x = form.x ;
				bulletBoom.y = form.y;;// - (bulletBoom.h >>1)
				break;
			case Sprite.DIR_LEFT:
				bulletBoom.x = form.x;// - (bulletBoom.w >>1)
				bulletBoom.y = form.y;// - (bulletBoom.h >>1)
				break;
		}
	}
	
	public void ai_bulletStateBomm(Sprite spt,int nextState){
	}
	
	
	
	
	public void ai_bulletBomm(Sprite spt){
		if(spt.isFrameOver){
			spriteS.removeElement(spt);
			
		}
	}
	
	
	
	
	
	public void keyPressed(int key) {
		if (disableKey)
			return;
		keyCode = Math.abs(key);
		try {
			switch (getGameAction(key)) {
				case UP:
					keyCode = KEY_UP;
					break;
				case DOWN:
					keyCode = KEY_DOWN;
					break;
				case LEFT:
					keyCode = KEY_LEFT;
					break;
				case RIGHT:
					keyCode = KEY_RIGHT;
					break;
				default:
					break;
			}
		} catch (Exception e) {
		}
		pressedKeyCode = keyCode;		
		if(player!=null){
			Sprite spt  = player;
			if ((spt.state == SPT_STATE_FREE_WAIT )) {
				if ((pressedKeyCode == KEY_LEFT || pressedKeyCode == KEY_NUM4 )) {
					sprite_setDir(spt,Sprite.DIR_LEFT);
					sprite_changeState(spt,SPT_STATE_FREE_STEP);
				} else if ((pressedKeyCode == KEY_RIGHT || pressedKeyCode == KEY_NUM6 )) {
					sprite_setDir(spt,Sprite.DIR_RIGHT);
					sprite_changeState(spt,SPT_STATE_FREE_STEP);
				} else if (pressedKeyCode == KEY_UP || pressedKeyCode == KEY_NUM2) {
					sprite_setDir(spt,Sprite.DIR_UP);
					sprite_changeState(spt,SPT_STATE_FREE_STEP);
				} else if (pressedKeyCode == KEY_DOWN || pressedKeyCode == KEY_NUM8) {
//					dir |= Sprite.DIR_DOWN;
					sprite_setDir(spt,Sprite.DIR_DOWN);
					sprite_changeState(spt,SPT_STATE_FREE_STEP);
				} 
			}
			if (pressedKeyCode == KEY_NUM5 || pressedKeyCode == KEY_FIRE) {
				sprite_addBullet(spt);
			}
			
		}
		
	}
	
	public void keyReleased(int key)   {
		keyCode = 0;
//		if(gameState == GAME_PLAY){
		if(player != null){
			if(player.state == SPT_STATE_FREE_STEP){
				sprite_changeState(player, SPT_STATE_FREE_WAIT);
			}
		}
//		}
	}
	
	
	public void draw(Graphics g) {
		cls(g,0);
		for (int i = 0; i < sprite_getSize(); i ++) {
			ai(sprite_getOnIndex(i));
		}
//		ai_sptTerrain();
		map_drawBg(g,0,0,map_data[0].length,map_data.length);
		
		
		for (int i = 0; i < sprite_getSize(); i ++) {
			Sprite spt = sprite_getOnIndex(i);
			switch(spt.id){
				case ID_PLAYER:
					drawFrame(spt.getDir(),res_getImage(spt.resList[0]),spt.x,spt.y,0,0,g,16,16);
					break;
				case ID_BULLET:
					drawFrame(spt.getDir(),res_getImage(spt.resList[0]),spt.x,spt.y,0,0,g,4,4);
					break;
				case ID_BULLET_BOOM:
					drawFrame(spt.curFrame,res_getImage(spt.resList[0]),spt.x,spt.y,0,3,g,16,16);
					spt.nextFrame();
					break;
				default:
					break;
			}
				//重画草
		}
		drawImage(g,res_getImage(RES_UI),0,SCREEN_H - 16,0,0);
	}
	
	
}

⌨️ 快捷键说明

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