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

📄 gamescreen.java

📁 由J2ME开发的一款手机网络游戏源代码!适合刚入门的下载学习!
💻 JAVA
字号:
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import java.util.Random;




public class GameScreen extends GameCanvas implements Runnable,CommandListener {
	private	Puke midlet;
	private int counter =0;
	private int sW,sH,Total,count,t,r,RobSlec;
	private boolean Pause,turn;
	private boolean isLoaded = false;
	private Image im_load,im_hand,im_back,im_card,im_figure,im_chioce;
    private Sprite hand;
    private Sprite[] chioce;
    private Card[] icard;    
	private Card[] hcard; 
	private Random random=new Random();

	//主状态
	private int GameState;
	private static final int LOADING=0;	
	private static final int START=1;
	private static final int PLAY=2;
	private static final int PAUSE=3;
	private static final int NEXT=4;
	private static final int EXIT=5;
	//游戏中
	private int PlayState;
	private static final int GET=0;
	private static final int CHOOSE=1;
	private static final int WAIT=2;
	private static final int COMPARE=3;
	private static final int ACCOUNT=4;
	//选择
	private int PressChoose;
	private static final int NULL=0;
	private static final int FOLLOW=1;
	private static final int COMPETE=2;
	private static final int DISCARD=3;
	
    class Loading implements Runnable {
       //内线程
       Thread innerThread = null;
    public Loading() {
         innerThread = new Thread(this);
         innerThread.start();
       }
       public void run(){
         while (counter<=11) {
           counter++;;
          
           	
        try {
             Thread.sleep(10);
           }
           catch (Exception ex) {}
         }
         //loading结束         
         isLoaded = true;
       }
    }
    
    private Loading loading = null;
    
	public GameScreen(Puke midlet){
		super(true);
		setFullScreenMode(true);  
		this.midlet = midlet;
		  /////////////////////////////////////////////
           sW=getWidth();
  	       sH=getHeight();
  	       Total=0;
  	       count=0;  	   
           try{
           im_load = Image.createImage("/load.png");
		   im_hand = Image.createImage("/hand.png");
		   im_back	= Image.createImage("/back.png");
		   im_card = Image.createImage("/card.png");
		   im_figure = Image.createImage("/figure.png");
		   im_chioce = Image.createImage("/chioce.png");
		   }catch(java.io.IOException e){}           
        hand = new Sprite (im_hand,20,29);
		hand.setPosition(sW/2,sH/2);
		//**********************//
		icard = new Card[]{
    	new Card(im_back),
    	new Card(im_back),
    	new Card(im_back),
        };		
		hcard = new Card[]{
    	new Card(im_back),
    	new Card(im_back),
    	new Card(im_back),
        };
		
		chioce =new Sprite[]{
		new Sprite(im_chioce,18,13),
		new Sprite(im_chioce,18,13),
		new Sprite(im_chioce,18,13),
		};
		
 		GameState=LOADING;
		PlayState=GET;
		PressChoose=NULL;
		//////////////////////////////////////////////	      
		loading = new Loading();
		startThread();
		setCommandListener(this);
    }
    
    private void startThread(){
    	Pause=false;
    	Thread th=new Thread(this);
    	th.start();
    }
    
	public void commandAction(Command c, Displayable d){                                                 
	}

