| [winners,finalresults,finalhand,rawfinalhand,ranks,results]=getresults(rawhands,rawcommunity,nop,folded,dealt)
|
function [winners,finalresults,finalhand,rawfinalhand,ranks,results]=getresults(rawhands,rawcommunity,nop,folded,dealt)
for i=1:nop+1
%Get Hand
besthand{i}=[rawhands{i}{1}(1) rawhands{i}{2}(1) rawcommunity{1}(1) rawcommunity{2}(1) rawcommunity{3}(1) rawcommunity{4}(1) rawcommunity{5}(1);rawhands{i}{1}(2) rawhands{i}{2}(2) rawcommunity{1}(2) rawcommunity{2}(2) rawcommunity{3}(2) rawcommunity{4}(2) rawcommunity{5}(2)];
% if i<4
% besthand{i}=[2 14 3 4 5 6 12; 4 4 4 4 4 4 4];
% end
%Sort Hand
[a b]=sort(besthand{i}(1,:));
besthand{i}=besthand{i}(:,b);
%Initialize Results Variable
results.royalflush{i}=0;
results.straightflush{i}=0;
results.flush{i}=0;
results.fullhouse{i}=0;
results.straight{i}=0;
results.foak{i}=0;
results.toak{i}=0;
results.twopair{i}=0;
results.pair{i}=0;
results.highcard{i}=besthand{i}(1,7);
results.personalhighcard{i}=max([rawhands{i}{1}(1) rawhands{i}{2}(1)]);
results.facecards{i}=0;
%Face card check
if rawhands{i}{1}(1)>9
results.facecards{i}=results.facecards{i}+1;
end
if rawhands{i}{2}(1)>9
results.facecards{i}=results.facecards{i}+1;
end
%Draw variables
results.outsidestraightdraw{i}=0;
results.insidestraightdraw{i}=0;
results.flushdraw{i}=[0 0 0];
results.pocketpair{i}=0;
results.rank{i}=0;
results.folded{i}=0;
%Pocket Pair Check
if rawhands{i}{1}(1)==rawhands{i}{2}(1)
results.pocketpair{i}=1;
end
flush=zeros(1,4);
%Flush Check
for j=1:4
ph=0;
pf=0;
for k=1:7
if besthand{i}(2,k)==j
flush(j)=flush(j)+1;
end
end
if flush(j)>=5
results.flush{i}=1;
end
if rawhands{i}{1}(2)==j
pf=pf+1;
ph=rawhands{i}{1}(1);
end
if rawhands{i}{2}(2)==j
pf=pf+1;
if rawhands{i}{2}(1)>ph
ph=rawhands{i}{2}(1);
end
end
if flush(j)==2 & dealt==1
results.flushdraw{i}=[3 pf ph];
end
if flush(j)==3 & dealt<3
results.flushdraw{i}=[2 pf ph];
end
if flush(j)==4 & dealt<4
results.flushdraw{i}=[1 pf ph];
end
if flush(j)>=5
results.flushdraw{i}=[0 pf ph];
end
end
%Pair Check
pair=zeros(1,14);
cards=zeros(1,14);
for j=2:14
pair(j)=length(find(besthand{i}(1,:)==j));
if pair(j)==4
results.foak{i}=1;
end
if pair(j)==3
results.toak{i}=results.toak{i}+1;
end
if pair(j)==2
results.pair{i}=results.pair{i}+1;
end
end
pair(1)=pair(14);
dpair=pair;
for j=1:14
if pair(j)>1
dpair(j)=1;
end
end
%Straight Check
straight=[];
for j=1:10
if pair(j:j+4)>0
results.straight{i}=1;
straight=[j+4:-1:j];
end
if sum(dpair(j:j+2))==2 & dealt==1
results.insidestraightdraw{i}=3;
end
if pair(j:j+1)>0 & dealt==1
results.outsidestraightdraw{i}=3;
results.insidestraightdraw{i}=0;
end
if sum(dpair(j:j+3))==3 & dealt<3
results.insidestraightdraw{i}=2;
end
if pair(j:j+2)>0 & dealt<3
results.outsidestraightdraw{i}=2;
results.insidestraightdraw{i}=0;
end
if sum(dpair(j:j+4))==4 & dealt<4
results.insidestraightdraw{i}=1;
end
if pair(j:j+3)>0 & dealt<4
results.outsidestraightdraw{i}=1;
results.insidestraightdraw{i}=0;
end
end
%Royal/Straight Flush Check
fstraight=[];
a=find(flush>=5);
if isempty(straight)==0 & isempty(a)==0
b=find(besthand{i}(2,:)==a);
tmphand=besthand{i}(:,b);
for j=2:14
spair(j)=length(find(tmphand(1,:)==j));
end
spair(1)=spair(14);
for j=1:10
if spair(j:j+4)>0
fstraight=[j+4:-1:j];
end
end
if isempty(fstraight)==0
if fstraight(1)==14
results.royalflush{i}=1;
else
results.straightflush{i}=1;
end
end
end
%Get Final Results
if results.highcard{i}==14
highcard='Ace';
elseif results.highcard{i}==13
highcard='King';
elseif results.highcard{i}==12
highcard='Queen';
elseif results.highcard{i}==11
highcard='Jack';
else
highcard=int2str(results.highcard{i});
end
finalresults{i}=[highcard ' High'];
ranks(i)=1;
if results.pair{i}==1
finalresults{i}='One Pair';
ranks(i)=2;
end
if results.pair{i}>1
finalresults{i}='Two Pair';
ranks(i)=3;
end
if results.toak{i}==1
finalresults{i}='3 of a Kind';
ranks(i)=4;
end
if results.straight{i}>0
finalresults{i}='Straight';
ranks(i)=5;
end
if results.flush{i}==1
finalresults{i}='Flush';
ranks(i)=6;
end
if (results.toak{i}==1 & results.pair{i}>0) || results.toak{i}==2
finalresults{i}='Full House';
ranks(i)=7;
end
if results.foak{i}==1
finalresults{i}='4 of a Kind';
ranks(i)=8;
end
if results.straightflush{i}==1
finalresults{i}='Straight Flush';
ranks(i)=9;
end
if results.royalflush{i}==1
finalresults{i}='Royal Flush';
ranks(i)=10;
end
if ranks(i)==1
rawfinalhand{i}=besthand{i}(:,[7:-1:3]);
end
if ranks(i)==2
fpair=pair;
fpair(1)=0;
a=find(fpair==2);
b=find(besthand{i}(1,:)==a);
rawfinalhand{i}=besthand{i}(:,b);
c=[1:7];
c(b)=[];
lc=length(c);
rawfinalhand{i}=[rawfinalhand{i} besthand{i}(:,c(lc)) besthand{i}(:,c(lc-1)) besthand{i}(:,c(lc-2))];
end
if ranks(i)==3
fpair=pair;
fpair(1)=0;
a=find(fpair==2);
la=length(a);
b=find(besthand{i}(1,:)==a(la));
bb=b;
rawfinalhand{i}=besthand{i}(:,b);
b=find(besthand{i}(1,:)==a(la-1));
bb=[bb b];
rawfinalhand{i}=[rawfinalhand{i} besthand{i}(:,b)];
c=[1:7];
c(bb)=[];
lc=length(c);
rawfinalhand{i}=[rawfinalhand{i} besthand{i}(:,c(lc))];
results.twopair{i}=1;
end
if ranks(i)==4
fpair=pair;
fpair(1)=0;
a=find(fpair==3);
la=length(a);
b=find(besthand{i}(1,:)==a(la));
rawfinalhand{i}=besthand{i}(:,b);
c=[1:7];
c(b)=[];
lc=length(c);
rawfinalhand{i}=[rawfinalhand{i} besthand{i}(:,c(lc)) besthand{i}(:,c(lc-1))];
end
if ranks(i)==5
rawfinalhand{i}=[];
for j=1:5
b=find(besthand{i}(1,:)==straight(j));
if straight(j)==1
b=7;
end
rawfinalhand{i}=[rawfinalhand{i} besthand{i}(:,b(1))];
end
end
if ranks(i)==6
a=find(flush>=5);
b=find(besthand{i}(2,:)==a);
rawfinalhand{i}=besthand{i}(:,b);
lrfh=length(rawfinalhand{i});
rfh=[lrfh:-1:lrfh-4];
rawfinalhand{i}=rawfinalhand{i}(:,[rfh]);
end
if ranks(i)==7
fpair=pair;
fpair(1)=0;
a=find(fpair==3);
la=length(a);
b=find(besthand{i}(1,:)==a(la));
rawfinalhand{i}=besthand{i}(:,b);
if results.toak{i}==1
a=find(fpair==2);
la=length(a);
b=find(besthand{i}(1,:)==a(la));
rawfinalhand{i}=[rawfinalhand{i} besthand{i}(:,b)];
end
if results.toak{i}==2
b=find(besthand{i}(1,:)==a(la-1));
rawfinalhand{i}=[rawfinalhand{i} besthand{i}(:,b(1:2))];
end
results.fullhouse{i}=1;
end
if ranks(i)==8
fpair=pair;
fpair(1)=0;
a=find(fpair==4);
la=length(a);
b=find(besthand{i}(1,:)==a(la));
rawfinalhand{i}=besthand{i}(:,b);
c=[1:7];
c(b)=[];
lc=length(c);
rawfinalhand{i}=[rawfinalhand{i} besthand{i}(:,c(lc))];
end
if ranks(i)==9 || ranks(i)==10
a=find(flush>=5);
b=find(besthand{i}(2,:)==a);
tmphand=besthand{i}(:,b);
rawfinalhand{i}=[];
for j=1:5
c=find(tmphand(1,:)==fstraight(j));
if fstraight(j)==1
c=length(tmphand);
end
rawfinalhand{i}=[rawfinalhand{i} tmphand(:,c)];
end
end
results.rank{i}=ranks(i);
results.folded{i}=folded(i);
if folded(i)=='y'
ranks(i)=0;
finalresults{i}='Folded';
end
for n=1:5
if rawfinalhand{i}(1,n)==11
finalhand{i}{n}='J';
elseif rawfinalhand{i}(1,n)==12
finalhand{i}{n}='Q';
elseif rawfinalhand{i}(1,n)==13
finalhand{i}{n}='K';
elseif rawfinalhand{i}(1,n)==14
finalhand{i}{n}='A';
else
finalhand{i}{n}=int2str(rawfinalhand{i}(1,n));
end
if rawfinalhand{i}(2,n)==1
finalhand{i}{n}=[finalhand{i}{n} 's'];
elseif rawfinalhand{i}(2,n)==2
finalhand{i}{n}=[finalhand{i}{n} 'c'];
elseif rawfinalhand{i}(2,n)==3
finalhand{i}{n}=[finalhand{i}{n} 'h'];
elseif rawfinalhand{i}(2,n)==4
finalhand{i}{n}=[finalhand{i}{n} 'd'];
end
if folded(i)=='y'
finalhand{i}{n}='Xx';
end
end
end
[highestrank winner]=max(ranks(1:nop));
winners=find(ranks(1:nop)==highestrank);
now=length(winners);
j=1;
while now>1 & j<6
for i=1:now
hc(i)=rawfinalhand{winners(i)}(1,j);
end
winners=winners(hc==max(hc));
j=j+1;
now=length(winners);
hc=[];
end
|
|