📄 canvaslord.java
字号:
}
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 + -