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

📄 mygamecanvas.java

📁 Kjava游戏架构代码 新手可以借鉴学习
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            Image img = null ;
            try
            {
                    img = Image.createImage(pic);
            }catch(Exception exp)
            {
                    System.out.println(exp);
            }
            return new Sprite(img,128,128)  ;
    }
    boolean conti = true ;
    int rate = 100 ;
    public void run()
    {
            long st = 0 ;
            long et = 0 ;
            Graphics g = getGraphics() ;
            while(conti)
            {
                    st = System.currentTimeMillis() ;
                    input() ;
                    collidect();
                    render(g) ;
                    et = System.currentTimeMillis() ;
                    if((et-st)<rate)
                    {
                            try
                            {
                                    Thread.sleep(rate-(et-st));
                            }catch(Exception exp){}
                    }
            }
    }
    int rolecellx=cellsx/2; //初始角色所处的单元格位置x
    int rolecelly=cellsy/2; //初始角色所处的单元格位置y
    int pMenMove=0;
    int pMenStep=0;
    public void input()
    {
    		
            int keystate = getKeyStates() ;
            if((keystate & UP_PRESSED)!=0)
            {
            	pMenMove=3;
//            	pMenStep=3;
            	setpMenMove(2);
                    int i=y-8;
                    rolecellx= (i+32) / tiledy;
                    rolecelly= (x+16) / tiledx;
                    if (mapDepth1[rolecellx][rolecelly]==0)
                    {
                    	y=i;
                    	if(pMenMoveDir[2]==0)
                    	{
                    		pMen.setFrameSequence(hero3);
                    		pMenMoveDir[2]=1;
                    	}
                    	pMen.move(0,-8);
                    	pMen.nextFrame();
                    }
            }else if((keystate & DOWN_PRESSED)!=0)
            {
            	pMenMove=1;
//            	pMenStep=3;
            	setpMenMove(0);
                    int i=y+8;
                    rolecellx= (i+32) / tiledy;
                    rolecelly= (x+16) / tiledx;
                    if (mapDepth1[rolecellx][rolecelly]==0)
                    {
                    	y=i;
                        if(pMenMoveDir[0]==0){
                        	pMen.setFrameSequence(hero1);
                        	pMenMoveDir[0]=1;
                        }
                        pMen.move(0,8);
                        pMen.nextFrame();
                    }
            }else if((keystate & LEFT_PRESSED)!=0)
            {
            	pMenMove=2;
//            	pMenStep=3;
            	setpMenMove(1);
                     int i=x-8;
                     rolecellx= (y+32) / tiledy;
                     rolecelly= (i+16) / tiledx;
                    if (mapDepth1[rolecellx][rolecelly]==0)
                    {
                    	x=i;
                    	if(pMenMoveDir[1]==0)
                    	{
                    		pMen.setFrameSequence(hero2);
                    		pMenMoveDir[1]=1;
                    	}
                    	pMen.move(-8,0);
                    	pMen.nextFrame();
                    }

            }else if((keystate & RIGHT_PRESSED)!=0)
            {
            	pMenMove=4;
//            	pMenStep=3;
            	setpMenMove(3);
                    int i=x+8;
                    rolecellx= (y+32) / tiledy;
                    rolecelly= (i+16) / tiledx;
                    if (mapDepth1[rolecellx][rolecelly]==0)
                    {
                    	x=i;

                    	if(pMenMoveDir[3]==0)
                    	{
                    		pMen.setFrameSequence(hero4);
                    		pMenMoveDir[3]=1;
                    	}
                    	pMen.move(8,0);
                    	pMen.nextFrame();
                    }

            }else if((keystate & FIRE_PRESSED)!=0)
            {
            	switch(pMenMove)
            	{
            	case 1: pMen.setFrameSequence(hero5); break;
            	case 2: pMen.setFrameSequence(hero6); break;
            	case 3: pMen.setFrameSequence(hero7); break;
            	case 4: pMen.setFrameSequence(hero8); break;
            	}
            	pMenStep=3;
//            	effect =null;
            	if(effectbuts==0)
            	{
            		if(effectbut==null)
	            	{
	            		effectbut=createEffect("/res/xyyarraw2.png");
	                   	lm.insert(effectbut,1);
	                   	System.out.println("/res/xyyarraw2.png");
	               		effectbut.setVisible(true);
	            	}
	            	
	            	if(effect==null)
	            	{
	            		effect = createEffect("/res/xyyeffect2.png");
	            		lm.insert(effect,1);
	            		System.out.println("/res/xyyeffect2.png");
	//            		lm.append(effect);
//	            		effect.setVisible(true);
	            	}
	            	effectbuts=4;
	            	if((effectbut!=null)&&(effect!=null))
	            	{
	            		if(effectbut.isVisible()==false)
	            		{
	            			effect.setPosition(c1.getX()-32,c1.getY()-24);
	            			effectend=8;
	            		}
	            	}
            	}
//           		if(c1.isVisible())
//                    {
//                            c1.setVisible(false);
//                    }else
//                    {
//                            c1.setVisible(true);
//                    }
            
            }
    }
            
    private void setpMenMove(int i) {
		// TODO Auto-generated method stub
		switch(i)
		{
		case 0:pMenMoveDir[1]=0;pMenMoveDir[2]=0;pMenMoveDir[3]=0;break; 
		case 1:pMenMoveDir[0]=0;pMenMoveDir[2]=0;pMenMoveDir[3]=0;break; 
		case 2:pMenMoveDir[0]=0;pMenMoveDir[1]=0;pMenMoveDir[3]=0;break; 
		case 3:pMenMoveDir[0]=0;pMenMoveDir[1]=0;pMenMoveDir[2]=0;break; 
		}
	}

	int [] pMenMoveDir={0,0,0,0};
	private int effectend=0;
	private int effectbuts=0;
    public void render(Graphics g)
    {
            g.setColor(128,128,128);
            g.fillRect(0,0,getWidth(),getHeight());
            g.drawString("test",pMen.getX(),pMen.getY(), 0);
            lm.setViewWindow(x-nWidth/2,y-nHeight/2,nWidth,nHeight);
//            lm.setViewWindow(pMen.getX()-nWidth/2,pMen.getY()-nHeight/2,nWidth,nHeight);
            
            c1.nextFrame();

            if(pMenStep>0)
            {
            	pMen.nextFrame(); // fire Ani
            	pMenStep--;
            }
            
            
            if(effectbuts>0)
            {
            	if(effectbut!=null)
            	{
            		effectbut.setPosition(c1.getX()+64/effectbuts,c1.getY()+64/effectbuts);
            		effectbut.setVisible(true);
            		effectbuts=effectbuts-1;
            	}
            }
            else 
            {
            	if(effectbut!=null)
            		effectbut.setVisible(false);
            }
            //show effect;
            if(effectend>0)
            {
            	effect.nextFrame();
            	effectend=effectend-1;
            	System.out.println("fire:/res/xyyeffect2.png");
            }else
            {
//            	effect.setVisible(false);
            	if(effect!=null)
            	lm.remove(effect);
            	effect=null;
            }
            
            lm.paint(g,0,0);
                        
            g.setColor(0,0,0);
            
            g.drawString("testbody",10,getHeight()-20,(Graphics.TOP|Graphics.LEFT));
            g.drawRect(0,0,getWidth(),getHeight());
            flushGraphics() ;
    }
    boolean coll=false;
    public boolean collidect()
    {
//            if(c1.collidesWith(pMen,false))
//            {
//            	if(coll==false){
//                    Image good = null ;
//                    try
//                    {
//                            good = Image.createImage("/res/boss.png") ;
//                    }catch(Exception exp){}
//                    c1.setImage(good,tiledx,tiledy);
//                    coll=true;
//            		System.out.println();
//            	}   
//                return true;
//            }
//            if (coll==true) {
//            	Image good = null ;
//            	try
//                {
//                    good = Image.createImage("/res/boss.png") ;
//                }catch(Exception exp){}
//                c1.setImage(good,tiledx,tiledy);
//            	coll=false;
//            }
            return false ;
    }
    public void start()
    {
            Thread t = new Thread(this) ;
            t.start();
    }
    public void exit()
    {
            conti = false ;
    }
}

⌨️ 快捷键说明

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