	protected void keyPressed(int keyCode){
      switch(keyCode){
      	case -6://左
      	    switch(PlayState){//堆栈
      	    case GET://抓牌
      	    if(turn){
      	    	if(t==0&&hand.collidesWith(icard[0],true)){
      	      	  icard[0].Pressed=!icard[0].Pressed;
      	      	  icard[0].PressAndRelese();  	      	  
      	      	  if(icard[0].Goted){
      	      	  		icard[0].setImage(im_card,30,48);
      	      	  		icard[0].setFrame(icard[0].Col*12+icard[0].Num);
      	      	  		r=0;
      	      	  		turn=false;
      	      	  }
      	      	  if(icard[0].Pressed){
    	            hand.setFrame(1);
    	          }
    	          if(!icard[0].Pressed){    	     	  
    	   	        hand.setFrame(0);
      	          }break;
      	        }
      	        
      	        
      	        
      	        if(t==1&&hand.collidesWith(icard[1],true)){
      	      	  icard[1].Pressed=!icard[1].Pressed;
      	      	  icard[1].PressAndRelese();  	      	  
      	      	  if(icard[1].Goted){
      	      	  		icard[1].setImage(im_card,30,48);
      	      	  		icard[1].setFrame(icard[1].Col*12+icard[1].Num);
      	      	  		r=1;
      	      	  		turn=false;
      	      	  		
      	      	  }
      	      	  if(icard[1].Pressed){
    	            hand.setFrame(1);
    	          }
    	          if(!icard[1].Pressed){    	     	  
    	   	        hand.setFrame(0);
      	          }break;
      	         }
      	        
      	        
      	        if(t==2&&hand.collidesWith(icard[2],true)){
      	      	  icard[2].Pressed=!icard[2].Pressed;
      	      	  icard[2].PressAndRelese();  	      	  
      	      	  if(icard[2].Goted){
      	      	  		icard[2].setImage(im_card,30,48);
      	      	  		icard[2].setFrame(icard[2].Col*12+icard[2].Num);
      	      	  		r=2;
      	      	  		turn=false;
      	      	  		
      	      	  }
      	      	  if(icard[2].Pressed){
    	            hand.setFrame(1);
    	          }
    	          if(!icard[2].Pressed){    	     	  
    	   	        hand.setFrame(0);
      	          }break;
      	         }
            }
      	    break;
      	    case CHOOSE://比牌
      	    if(PressChoose==COMPETE&&hand.collidesWith(icard[0],true)&&!icard[0].Sended){
      			icard[0].Selected=!icard[0].Selected;
      		    icard[0].SelectAndRelese();
     		}
     		if(PressChoose==FOLLOW&&Total>10){//跟牌
      			PressChoose=NULL;
      			PlayState=WAIT;
      			turn=false;      			
     		}
      	    break;
      	    }
      	break;      	
      	case -7://右
      	Pause=true;
      	if(midlet.BackTo==1)      	     
        midlet.mainMenuScreenShow();
      	break;
      }
   }
   
   private void input() {
      int keyStates = getKeyStates(); 
      if((keyStates & FIRE_PRESSED) != 0){
      	//中
      	if(GameState==PLAY&&PlayState==CHOOSE){      		
      		for(int i=0;i<3;i++)
      		if(hand.collidesWith(chioce[i],true)){
      			PressChoose=i+1;
      		}
      		if(PressChoose==COMPETE){//发出
      	     	  if(icard[0].Selected){
      	     	  	icard[0].SendCard();
      	     	    PressChoose=NULL;
      	     	    PlayState=COMPARE;	     	  	
      	     	  }
      	    }
      	}
      	
      	
      	
      	
      	
      	
      }else if((keyStates & UP_PRESSED) != 0){
      	//上
    	if(hand.getY()>0)
    	hand.move(0,-4);
    	
    	if(PlayState==GET){
    		for(int i=0;i<3;i++)
    		if(icard[i].getY()>0)
    		icard[i].MoveCard(0,-4);
    	}
    	if(GameState==PLAY&&PlayState==CHOOSE&&PressChoose==FOLLOW){
    		hand.move(0,4);
    		Total++;
    	}
    	
      }else if ((keyStates & DOWN_PRESSED) !=0 ){
    	//下
    	if(hand.getY()<(sW+hand.getHeight()))
    	hand.move(0,4);
    	
    	if(PlayState==GET){
    		for(int i=0;i<3;i++)
    		if(icard[i].getY()<sW)
    		icard[i].MoveCard(0,4);
    	}
    	if(GameState==PLAY&&PlayState==CHOOSE&&PressChoose==FOLLOW){
    		hand.move(0,-4);
    		Total--;
    	}
    	
    	
    	
    	
      }else if ((keyStates & LEFT_PRESSED) !=0 ){
    	//左
    	if(hand.getX()>0)
    	hand.move(-4,0);
    	
    	if(PlayState==GET){
    		for(int i=0;i<3;i++)
    		if(icard[i].getX()>0)
    		icard[i].MoveCard(-4,0);
    	}
    	if(GameState==PLAY&&PlayState==CHOOSE&&PressChoose==FOLLOW){
    		hand.move(4,0);
    		Total--;
    	}
    	
    	
    	    	
      }else if ((keyStates & RIGHT_PRESSED) !=0 ){
    	//右
    	if(hand.getX()<(sW-hand.getWidth()))
    	hand.move(4,0);
    	
    	if(PlayState==GET){
    		for(int i=0;i<3;i++)
    		if(icard[i].getX()<(sW-icard[i].getWidth()))
    		icard[i].MoveCard(4,0);
    	}
    	if(GameState==PLAY&&PlayState==CHOOSE&&PressChoose==FOLLOW){
    		hand.move(-4,0);
    		Total++;
    	}
       
      }

   }
   
