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

📄 gamecanvas.java

📁 此代码是手机五指棋代码!!使用ECLIPSE开发工具开发!!在手机模拟器上通过.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*
 * GameCanvas.java
 *
 * Created on 2006年2月20日, 下午10:07
 */

package GamePP;

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

/**
 *
 * @author  Sirius
 * @version
 */
public class GameCanvas extends Canvas implements Runnable {

	public  int HSPEED;    //纵向速度
	public  int WSPEED;    //横向速度
	private int FSPEED=10; //重力加速度
        private int index ;   //游戏开始状态的选择编号
	private int style[];
	private int LMBrick_Top_x ,LMBrick_Top_y  ;  //移动方块坐标
	private int RMBrick_Top_x ,RMBrick_Top_y  ;
	private int PBrick_Top_x[] ,PBrick_Top_y[] ; 
	private GamePP LMove_Brick;
	private GamePP RMove_Brick;
	private GamePP MainBoard  ;
	private GamePP Push_Brick ;
	private GamePP Girl ;
	private GamePP Boy ;
	private GamePP WinnerFrame;
	private GamePP heart;
        private GamePP WFrame ;
	
	private Image  copy;//缓冲区对象
	private int MLBrick_Hflag ;   //垂直移动方向
	private int MLBrick_Wflag ;   //水平移动方向
	private int MRBrick_Hflag ;
	private int MRBrick_Wflag ;
        private int FallFlag ;        // 下落标志 ,下落则屏蔽碰撞
	private int Push_Flag[] ;     //推动砖块标志,0:未推动,-1向左,1向右
	private int LIsPressed ;
	private int RIsPressed ;
	private int UP_MAX =0 ;
	private int DOWN_MAX=66 ;
	private int LEFT_MAX =0 ;
	private int RIGHT_MAX=98 ;
	private int LM_MAXRIGHT[] ;  //左边方块向右移动的最大距离
	private int RM_MAXLEFT[]  ;  //右边方块向左移动的最大距离
	private int PBrick_Place_Top_x[];//凹槽坐标
	private int PBrick_Place_Top_y[];
	private int PBrick_Place_Bottom_x=74;
	private int Boy_Push ;           //男孩第几个方块被推动了
	private int Girl_Push;           //女孩第几个方块被推动
	private int girl_x ;
	private int girl_y ;
	private int boy_x ;
	private int boy_y ;
	private int now_winner ;  //此局胜者
	private int boy_win_num ;
	private int girl_win_num;
	private int total_winner ;
	
	private int boy_heart_x[] ;
	private int boy_heart_y[] ;
	
	private int girl_heart_x[];
	private int girl_heart_y[];
	
	private int start ;      //游戏的一次性开始画面
	private boolean pause;//是否暂停游戏
	
	public GameCanvas() {
		super();
		copy= Image.createImage(this.getWidth(),this.getHeight());
		LMove_Brick=new GamePP("/MBrick1.png");
		RMove_Brick=new GamePP("/MBrick2.png");
		MainBoard =new GamePP("/mainFrame.png");
		Girl= new GamePP("/girl.png") ;
		Boy = new GamePP("/boy.png") ;
		Push_Brick =new GamePP("/Push_Brickl.png") ;
		WinnerFrame = new GamePP("/angle.png");
		heart= new GamePP("/heart.png") ;
                WFrame=new GamePP("/2191.png") ;
		
		style=new int[3] ;   
		Push_Flag =new int[3] ;
		PBrick_Top_x=new int[3] ;
		PBrick_Top_y=new int[3] ;
		LM_MAXRIGHT=new int[3] ;
		RM_MAXLEFT=new int[3] ;
		PBrick_Place_Top_x = new int[3];
		PBrick_Place_Top_y = new int[3];
		boy_heart_x = new int[2] ;
		boy_heart_y = new int[2] ;
		girl_heart_x=new int[2] ;
		girl_heart_y=new int[2] ;
		
		PBrick_Place_Top_x[0]=50 ;
		PBrick_Place_Top_y[0]=9 ;
		PBrick_Place_Top_x[1]=50 ;
		PBrick_Place_Top_y[1]=28 ;
		PBrick_Place_Top_x[2]=50 ;
		PBrick_Place_Top_y[2]=47 ;
		
		//奖励心的位置
		boy_heart_x[0]=51;
		boy_heart_x[1]=51;
		boy_heart_y[0]=68;
		boy_heart_y[1]=80;
		
		girl_heart_x[0]=62;
		girl_heart_x[1]=62;
		girl_heart_y[0]=68;
		girl_heart_y[1]=80;
		
		girl_x =76 ;
		girl_y =68 ;
		boy_x =33 ;
		boy_y =66 ;
		
		start=0 ;
                index=1 ;
		T_iniGame() ;
	}

