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

📄 game.java

📁 J2ME实现得梭哈游戏联网程序
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
	/********绘制头像**********/
	void DrawHead(Graphics g,int x,int y,int index)
	{
		int h= index%3;
		int v=index/3;
		g.drawRegion(ImgMode[GameDef.ImgHead],h*32,v*32,32,32,0,
				x,y,0);
		//Tool.drawImage(g, Hall.imgPortrait[info_player.Portrait+1],
	}
	/******绘制信息*********/
	void DrawInfor(Graphics g,int position)
	{
		if(Def.bDgg) System.out.println("绘制信息"+position);
		g.setClip(GameDef.UserInfor[position][0],GameDef.UserInfor[position][1],140,40);
		//System.out.println("back 4");
		DrawBack(g);
		//	if(position==0)
		//	g.fillRect(GameDef.UserInfor[position][0],GameDef.UserInfor[position][1],GameDef.Inforw,4*GameDef.Inforh/5);
		//else
		//g.fillRect(GameDef.UserInfor[position][0],GameDef.UserInfor[position][1],GameDef.Inforw,GameDef.Inforh);
		g.setColor(0xffffff);
		//g.drawString("总 注:"+UserZu[position][1],GameDef.UserInfor[position][0],GameDef.UserInfor[position][1]+5,0);
		g.drawString("已下注:"+UserZu[position][0],GameDef.UserInfor[position][0],GameDef.UserInfor[position][1],0);
		DrawName(g,position,GameDef.UserName[position][0],
				GameDef.UserName[position][1]);
		//g.drawString("总注"+GamePlayer[position].Gold,GameDef.UserInfor[position][0],GameDef.UserInfor[position][1]+20,0);
	}

	/********绘制用户名*********/
	void DrawName(Graphics g,int position,int x,int y)
	{
		g.setColor(0xffffff);
	    if(GamePlayer[position]==null)
	    	return;
		String suitname=GamePlayer[position].Nick;		//if(GamePlayer[position].NICK!=null)
		char[]name=GamePlayer[position].Nick.toCharArray();
		for(int i=1;i<=name.length;i++)
		{
			int w=g.getFont().stringWidth(GamePlayer[position].Nick.substring(0,i));
			if(w>g.getFont().stringWidth("aaaaaa"))
			{
				suitname=GamePlayer[position].Nick.substring(0,i-1);
				break;
			}
		}
		if(GameStatus==GameDef.ResultStatus)
		{
			g.drawString(suitname,x,y+5,0);
			return;
		}
		if(position>=3)
		{
			g.drawString(suitname,x,y+5,TR);
		}
		else
		{
			g.drawString(suitname,x,y+5,0);
		}
	}
	/*******绘制游戏 结算界面********/
	void DrawResult(Graphics g)
	{
		//g.setClip(0,0,Def.CANVAS_WIDTH,Def.CANVAS_HEIGHT);
		//DrawBack(g);
		//if(Def.bDgg) System.out.println("back 5");
		int lw=ImgOver[GameDef.Overl].getWidth();
		int sw=ImgOver[GameDef.Overs].getWidth();
		int bx=GameDef.Overx;
		int by=GameDef.Overy;
		g.drawImage(ImgOver[GameDef.Overl],bx,by,0);
		for(int i=0;i<17;i++)
			g.drawImage(ImgOver[GameDef.Overs],bx+lw+i*sw,by,0);
		g.drawRegion(ImgOver[GameDef.Overl],0,0,ImgOver[GameDef.Overl].getWidth(),ImgOver[GameDef.Overl].getHeight(),
				Sprite.TRANS_MIRROR,bx+lw+17*sw,by,0);
		/*switch(OverMode)
		{
		case 0:
			g.drawString("游戏结束",bx+10,by+15,0);
			break;
		case 1:
			g.drawString("有人开牌游戏结束",bx+10,by+15,0);
			break;
		case 2:
			g.drawString("玩家封顶游戏结束",bx+10,by+15,0);
			break;
		case 3:
			g.drawString("整桌封顶游戏结束",bx+10,by+15,0);
			break;
		}*/

		g.drawImage(ImgOver[GameDef.Overjiesuan],bx+250,by+15,0);
		//g.drawString("喜 金"+XiJin,bx+260,by+15,0);
		int infox=GameDef.Overx+GameDef.OverInforw;
		int infoy=GameDef.Overy+GameDef.OverInforh-4;
		int inforh=40;
		int index=0;
		for(int i=0;i<MaxUser;i++)
		{  
			if(BInGame[i])
			{ 

				DrawHead(g,infox,infoy+index*inforh,GamePlayer[i].Portrait+1);
				DrawName(g,i,infox+37,infoy+index*inforh-5);
				if(Score[i]>0)
					g.drawString("胜利",infox+90,infoy+index*inforh,0);
				else
					g.drawString("失败",infox+90,infoy+index*inforh,0);
				//drawIntString(g,Score[i],infox+130,infoy+index*inforh);
				g.drawString(""+Score[i],infox+137,infoy+index*inforh,0);
				//g.drawString(getRating(UserZu[i][1]),infox+163,infoy+index*inforh,0);
				drawCardType(g,i,infox+256,infoy+index*inforh);
				/*	switch(CardType[i])
				{
				  case 1:
					  g.drawString("散牌",infox+200,infoy+index*inforh,0);
					  break;
				  case 0:
					  g.drawString("对子",infox+200,infoy+index*inforh,0);
					  break;
				  case 2:
					  g.drawString("同花",infox+200,infoy+index*inforh,0);
					  break;
				}*/
				DrawAllPai(g,i,index);
				index+=1;
			}

		}

	}

	/*绘制结算选着框*/
	void DrawOverSelect(Graphics g)
	{
		OverLoop+=1;
		if(OverLoop>=20)
			OverLoop=0;
		g.setClip(GameDef.Overx+220-33,GameDef.Overy+369,GameDef.Overx+200+100-33+63,27);
		DrawResult(g);
		g.drawImage(ImgOver[GameDef.Overbegin],GameDef.Overx+219,GameDef.Overy+382,HV);
		g.drawImage(ImgOver[GameDef.Overexit],GameDef.Overx+200+99,GameDef.Overy+382,HV);

		if(OverLoop<=10)
			g.setColor(0xff0000);
		else 
			g.setColor(0x00ff00);
		if(OverSelect==0)
		{
			g.drawRect(GameDef.Overx+220-33,GameDef.Overy+369,62,25);
			g.drawRect(GameDef.Overx+220-32,GameDef.Overy+370,60,23);
		}
		else if(OverSelect==1)
		{
			g.drawRect(GameDef.Overx+200+100-33,GameDef.Overy+369,62,25);
			g.drawRect(GameDef.Overx+200+100-32,GameDef.Overy+370,60,23);
		}

	}


	/***清除 用户信息********/
	void FlushUser(Graphics g,int position)
	{
		g.setClip(GameDef.UserHead[position][0],GameDef.UserHead[position][1],32,32);
		DrawBack(g);
		if(position>2)
		{
			g.setClip(GameDef.UserName[position][0]-60,GameDef.UserName[position][1],60,40);
			DrawBack(g);
		}
		else
		{
			g.setClip(GameDef.UserName[position][0],GameDef.UserName[position][1],60,40);
			DrawBack(g);
		}

		g.setClip(GameDef.UserInfor[position][0],GameDef.UserInfor[position][1],137,42);
		DrawBack(g);
		g.setClip(GameDef.PaiPosition[position][0],GameDef.PaiPosition[position][1],33*3,45);
		DrawBack(g);
		//if(Def.bDgg)System.out.println("back 6");
		//if(Banker==position)
		{
			//g.setClip(GameDef.Zhuang[position][0],GameDef.Zhuang[position][0],g.getFont().stringWidth("庄 家"),40);
			//DrawBack(g);
			//if(Def.bDgg)System.out.println("back 7");
		}
	}
	/********清除举手得 状态********/
	void FlushReady(Graphics g,int position)
	{
		g.setClip(GameDef.PaiPosition[position][0],GameDef.PaiPosition[position][1],41,34);
		DrawBack(g);
		//System.out.println("back 8");
	}

	/*********绘制玩家只是方向**********/
	void DrawDirect(Graphics g,int direct,boolean up)
	{
		//Image img=null;
		if(up)
			g.drawImage(ImgMode[GameDef.ImgDirect],GameDef.CountTime[direct][0],
					GameDef.CountTime[direct][1],HV);
		else
		{
			g.setClip(GameDef.CountTime[direct][0]-22,
					GameDef.CountTime[direct][1]-22,44,44);
			DrawBack(g);
			//System.out.println("back 1");
		}
		/*	switch(direct)
		{
		case 0:
			g.drawRegion(img,0,0,img.getWidth()
					,img.getHeight(),Sprite.TRANS_ROT180,GameDef.DirectPosition[direct][0],
					GameDef.DirectPosition[direct][1],0);
			break;
		case 1:
			g.drawRegion(img,0,0,img.getWidth()
					,img.getHeight(),0,GameDef.DirectPosition[direct][0],
					GameDef.DirectPosition[direct][1],0);
			break;
		case 2:
			g.drawRegion(img,0,0,img.getWidth()
					,img.getHeight(),Sprite.TRANS_ROT180,GameDef.DirectPosition[direct][0],
					GameDef.DirectPosition[direct][1],0);
			break;
		case 3:
			g.drawRegion(img,0,0,img.getWidth()
					,img.getHeight(),0,GameDef.DirectPosition[direct][0],
					GameDef.DirectPosition[direct][1],0);
			break;
		case 4:
			g.drawRegion(img,0,0,img.getWidth()
					,img.getHeight(),Sprite.TRANS_ROT180,GameDef.DirectPosition[direct][0],
					GameDef.DirectPosition[direct][1],0);
			break;
		case 5:
			g.drawRegion(img,0,0,img.getWidth()
					,img.getHeight(),0,GameDef.DirectPosition[direct][0],
					GameDef.DirectPosition[direct][1],0);
			break;
		}*/
	}

	/*初始化剪切区域*/
	void InitClip(Graphics g)
	{
		g.setClip(0,0,Def.CANVAS_WIDTH,Def.CANVAS_HEIGHT);
	}

	/****绘制时间************/
	void DrawTime(Graphics g)
	{
		if(GotoResult>=0)
			return;
		if(CurrentUser<0)
			return;
		if(CountTime<0)
			return;
		for(int i=0;i<MaxUser;i++)
		{
			if(LastUser>=0&&CurrentUser!=i)
				{
				  DrawDirect(g,i,false); 
				  LastUser-=1;
				}
		}

		DrawDirect(g,CurrentUser,true);              
		g.setColor(0xffffff);
		g.drawString(""+CountTime,GameDef.CountTime[CurrentUser][0],
				GameDef.CountTime[CurrentUser][1]-10,TV);
		if(System.currentTimeMillis()-BaseCountTime>=1000)
		{
			CountTime-=1;
			BaseCountTime=System.currentTimeMillis();
		}
		if(CountTime<=0&&CurrentUser==0)
		{
			if(showAddCoin>0)
			{
				showAddCoin=0;
				BflushMenu=true;
			}
			
			actionType=3;
			//System.out.println("发送放弃"+actionType);
			_Commu.formatSendPack((short)100,(short)483);
		}
	}
	/*********绘制一张牌***********/
	void DrawPai(Graphics g,int x,int y,int huase,int dian )
	{

		//if(Def.bDgg)  System.out.println("绘制x"+x+"y"+y+"huase"+huase+"dian"+dian);
		int color=1;
		if(huase>=0)
		{
			g.drawImage( ImgMode[GameDef.ImgCardFace],x,y,0);
			if(huase==GameDef.Huase_meihua||huase==GameDef.Huase_heitao)
				//g.setColor(0x000000);
				color=0;
			//else
			//g.setColor(0xff0000);
			/*	if(dian==1)
				g.drawString("A",x+5,y,0);
			else if(dian==11)
				g.drawString("J",x+5,y,0);
			else if(dian==12)
				g.drawString("Q",x+5,y,0);
			else if(dian==13)
				g.drawString("K",x+5,y,0);
			else if(dian==10)
				g.drawString(""+dian,x,y,0);
			else 
				g.drawString(""+dian,x+4,y,0);*/
			g.drawRegion(ImgMode[GameDef.ImgCardn],(dian-1)*15,color*15,15,15,0,x+1,y+1,0);
			g.drawImage( ImgHuase[huase],x,y+17,0);

		}
		else
			g.drawImage( ImgMode[GameDef.ImgCardBack],x,y,0);

	}

	/*初始化操作显示问题*/
	void InitOperation(int position,int value)
	{
		if(BGameing[position])
		{
			Operation[position]=value;
		    OperationTime[position]=20;
		}
	}
	/*绘制操作*/
	void DrawOperation(Graphics g)
	{
		for(int i=0;i<MaxUser;i++)
		{
			if(Operation[i]>0)
			{
				g.setColor(0xff00ff);
				switch(Operation[i])
				{
				case 1:                    //跟牌
					g.drawRegion(ImgMode[GameDef.ImgFont],1*46,0,46,17,0,GameDef.Zhuang[i][0],GameDef.Zhuang[i][1]+5,0);
					//g.drawString("跟 牌",GameDef.Zhuang[i][0],GameDef.Zhuang[i][1]+5,0);
					break;
				case 2: 
					g.drawRegion(ImgMode[GameDef.ImgFont],0*46,0,46,17,0,GameDef.Zhuang[i][0],GameDef.Zhuang[i][1]+5,0);
					//g.drawString("加 注",GameDef.Zhuang[i][0],GameDef.Zhuang[i][1]+5,0);//加注
					break;
				case 3:    
					//g.drawString("放 弃",GameDef.PaiPosition[i][0]+10,GameDef.PaiPosition[i][1]+5,0);//放弃
					break;
				case 6: 
					g.drawRegion(ImgMode[GameDef.ImgFont],5*46,0,46,17,0,GameDef.Zhuang[i][0],GameDef.Zhuang[i][1]+5,0);
					//g.drawString("开 牌",GameDef.Zhuang[i][0],GameDef.Zhuang[i][1]+5,0);//开牌
					break;
				case 4: 
					g.drawRegion(ImgMode[GameDef.ImgFont],4*46,0,46,17,0,GameDef.Zhuang[i][0],GameDef.Zhuang[i][1]+5,0);
					//g.drawString("不 下",GameDef.Zhuang[i][0],GameDef.Zhuang[i][1]+5,0);//开牌
					break;
				case 5: 
					g.drawRegion(ImgMode[GameDef.ImgFont],3*46,0,46,17,0,GameDef.Zhuang[i][0],GameDef.Zhuang[i][1]+5,0);
					//g.drawString("梭 哈",GameDef.Zhuang[i][0],GameDef.Zhuang[i][1]+5,0);//开牌
					break;

				}
				OperationTime[i]-=1;
				if(OperationTime[i]<=0)
				{
					//DrawAllPai(g,i,-1);
					//if(!BGameing[i])
					//	DrawFlag(i,1);
					g.setClip(GameDef.Zhuang[i][0],GameDef.Zhuang[i][1]+5,46,20);
					DrawBack(g);
					Operation[i]=0;
				}
				//g.setFont(Def.VL_FONT_SMALL);
			}


		}
	}

	/*绘制比牌信息*/
	void DrawCompare(Graphics g,int comper,int compared,int winer)
	{
		//if(Def.bDgg)  System.out.println("comper"+comper+"compared"+compared+"winer"+winer);
		g.drawImage(ImgMode[GameDef.Imgcenter],GameDef.Comparex, GameDef.Comparey,0);
		g.setColor(0x000000);
		g.drawString(GamePlayer[comper].Nick+" VS "+GamePlayer[compared].Nick,
				GameDef.Comparex+GameDef.Comparew/2, GameDef.Comparey+5,TV);
		DrawAllPai(g,comper,9);
		DrawAllPai(g,compared,10);
		g.setColor(0xff0000);
		if(winer==comper)
		{
			g.drawString("胜 利",GameDef.Comparex+20,GameDef.Comparey+30,0);
			g.drawString("失 败",GameDef.Comparex+100,GameDef.Comparey+30,0);

		}
		else 
		{
			g.drawString("失  败",GameDef.Comparex+20,GameDef.Comparey+30,0);
			g.drawString("胜  利",GameDef.Comparex+100,GameDef.Comparey+30,0);
		}
		if(CompareTime<=0)
		{
			g.setClip(GameDef.Comparex, GameDef.Comparey,GameDef.Comparew, GameDef.Compareh);
			DrawBack(g);
			int zu=0;
			for(int i=0;i<MaxUser;i++)
			{
				if(BInGame[i])
				{
					zu+=UserZu[i][0]; 
				}
			}
			DrawCoin( g,zu );
			//DrawAllPai(g,5,-1);
			//	DrawInfor(g,5);
			//DrawInfor(g,4);
			Comparer=-1;
			Compared=-1;
			CompareWin=-1;
			CompareTime=-1;

			return;
		}
		if(System.currentTimeMillis()-CompareBaseTime>=1000)
		{
			CompareTime-=1;
			CompareBaseTime=System.currentTimeMillis();
		}

	}


	/*清除菜单*/
	void FlushMenu(Graphics g)
	{
		System.out.println("FlushMenu(");
		//if(canSuoha>0)
		{
			g.setClip(GameDef.ButX-GameDef.Menuw/2,GameDef.ButY-48,GameDef.Butdis,30);
			DrawBack(g);
		}
		g.setClip(GameDef.ButX-GameDef.Menuw/2,GameDef.ButY-GameDef.Menuh/4,GameDef.Butdis*4,30);
		DrawBack(g);
		//if(BInGame[1])
		DrawInfor(g,0);
		BflushMenu=false;
	}

	/*绘制菜单*/

	void DrawMenu(Graphics g)
	{
		FlashTime+=1;
		if(FlashTime>10)
			FlashTime=0;
		g.setColor(0x0000);
		if(canSuoha>0)
		{
			if(MenuIndex==4)
			{
				if(FlashTime<=5)
					g.drawRegion(ImgMode[GameDef.Imghmenu],0,0,62,29,0,GameDef.ButX-GameDef.Menuw/2,
							GameDef.ButY-40-GameDef.Menuh/4,0);
				else
					g.drawRegion(ImgMode[GameDef.Imghmenu],62,0,62,29,0,GameDef.ButX-GameDef.Menuw/2,
							GameDef.ButY-40-GameDef.Menuh/4,0);
			}
			else
			{
				g.drawRegion(ImgMode[GameDef.Imghmenu],62,0,62,29,0,GameDef.ButX-GameDef.Menuw/2,
						GameDef.ButY-40-GameDef.Menuh/4,0);
			}
			g.drawRegion(ImgMode[GameDef.ImgFont],3*46,0,46,17,0,GameDef.ButX,GameDef.ButY-40-2,TV);
			//g.drawString("梭哈",GameDef.ButX,GameDef.ButY-40,TV);
		}
		for(int i=0;i<Menu.length;i++)
		{
			if(Menu[i]>0)
			{
				//System.out.println(i+"menu"+Menu[i]);
				if(MenuIndex==i)
				{	
					if(FlashTime<=5)
						g.drawRegion(ImgMode[GameDef.Imghmenu],0,0,62,29,0,GameDef.ButX+i*GameDef.Butdis-GameDef.Menuw/2,
								GameDef.ButY-GameDef.Menuh/4,0);
					else 
						g.drawRegion(ImgMode[GameDef.Imghmenu],62,0,62,29,0,GameDef.ButX+i*GameDef.Butdis-GameDef.Menuw/2,
								GameDef.ButY-GameDef.Menuh/4,0);
				}
				else
					g.drawRegion(ImgMode[GameDef.Imghmenu],62,0,62,29,0,GameDef.ButX+i*GameDef.Butdis-GameDef.Menuw/2,
							GameDef.ButY-GameDef.Menuh/4,0);



				switch(Menu[i])
				{

				case SignAdd:
					g.drawRegion(ImgMode[GameDef.ImgFont],0*46,0,46,17,0,GameDef.ButX+i*GameDef.Butdis,GameDef.ButY-2,TV);
					//g.drawString("加注",GameDef.ButX+i*GameDef.Butdis,GameDef.ButY,TV);
					break;
				case SignGiveup:
					g.drawRegion(ImgMode[GameDef.ImgFont],2*46,0,46,17,0,GameDef.ButX+i*GameDef.Butdis,GameDef.ButY-2,TV);
					//g.drawString("放弃",GameDef.ButX+i*GameDef.Butdis,GameDef.ButY,TV);
					break;
				case SignFollow:
					g.drawRegion(ImgMode[GameDef.ImgFont],1*46,0,46,17,0,GameDef.ButX+i*GameDef.Butdis,GameDef.ButY

⌨️ 快捷键说明

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