   public void run(){
    	Graphics g = getGraphics();
  	    while(!Pause){
           switch(GameState){
           	 case LOADING:
           	 if (isLoaded) {
             loading = null;
             im_load = null;
             GameState = START;
             }
             drawScreen(g);
           	 break;
      	     case START:
      	     for(int i=0;i<3;i++)
      	     {
      	     	icard[i].init();
      	     	icard[i].Num=random.nextInt(13);
		        icard[i].Col=random.nextInt(4);
      	     	icard[i].setImage(im_back,30,48);
      	     }
      	     
      	     for(int i=0;i<3;i++){
      	     	hcard[i].init();
      	     	hcard[i].setImage(im_back,30,48);
      	     	hcard[i].Num=random.nextInt(13);
		        hcard[i].Col=random.nextInt(4);      	     	
      	     }
      	     turn=true;
      	     Total=10;//Time=?
      	     
      	     hand.setPosition(83,115);
      	     
      	     chioce[0].setPosition(88,100);
      	     chioce[0].setFrame(0);
      	     chioce[1].setPosition(115,100);
      	     chioce[1].setFrame(1);
      	     chioce[2].setPosition(144,100);
      	     chioce[2].setFrame(2);
      	     count=0;
      	     for(int i=0;i<3;i++){
      	     	chioce[i].setVisible(false);      	     	
      	     }

      	     drawScreen(g);
      	     try{Thread.sleep(1000);}catch (Exception e){} 
      	     GameState=PLAY;
      	     PlayState=GET;
      	     PressChoose=NULL;
      	     
      	     break;
      	     case PLAY:////////////////游戏中/////////////////////////////////////
      	     drawScreen(g);
      	     try{Thread.sleep(10);}catch (Exception e){}
      	        switch(PlayState){//***********
      	        case GET:
      	          input();
                  robotget();
      	          break;
      	        case CHOOSE:      	          
      	          input();
      	          switch(PressChoose){//选项
      		        case FOLLOW:
      		        
      		        break;
      		        case COMPETE:
      		        
      		        break;
      		        case DISCARD:
      		        GameState=NEXT;
      		        break;

      		      }
      	          break;
      	        case WAIT:
      	          robot();
      	          try{Thread.sleep(1000);}catch (Exception e){} 
      	          drawScreen(g);      	          
      	          try{Thread.sleep(1000);}catch (Exception e){} 
                  PlayState=CHOOSE;
      	          break;
      	        case COMPARE:
      	          try{Thread.sleep(1000);}catch (Exception e){} 
      	          compare();
      	          PlayState=ACCOUNT;
      	          break;
      	        case ACCOUNT:
      	          account();
      	          try{Thread.sleep(1000);}catch (Exception e){} 
      	          GameState=NEXT;
             }//********************************
      	     break;////////////////////////////////////////////////////////////
      	     case PAUSE:
      	     drawScreen(g);
      	     try{Thread.sleep(20);}catch (Exception e){} 
      	     break;
      	     case NEXT:
      	     drawScreen(g);
      	     try{Thread.sleep(20);}catch (Exception e){}
      	     GameState=START;
      	     break;
      	     
  	   	   }//最外的switch
  	   }
   }
   