	//单局初始化游戏变量参数
	protected void S_iniGame(){
//		WSPEED=4 ; //2,4,8
//		HSPEED=4 ; //1 ,3 ,6
		Boy_Push=8 ;  //初始时没有被推动的方块定位8
		Girl_Push=8;
		MLBrick_Hflag=0 ; //垂直运动方向 ,0向右,1向左
		MLBrick_Wflag=0 ; //水平运动方向 ,0无  ,1向右 ,-1向左
		MRBrick_Hflag=0 ;
		MRBrick_Wflag=0 ;
                FallFlag= 0 ;     //初始时置0
		for(int i=0 ;i<3;i++){
			Push_Flag[i]=0 ;
			style[i]=0 ;
		}
		
		LMBrick_Top_x =0 ;
		LMBrick_Top_y =0 ;
		RMBrick_Top_x =98;
		RMBrick_Top_y =0 ;
		
		now_winner=0 ;//0为新的一局,1为boy胜,8为girl胜
		total_winner=0 ;
		                   
		for(int i=0 ;i<3; i++){
		PBrick_Top_x[i]=PBrick_Place_Top_x[i] ;
		PBrick_Top_y[i]=PBrick_Place_Top_y[i] ;
		}
		LIsPressed =0 ;
		RIsPressed =0 ;
		
		for(int i=0 ;i<3 ;i++){
		LM_MAXRIGHT[i]=PBrick_Place_Top_x[i]-26; //26为活动方块长度
		RM_MAXLEFT[i]=PBrick_Place_Bottom_x;
		}
		
		pause = false;
	}
	//游戏重载
	protected void T_iniGame(){
		S_iniGame();
		boy_win_num=0 ;
		girl_win_num=0;
	}
	
