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

📄 testp.java.bak

📁 内含用midp1.0封装的碰撞函数
💻 BAK
📖 第 1 页 / 共 2 页
字号:
import javax.microedition.midlet.MIDlet;
import java.io.*;
import java.util.Random;
import java.util.Vector;

import javax.microedition.midlet.MIDletStateChangeException;
import javax.microedition.lcdui.*;
import javax.microedition.io.*;
public class testP extends MIDlet {
    PlayerCanvas test;
	public testP() {
		// TODO Auto-generated constructor stub
	
		test = new PlayerCanvas();
		Display.getDisplay(this).setCurrent(test);
	
	}

	protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
		// TODO Auto-generated method stub

	}

	protected void pauseApp() {
		// TODO Auto-generated method stub

	}

	protected void startApp() throws MIDletStateChangeException {
		// TODO Auto-generated method stub

	}

}
class PlayerCanvas extends Canvas implements Runnable{
	
	Player one,two;
	StreamConnection sc;
	Vector vc1;
	Random rnd= new Random();
    public MIDlet tempMIDlet;
    public HttpConnection httpconnect;
 
    public Player player;
    public  static  final int UP_D = 2;
    public  static  final int DOWN_D = 8;
    public  static  final int LEFT_D = 4;
    public  static  final int RIGHT_D = 6;
    
   short test_map0[]=new short[400];
    
    public Image image1, BuffImage, BufferImage2;

    public Thread thread;
    public InputStream is;
    public Image tempImage[];
    public boolean keypress2, keypress3,keypress4,keypress5;
    public int player_x, view_x, buffer_x,player_y;
    int imagex,imagey,tilex,tiley,bufferx,buffery,offsetx,offsety,directx,directy;
    Monster testMonster;
    Vector Mons = new Vector();
    public byte tempindex[] = new byte[50];
    