   public void drawScreen(Graphics g) {		
		g.setColor(0x006633);
		g.fillRect(0,0,sW,sH);
		g.setColor(0xffffff);
		
		switch(GameState){
      	     case LOADING:
      	     g.setColor(0x000000);
		     g.fillRect(0,0,sW,sH);		     
      	     g.drawImage(im_load,30,103,Graphics.TOP|Graphics.LEFT);
      	     g.setColor(0xffffff);
      	     g.drawLine(30,117,30+10*counter,117);
      	     break;
      	     case START:
      	     g.drawImage(im_figure,0,0,Graphics.TOP|Graphics.LEFT);
             g.drawImage(im_back,81,96,Graphics.TOP|Graphics.LEFT);

      	     
      	     break;
      	     case PLAY:
      	     g.drawImage(im_figure,0,0,Graphics.TOP|Graphics.LEFT);
        
             for(int i=0;i<3;i++){
		     	icard[i].paint(g);		 
		     }
             for(int i=0;i<3;i++){
		    	hcard[i].paint(g);		
		     }
		     for(int i=0;i<3;i++){
		    	chioce[i].paint(g);
		     }
             hand.paint(g);
      	     
      	     
      	     if(PlayState==GET){    	     	

      	     	
      	     }else if(PlayState==CHOOSE){
      	     	
      	     	
      	     }else if(PlayState==WAIT){
      	     	
      	     	
      	     }else if(PlayState==COMPARE){
      	     	
      	     	
      	     }else if(PlayState==ACCOUNT){
      	     	
      	     	
      	     }      	     
      	     
      	     break;
      	     case PAUSE:
      	     
      	     
      	     break;
      	     case NEXT:
      	     
      	     
      	     break;
      	     
  	   	}
        flushGraphics();
   }
  	
   public void compare(){
   	     
   }
   public void robotget(){
   	    if(!turn){
   	    	switch(r){
   	    		case 0:
   	    		System.out.println(9999);
   	    		hcard[0].setImage(im_card,30,48);
      	      	hcard[0].setFrame(hcard[0].Col*12+hcard[0].Num);
      	      	hcard[0].setPosition(4,42);
      	      	turn=true;
      	      	t=1;
   	    		break;
   	    		case 1:
   	    		hcard[1].setImage(im_card,30,48);
      	      	hcard[1].setFrame(hcard[1].Col*12+hcard[1].Num);
      	      	hcard[1].setPosition(39,42);
      	      	turn=true;
      	      	t=2;
   	    		break;
   	    		case 2:
   	    		hcard[2].setImage(im_card,30,48);
      	      	hcard[2].setFrame(hcard[2].Col*12+hcard[2].Num);
      	      	hcard[2].setPosition(75,42);
      	      	r=0;t=0;
      	      	turn=true;
      	      	PlayState=CHOOSE;
      	     	for(int k=0;k<3;k++)
      	     	chioce[k].setVisible(true);      	      	
   	    		break;
   	    	}
   	    	
   	    }
   	    
   }
   public void robot(){
   	  if(!turn){
   	  	   RobSlec=random.nextInt(3)+1;//并无逻辑
   	  	   RobSlec=1;
   	  	   System.out.println(4444);
      	   switch(RobSlec){
      		        case FOLLOW:
      		        Total+=10;
      		        turn=true;
      		        break;
      		        case COMPETE:
      		        turn=true;
      		        break;
      		        case DISCARD:
      		        
      		        
      		        break;

      		}
      	     
   	 }   
   }
   public void account(){
   	    
   	    
   	    
   }
   





}

⌨️ 快捷键说明

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