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

📄 canvaslord.java

📁 用J2ME开发手机网络游戏——斗地主,调试环境:Win XP;J2ME
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
			}
			else
			{
				if(sendpai2[i]%4==1)
				{
					g.setColor(255, 0, 0);
					g.drawImage(pic1, width-1-17-sendnum2*11+i*11+1,dup+13+28+2+45+fontHeight, Graphics.LEFT|Graphics.TOP);
				}
				else if(sendpai2[i]%4==2)
				{
					g.setColor(0, 0, 0);
					g.drawImage(pic2, width-1-17-sendnum2*11+i*11+1,dup+13+28+2+45+fontHeight, Graphics.LEFT|Graphics.TOP);
				}
				else if(sendpai2[i]%4==3)
				{
					g.setColor(255, 0, 0);
					g.drawImage(pic3, width-1-17-sendnum2*11+i*11+1,dup+13+28+2+45+fontHeight, Graphics.LEFT|Graphics.TOP);
				}
				else if(sendpai2[i]%4==0)
				{
					g.setColor(0, 0, 0);
					g.drawImage(pic4, width-1-17-sendnum2*11+i*11+1,dup+13+28+2+45+fontHeight, Graphics.LEFT|Graphics.TOP);
				}
				g.drawString(int2String(sendpai2[i]), width-1-17-sendnum2*11+i*11+1,dup+13+28+2+45, Graphics.TOP|Graphics.LEFT);
				//
			}
		}
	}
	public void drawArrow()
	{
		if(cardNum==0)return;
		g.drawImage(pica, x+arrowPos*11-1, getHeight()-18-cardh-5, Graphics.BOTTOM|Graphics.LEFT);
	}
	public void clearArrow()
	{
		g.setColor(bgcolor[0],bgcolor[1],bgcolor[2]);//////
		g.fillRect(x+arrowPos*11, getHeight()-18-cardh-5-16, 13, 16);
	}
	public void drawCards()
	{
		g.setColor(bgcolor[0],bgcolor[1],bgcolor[2]);//////////clear
		g.fillRect(0, getHeight()-18-cardh-5, getWidth(), cardh+5+1);
		if(cardNum==0) return;
		if(isOver)return;
		//清空牌所能占到的全部画面,包括牌被选中的上面5
		int dh=0;
		//if(isLord)
		{
			int cnt=0;
			for(int i=0;i<cardNum;i++)
			{
				if(state[i]==0) dh=0;
				else if(state[i]==1) dh=5;
				//画每张牌前,都待检查该牌是否被选中?
				//根据牌是否被选中,画相应的牌
					g.setColor(255, 255, 255);
					g.fillRoundRect(x+cnt*11, getHeight()-18-cardh-dh, cardw,cardh, 6, 6);
					g.setColor(0, 0, 0);
					g.drawRoundRect(x+cnt*11, getHeight()-18-cardh-dh, cardw,cardh, 6, 6);
					if(leftpai[i]==53)
					{//queen
						g.drawImage(picq, x+cnt*11+1, getHeight()-18-cardh+1-dh, Graphics.TOP|Graphics.LEFT);
						cnt++;
						continue;
					}
					if(leftpai[i]==54)
					{//king
						g.drawImage(pick, x+cnt*11+1, getHeight()-18-cardh+1-dh, Graphics.TOP|Graphics.LEFT);
						cnt++;
						continue;
					}
					int k=0;
					if(leftpai[i]%4==1)
					{
						g.setColor(255, 0, 0);
						k=leftpai[i]/4+3;
						g.drawImage(pic1, x+cnt*11+1, getHeight()-18-cardh+fontHeight+2*1-dh, Graphics.TOP|Graphics.LEFT);
					}
					else if(leftpai[i]%4==2)
					{
						g.setColor(0, 0, 0);
						k=leftpai[i]/4+3;
						g.drawImage(pic2, x+cnt*11+1, getHeight()-18-cardh+fontHeight+2*1-dh, Graphics.TOP|Graphics.LEFT);
					}
					else if(leftpai[i]%4==3)
					{
						g.setColor(255, 0, 0);
						k=leftpai[i]/4+3;
						g.drawImage(pic3, x+cnt*11+1, getHeight()-18-cardh+fontHeight+2*1-dh, Graphics.TOP|Graphics.LEFT);
					}
					else if(leftpai[i]%4==0)
					{
						g.setColor(0, 0, 0);
						k=leftpai[i]/4+2;
						g.drawImage(pic4, x+cnt*11+1, getHeight()-18-cardh+fontHeight+2*1-dh, Graphics.TOP|Graphics.LEFT);
					}
					//以上是根据牌的值,画出其花色,共红黑方梅四种。
					
					if(k==11)
						g.drawString("J", x+cnt*11+3, getHeight()-18-cardh+1-dh, Graphics.TOP|Graphics.LEFT);
					else if(k==12)
						g.drawString("Q", x+cnt*11+3, getHeight()-18-cardh+1-dh, Graphics.TOP|Graphics.LEFT);
					else if(k==13)
						g.drawString("K", x+cnt*11+3, getHeight()-18-cardh+1-dh, Graphics.TOP|Graphics.LEFT);
					else if(k==14)
						g.drawString("A", x+cnt*11+3, getHeight()-18-cardh+1-dh, Graphics.TOP|Graphics.LEFT);
					else if(k==15)
						g.drawString("2", x+cnt*11+3, getHeight()-18-cardh+1-dh, Graphics.TOP|Graphics.LEFT);
					else if(k<10)
						g.drawString(String.valueOf(k), x+cnt*11+3, getHeight()-18-cardh+2-dh, Graphics.TOP|Graphics.LEFT);
					else if(k==10)
						g.drawString(String.valueOf(k), x+cnt*11+1, getHeight()-18-cardh+2-dh, Graphics.TOP|Graphics.LEFT);
					//以上是画出每张牌的大小
					cnt++;

			}//end of for
		}
		//else
		//{
		//}
		
		//以下是,画出当前箭头指向的牌,用蓝色框标出
		if(state[arrowPos]==0) dh=0;
		else if(state[arrowPos]==1) dh=5;
		g.setColor(0, 0, 255);
		if(arrowPos==cardNum-1)
		{
			g.drawRect(x+arrowPos*11,getHeight()-18-cardh-dh, cardw,cardh);
			return;
		}//如果是最后一张牌,则需画出整张牌
		//如果不是最后一张牌,则画出一部分的选中框,如下:
		g.drawLine(x+arrowPos*11,getHeight()-18-cardh-dh,x+arrowPos*11+11,getHeight()-18-cardh-dh);
		g.drawLine(x+arrowPos*11,getHeight()-18-cardh-dh,x+arrowPos*11,getHeight()-18-dh);
		g.drawLine(x+arrowPos*11,getHeight()-18-dh,x+arrowPos*11+11,getHeight()-18-dh);
	
	}
	public void drawDir()
	{//绘制中间的指示方向
		//int size=20;
		//if(isOver)return;
		g.setColor(bgcolor[0],bgcolor[1],bgcolor[2]);//////////clear
		g.fillRect(0, height-18-cardh-5-16-35-fontHeight-3, width, fontHeight+3);
		g.setColor(0, 0, 0);
		String str="";
		if(rightId==0)str="等待上家出牌...";
		else if(rightId==1)str="请出牌...";
		else if(rightId==2)str="等待下家出牌...";
		g.drawString(str, width/2, height-18-cardh-5-16-35-2, Graphics.BOTTOM|Graphics.HCENTER);
		//g.drawArc(width/2-size/2,height-18-cardh-5-16-35-size, size,size, 0,360);
	}
	public void drawResult()
	{
		g.setColor(104,35,104);
		g.fillRect(width/4-5, height/4-5,width/2+10,height/2+10);
		g.setColor(126,194,254);/////////
		g.fillRect(width/4, height/4, width/2, height/2);
		if(isWin)
			g.drawImage(pichap, width/2, height/2-fontHeight-2, Graphics.HCENTER|Graphics.BOTTOM);
		else 
			g.drawImage(picsad, width/2, height/2-fontHeight-2, Graphics.HCENTER|Graphics.BOTTOM);
		String str1="",str2="",str3="";
		int score=callTime*5;
		
		if(dz==0)
		{
			if(isWin)
			{
				str1=cwr.nickname[0]+"    -"+String.valueOf(score*2)+"分";
				str2=cwr.nickname[1]+"    +"+String.valueOf(score)+"分";
				str3=cwr.nickname[2]+"    +"+String.valueOf(score)+"分";
			}
			else
			{
				str1=cwr.nickname[0]+"    +"+String.valueOf(score*2)+"分";
				str2=cwr.nickname[1]+"    -"+String.valueOf(score)+"分";
				str3=cwr.nickname[2]+"    -"+String.valueOf(score)+"分";
			}
			
		}
		else if(dz==1)
		{
			if(isWin)
			{
				str1=cwr.nickname[0]+"    -"+String.valueOf(score)+"分";
				str2=cwr.nickname[1]+"    +"+String.valueOf(score*2)+"分";
				str3=cwr.nickname[2]+"    -"+String.valueOf(score)+"分";
			}
			else 
			{
				str1=cwr.nickname[0]+"    +"+String.valueOf(score)+"分";
				str2=cwr.nickname[1]+"    -"+String.valueOf(score*2)+"分";
				str3=cwr.nickname[2]+"    +"+String.valueOf(score)+"分";
			}
		}
		else if(dz==2)
		{
			if(isWin)
			{
				str1=cwr.nickname[0]+"    +"+String.valueOf(score)+"分";
				str2=cwr.nickname[1]+"    +"+String.valueOf(score)+"分";
				str3=cwr.nickname[2]+"    -"+String.valueOf(score*2)+"分";
			}
			else
			{
				str1=cwr.nickname[0]+"    -"+String.valueOf(score)+"分";
				str2=cwr.nickname[1]+"    -"+String.valueOf(score)+"分";
				str3=cwr.nickname[2]+"    +"+String.valueOf(score*2)+"分";
			}
		}
		g.setColor(0, 0, 0);
		g.drawString(str1, width/2, height/2, Graphics.HCENTER|Graphics.BOTTOM);
		g.drawString(str2, width/2, height/2+2, Graphics.HCENTER|Graphics.TOP);
		g.drawString(str3, width/2, height/2+2+fontHeight, Graphics.HCENTER|Graphics.TOP);
		
		g.setColor(255, 255, 255);
		g.drawImage(piccall,width/2,3*height/4-2,Graphics.HCENTER|Graphics.BOTTOM);
		g.drawString("确定",width/2,3*height/4-2,Graphics.HCENTER|Graphics.BOTTOM);
	}
	public String int2String(int pai)
	{//将相应的整形数转换为字符串,例如将52转换为黑桃2,当然除了大小王的
		String res="";
		int k=0;
		if(pai%4==0)
			k=pai/4+2;
		else 
			k=pai/4+3;
		if(k==11)
			res="J";
		else if(k==12)
			res="Q";
		else if(k==13)
			res="K";
		else if(k==14)
			res="A";
		else if(k==15)
			res="2";
		else if(k<=10)
			res=String.valueOf(k);
		return res;
	}
	
	public void run()
	{
			repetition=true;
			while(repetition)
			{
				try
				{
					clearArrow();
					keyPressed();
					int n=0;
					if(cardNum%2==1)
						n=cardNum/2+1;
					else n=cardNum/2;
					x=(getWidth()-17)/2-n*11;
					if(iscall==true)
						drawCall();
					drawUp();//显示上家信息
					drawMyself();
					drawDown();//显示下家信息
					if(isOver==false)
					{
						drawArrow();
					}
					drawCards();
					if(overcall==true)
						drawPai3();
					if(isOver==false)
					{
						drawSend0();//
						drawSend1();//
						drawSend2();//
					}
					drawDir();
					if(isOver)
						drawResult();
					if(cwr.isReady)
						drawReady();
					////////////////////	
					if(drawPlsReady==true)
					{
						g.setColor(bgcolor[0],bgcolor[1],bgcolor[2]);
						g.fillRect(0, height/2-fontHeight-3, width,fontHeight+4);
						g.setColor(104,35,104);
						g.drawString("请按“准备”按钮进入下一局!", width/2, height/2,Graphics.BOTTOM|Graphics.HCENTER);	
					}/////////////////////
					flushGraphics();
					Thread.sleep(400);
				}
				catch(Exception e)
				{
					System.out.println("yichang run: "+e.toString());
				}
			}
	}
	public void executeCall(int sel)
	{
		String pos=String.valueOf(cwr.tableId)+"#"+String.valueOf(cwr.id)+"#";
		if(sel==0)
		{
			System.out.println("1");//////////////
			String data="OKCALLONE#"+pos;
			iscall=false;
			g.setColor(bgcolor[0],bgcolor[1],bgcolor[2]);//////
			g.fillRect(getWidth()/2-5-wcall-10-wcall, height-18-cardh-5-16-hcall, 4*wcall+30+1,hcall+1);
			cwr.send(data);
		}
		else if(sel==1)
		{
			System.out.println("2");//////////////
			String data="OKCALLTWO#"+pos;
			iscall=false;
			g.setColor(bgcolor[0],bgcolor[1],bgcolor[2]);//////
			g.fillRect(getWidth()/2-5-wcall-10-wcall, height-18-cardh-5-16-hcall, 4*wcall+30+1,hcall+1);
			cwr.send(data);
		}
		else if(sel==2)
		{
			System.out.println("3");//////////////
			String data="OKCALLTHREE#"+pos;
			iscall=false;
			g.setColor(bgcolor[0],bgcolor[1],bgcolor[2]);//////
			g.fillRect(getWidth()/2-5-wcall-10-wcall, height-18-cardh-5-16-hcall, 4*wcall+30+1,hcall+1);
			cwr.send(data);
		}
		else if(sel==3)
		{
			System.out.println("4");//////////////
			String data="NOCALL#"+pos;
			iscall=false;
			g.setColor(bgcolor[0],bgcolor[1],bgcolor[2]);//////
			g.fillRect(getWidth()/2-5-wcall-10-wcall, height-18-cardh-5-16-hcall, 4*wcall+30+1,hcall+1);
			cwr.send(data);
		}
	}
	public void commandAction(Command c,Displayable d)
	{
		String pos=String.valueOf(cwr.tableId)+"#"+String.valueOf(cwr.id)+"#";
		if(c==passCmd)
		{
			if(right==false)return;
			if(cardNum==0)return;
			if(rightType==1)return;
			String data="NOSEND#"+pos;
			sendnum1=0;
			cwr.send(data);
			right=false;
			rightId=2;
			rightType=0;
		}
		else if(c==readyCmd)
		{
			cwr.readyState[1]=1;
			cwr.readyNum++;
			this.removeCommand(readyCmd);
			drawPlsReady=false;
			g.setColor(bgcolor[0],bgcolor[1],bgcolor[2]);//////
			g.fillRect(0, 0, width, height);
			String data="READY#"+pos;
			cwr.send(data);
		}
		else if(c==exitCmd)
		{
			//需实现1:出现询问对话框;2:发送给服务器,清空数据,并通知其他玩家
		}
	}
}

⌨️ 快捷键说明

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