	protected void paint(Graphics g) {

		Graphics offscreen = copy.getGraphics();// 获得一个新的Graphics对象
		//清屏
		offscreen.setColor(255,255,255);
		offscreen.fillRect(0,0,this.getWidth(),this.getHeight());      
		if((start==1)&&(index==1)){
		//游戏画面    
		if((total_winner==0)&&(now_winner==0)){
			MainBoard.OffdrawPic( 0,0,offscreen) ;
			LMove_Brick.OffdrawPic( LMBrick_Top_x,LMBrick_Top_y,offscreen) ;
			RMove_Brick.OffdrawPic( RMBrick_Top_x,RMBrick_Top_y,offscreen) ;
			
			for(int i=0;i<3;i++){
				Push_Brick.OffdrawPic(PBrick_Top_x[i],PBrick_Top_y[i],offscreen );
				}
			Girl.OffdrawPic(girl_x,girl_y,offscreen);
			Boy.OffdrawPic( boy_x,boy_y,offscreen);
			for(int i=0;(i<boy_win_num)&&(boy_win_num<3);i++){
				heart.OffdrawPic( boy_heart_x[i],boy_heart_y[i],offscreen) ;
			}
			for(int i=0;(i<girl_win_num)&&(girl_win_num<3);i++){
				heart.OffdrawPic( girl_heart_x[i],girl_heart_y[i],offscreen);
			}
			g.drawImage( copy,0,0,Graphics.LEFT |Graphics.TOP );
			}                                                             
		//单局胜利画面
		else if((total_winner==0)&&(now_winner!=0)){      
			String ss1 ;
			String ss2 ;
			
			String ss4 ;
			//男孩单局胜利画面
			if(now_winner==1){                                                  
				WFrame.OffdrawPic(0,0,offscreen);
				
				if(boy_win_num==1){
                                    ss1="男孩胜利!" ;
                                    ss2="厉害!!!!" ;
                                }
				else{
                                    ss1="男孩再次胜利!" ;
                                    if(girl_win_num==2){
                                        ss2="战成平手!!" ;
                                    }
                                    else{
                                        ss2="女孩要加油了!!";
                                    }
                                    
                                }
				ss4="按5进行下一局" ;
				g.setColor(0x00ffeedd);
				g.drawImage(copy,0,0,Graphics.LEFT |Graphics.TOP );
				g.setFont(Font.getFont(Font.FACE_SYSTEM ,Font.STYLE_BOLD,Font.SIZE_LARGE));
				g.drawString(ss1,1,3,Graphics.TOP |Graphics.LEFT );
				g.drawString(ss2,5,40,Graphics.TOP |Graphics.LEFT );
                                g.setColor(0x00fffe57) ;
				g.drawString(ss4,0,70,Graphics.TOP |Graphics.LEFT);
				
			}
			//女孩单局胜利画面
			else {
				                                   
				WFrame.OffdrawPic(0,0,offscreen);
				
				if(girl_win_num==1){
                                    ss1="女孩胜利!" ;
                                    ss2="厉害!!!!" ;
                                }
				else{
                                    ss1="女孩又胜利了!" ;
                                    if(boy_win_num==2){
                                        ss2="追成平手!!" ;
                                    }
                                    else{
                                        ss2="男孩别丢人哦!!";
                                    }
                                    
                                }
				ss4="按5进行下一局" ;
				g.setColor(0x00ffffff);
				g.drawImage(copy,0,0,Graphics.LEFT |Graphics.TOP );
				g.setFont(Font.getFont(Font.FACE_SYSTEM ,Font.STYLE_BOLD,Font.SIZE_LARGE));
				g.drawString(ss1,1,3,Graphics.TOP |Graphics.LEFT );
				g.drawString(ss2,5,40,Graphics.TOP |Graphics.LEFT );
                                g.setColor(0x00fffe57) ;
				g.drawString(ss4,0,70,Graphics.TOP |Graphics.LEFT);
			}
			
			
		}
		//总局胜利画面
		else{
			//男孩总局胜利画面
			String ss1;
//			String ss2;
			String ss3;
			if(total_winner==1){  
				ss1="最终冠军--男孩!" ;
				ss3="按5开新的较量";
				WFrame.OffdrawPic(0,0,offscreen);
				g.drawImage( copy,0,0,Graphics.LEFT|Graphics.TOP);
				g.setColor(0x00ddffee);
				g.setFont(Font.getFont(Font.FACE_SYSTEM ,Font.STYLE_BOLD,Font.SIZE_LARGE));
				g.drawString(ss1,4,3,Graphics.TOP |Graphics.LEFT );
                                g.setColor(0x00fffe57) ;
				g.drawString(ss3,0,77,Graphics.TOP |Graphics.LEFT );
				
			}
			//女孩总局胜利画面
			else if(total_winner==8){
				ss1="女孩赢得冠军!" ;
				ss3="按5开新的较量";
				WFrame.OffdrawPic(0,0,offscreen);
				g.drawImage( copy,0,0,Graphics.LEFT|Graphics.TOP);
				g.setColor(0x00ccffff);
				g.setFont(Font.getFont(Font.FACE_SYSTEM ,Font.STYLE_BOLD,Font.SIZE_LARGE));
				g.drawString(ss1,4,3,Graphics.TOP |Graphics.LEFT );
                                g.setColor(0x00fffe57) ;
				g.drawString(ss3,0,77,Graphics.TOP |Graphics.LEFT );
				}
			}
		}
                //游戏帮助界面
                else if((start==1)&&(index==2)){
                    g.setColor(0x00000000) ;
                    g.fillRect(0, 0,this.getWidth(), this.getHeight());
                    g.setColor(0x00abcdef) ;
                    g.setFont(Font.getFont(Font.FACE_SYSTEM ,Font.STYLE_BOLD,Font.SIZE_SMALL));
                    String ss1="本游戏可供2人在闲暇时" ;
                    String ss2="间娱乐4控制左边的蓝色"  ;
                    String ss3="移动方块水平向右撞击;" ;
                    String ss4="5控制黄色移动方块向左" ;
                    String ss5="撞击;中间共有3个粉色";
                    String ss6="方块,若被撞击则移动一";
                    String ss7="格,移动3格会下落;不要";
                    String ss9="让自己被砸倒哦^^";
                    String ss8="按5返回" ;
               
                    
                    g.drawString(ss1, 1, 1,Graphics.TOP |Graphics.LEFT ) ;
                    g.drawString(ss2,1,12, Graphics.TOP |Graphics.LEFT) ;
                    g.drawString(ss3, 1, 23, Graphics.TOP |Graphics.LEFT) ;
                    g.drawString(ss4, 1, 34, Graphics.TOP |Graphics.LEFT) ;
                    g.drawString(ss5, 1, 45, Graphics.TOP |Graphics.LEFT) ;
                    g.drawString(ss6, 1, 56, Graphics.TOP |Graphics.LEFT) ;
                    g.drawString(ss7, 1, 67, Graphics.TOP |Graphics.LEFT) ;
                    g.drawString(ss9, 1, 78, Graphics.TOP |Graphics.LEFT) ;
//                    g.drawString(ss10, 1, 89, Graphics.TOP |Graphics.LEFT) ;

⌨️ 快捷键说明

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