    int collsionLayer[] = {165};
	public PlayerCanvas(){
		keypress2 = keypress3 = false;
        player_x = view_x = 0;

       // testMonster = new Monster(20, 30,11,"Bird",getWidth(),getHeight());

        // tempMIDlet = a;
        try {
           

			InputStream is = this.getClass().getResourceAsStream("/map.bin");
			 
			DataInputStream dis = new DataInputStream(is);		
			
			System.out.println("test.........");	
			int temp2  = is.available();
				System.out.println("test.........");	
			for(int i=0;i<temp2/2;i++)
			test_map0[i] = dis.readShort();
				System.out.println("test.........");	
			dis.close();
			is.close();
			
			System.out.println("test.........");	
						
            BuffImage = Image.createImage(16 * 20, 16*20);

            BufferImage2 = Image.createImage(getWidth() + 16, 16);
System.out.println("test.........");	
            MapCellConstruct("/map2.png", 480, 256, 16, 16);
            System.out.println("test.........");	


        } catch (Exception e) {

        }
        finally {

        }
				
				

        for (int i = 0; i < 20; i++) {
				    for(int j=0; j< 20; j++)
            BuffImage.getGraphics().drawImage(tempImage[test_map0[j*20+i]-1], i * 16, j*16, 20);

        }
		
		
		
		
		 one = new Player("a"+rnd.nextInt());
		 vc1 = new Vector();
		 vc1.addElement(one);
		 //two = new Player(null);
		 try {
			sc = (StreamConnection)Connector.open("socket://127.0.0.1:9999");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		 new ConnecttoS(one,vc1,sc,Mons).start();
		 new Thread(this).start();
		
	}
public int collsionWithLayer(int iDir,int iPositionx,int iPositiony,int offset,int spritewidth,int spriteheight,
		                     int frameWidth,int frameHeight,int mapWidth,int mapHeight,int colums,int rows){
		
		switch(iDir){
		
		case RIGHT_D:
			
			 iPositionx += offset;
			 if(iPositionx >= mapWidth - spritewidth){
					
					
			      iPositionx = mapWidth - spritewidth-offset;
							
			 }
			 
			 for(int i = iPositiony/frameHeight; i<=(iPositiony+spriteheight)/frameHeight;i++){
				 
			       if(tools.ArraySearch(test_map0[(i*colums+(iPositionx+spritewidth)/frameWidth)],collsionLayer)){
						  	
			    	   iPositionx = (iPositionx+spritewidth)/frameWidth*frameWidth-spritewidth;
						  	
						  	// System.out.println("collstion true "+offset);
						  	
						  	
				   }
						  
			  }
			 if(iPositionx >= mapWidth - spritewidth){
					
					
			      iPositionx = mapWidth - spritewidth-offset;
							
			 }
			 return iPositionx;
		case LEFT_D:
			iPositionx -= offset;
			if(iPositionx < 0){
          	  	iPositionx = 0;							
			}	
			for(int i = iPositiony/frameHeight; i<=(iPositiony+spriteheight)/frameHeight;i++){
				 
         	   if(tools.ArraySearch(test_map0[(i*colums+(iPositionx)/frameWidth)],collsionLayer)){
						  	
         		   iPositionx = (iPositionx)/frameWidth*frameWidth+spritewidth;
						  	
				   }
						  
			  }
			 return iPositionx;
			
		case DOWN_D:
			iPositiony += offset;
			 if(iPositiony >= mapHeight - spriteheight){
				 	
				 iPositiony =  mapHeight -spriteheight-offset;
					 	
		    }
			 for(int i = iPositionx/frameWidth; i<=(iPositionx+spritewidth)/frameWidth;i++){
				 
           		 if(tools.ArraySearch(test_map0[((iPositiony+spriteheight)/frameHeight*colums+i)],collsionLayer)){
						  	
           			iPositiony = (iPositiony+spriteheight)/frameHeight*frameHeight - spriteheight ;
						  	
						  	// System.out.println("collstion true "+offset);
						  	
						  	
				 }
						  
			}
			
			 return iPositiony;
			
		case UP_D:
			 if(iPositiony >= offset)
				 iPositiony-= offset;	
			 for(int i = iPositionx/frameWidth; i<=(iPositionx+spritewidth)/frameWidth;i++){
				 
         		  if(tools.ArraySearch(test_map0[((iPositiony)/frameHeight*colums+i)],collsionLayer)){
						  	
         			 iPositiony= (iPositiony)/frameHeight*frameHeight+ spriteheight;
						  	
						  	// System.out.println("collstion true "+offset);
						  	
						  	
				  }
						  
			 }
			 return iPositiony;
			
		
		
		}
	  return -1;
		
	}
	public void movemap(){
		
	 if(player_x > getWidth()/2 && player_x < BuffImage.getWidth() - getWidth()/2){
				
			 bufferx = getWidth()/2 - player_x;
						
	 }
				  
	 if(player_y > getHeight()/2 && player_y < BuffImage.getHeight() - getHeight()/2){
				  
			 buffery = getHeight()/2 - player_y;	
	  }
	}
    void MapCellConstruct(String mapFilePath, int mapImageWidth, int mapImageHigth, int CellW, int CellH) {


        tempImage = new Image[(mapImageWidth * mapImageHigth) / (CellW * CellH)];

        try {
            Image mapImage = Image.createImage(mapFilePath);

            for (int i = 0; i < mapImageWidth / CellW; i++) {
                for (int j = 0; j < mapImageHigth / CellH; j++) {

                    tempImage[(j * mapImageWidth / CellW) + i] = Image.createImage(CellW, CellH);
                    tempImage[(j * mapImageWidth / CellW) + i].getGraphics().drawImage(mapImage, -i * CellW, -j * CellH, 0);
                }
            }


        } catch (Exception e) {


        }


    }
    public void keyPressed(int keyCode) {
        if (keyCode == 54)
            keypress2 = true;
        else if(keyCode == 52)
            keypress3 = true;
        else if(keyCode == 50){
        	
        	keypress4 = true;
       }else if(keyCode == 56){
        		
        		
           keypress5 = true;
       }
            
            
    }

    public void keyReleased(int keyCode) {
        if (keyCode == 54)
            keypress2 = false;
        else if(keyCode == 52)
            keypress3 = false;
        else if(keyCode == 50){
        	
        	keypress4 = false;
        }else if(keyCode == 56){
        		
        		
            keypress5 = false;
        }
        		//offset = 0;
    }
	
	
	public void paint(Graphics g){
		
	       g.setColor(255);
	       g.fillRect(0, 0, 250, 250);

	       g.drawImage(BuffImage, bufferx, buffery, 0);

		   g.setColor(255,0,0);
		   g.fillRect(player_x+bufferx,player_y+buffery,24,32);
		   for(int i=1;i<vc1.size();i++){
			
			   g.setColor(rnd.nextInt()>>>1%65535);
			   Player temp = (Player)vc1.elementAt(i);
			   if(temp.name != null)
				   g.drawString(temp.name,temp.x+bufferx,buffery+temp.y-8,20);
			   g.fillRect(temp.x+bufferx, buffery+temp.y, 16, 16);
			
			
		 }
		   for(int i=0;i<Mons.size();i++){
			   
			   Monster tem = (Monster)Mons.elementAt(i);
			   tem.piant(g,bufferx,buffery);
		   }
		  // testMonster.piant(g);
		
		
	}
	
	public void  run(){
		
	
		while(true){
			
			
		//	testMonster.run(0,0,getWidth(),getHeight());
			if (keypress2) {
            	
	               player_x = collsionWithLayer(RIGHT_D,player_x,player_y,4,24,32,16,16,BuffImage.getWidth(),BuffImage.getHeight(),20,20);

⌨️ 快捷键说明

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