| [folded,stack,pot,dcsn,gbet,hidecards]=decision(handles,rawhands,rawcommunity,nop,nopind,folded,stack,pot,dcsn,dealt,blind,dealer,debug,quicksim,playertype,playername,gbet)
|
function [folded,stack,pot,dcsn,gbet,hidecards]=decision(handles,rawhands,rawcommunity,nop,nopind,folded,stack,pot,dcsn,dealt,blind,dealer,debug,quicksim,playertype,playername,gbet)
hidecards='y';
lastbet=0;
bet=0;
ibet=zeros(1,nop);
dbet=zeros(1,nop);
allfolded='n';
if dealt==1
bet=blind;
ibet(dealer(2))=blind/2;
ibet(dealer(3))=blind;
end
if dealt==1
if nop>3
order=[dealer(4:nop) dealer(1) dealer(2) dealer(3)];
elseif nop==3
order=dealer;
elseif nop==2
order=[dealer(2) dealer(1)];
end
else
if nop>3
order=[dealer(2:nop) dealer(1)];
elseif nop==3
order=[dealer(2) dealer(3) dealer(1)];
elseif nop==2
order=[dealer(2) dealer(1)];
end
end
for i=1:nop
if stack(i)>=ibet(i)
stack(i)=stack(i)-ibet(i);
pot=pot+ibet(i);
gbet(i)=gbet(i)+ibet(i);
elseif stack(i)<ibet(i) && stack(i)>0
pot=pot+stack(i);
gbet(i)=gbet(i)+stack(i);
stack(i)=0;
end
end
alldone='n';
numdone=0;
numfolded=0;
for f=1:nop
if stack(f)==0 & folded(f)=='n'
numdone=numdone+1;
end
if folded(f)=='y'
numfolded=numfolded+1;
numdone=numdone+1;
end
if numfolded==nop-1
allfolded='y';
end
if (nop-numdone)<2
alldone='y';
hidecards='n';
end
end
% % if alldone=='y'
% % for i=1:nop
% % if folded(i)=='n'
% % disp([playername{nopind(i)} ' checks.'])
% % end
% % end
% % end
allcheck='n';
while allcheck=='n'
for j=1:nop
getdcsn='n';
setappdata(gcbf, 'getdcsn', getdcsn);
i=order(j);
numfolded=0;
for f=1:nop
if folded(f)=='y'
numfolded=numfolded+1;
end
if numfolded==nop-1
allfolded='y';
end
end
if lastbet==i
alldone='y';
end
if allfolded=='n' & alldone=='n'
%Check Hand
[winners finalresults finalhand rawfinalhand ranks results]=getresults(rawhands,rawcommunity,nop,folded,dealt);
if folded(i)=='n'
if debug==0 & nopind(i)==1
if (dbet(i)==1 & bet==ibet(i)) | stack(i)==0
dcsn(i)='k';
elseif bet<=ibet(i) | stack(i)==0
msg={'Nobody' 'Raised'};
set(handles.dispbet, 'String', msg);
msg={'It is $0' 'to stay in'};
set(handles.dispstayin, 'String', msg);
set(handles.dispqstn, 'String', 'Do you want to:');
set(handles.getcheck, 'Enable', 'on');
set(handles.getbet, 'Enable', 'on');
set(handles.getcheck, 'Visible', 'on');
set(handles.getbet, 'Visible', 'on');
while getdcsn=='n'
pause(.1)
getdcsn=getappdata(gcbf, 'getdcsn');
dcsn(i)=getdcsn;
end
set(handles.getcheck, 'Enable', 'off');
set(handles.getbet, 'Enable', 'off');
set(handles.dispqstn, 'String', '');
set(handles.dispstayin, 'String', '');
set(handles.dispbet, 'String', '');
elseif bet>ibet(i)
msg={['It is $' int2str(bet-ibet(i))] 'to stay in'};
set(handles.dispstayin, 'String', msg);
set(handles.dispqstn, 'String', 'Do you want to:');
set(handles.getcall, 'Enable', 'on');
set(handles.getbet, 'Enable', 'on');
set(handles.getfold, 'Enable', 'on');
set(handles.getcall, 'Visible', 'on');
set(handles.getbet, 'Visible', 'on');
set(handles.getfold, 'Visible', 'on');
while getdcsn=='n'
pause(.1)
getdcsn=getappdata(gcbf, 'getdcsn');
dcsn(i)=getdcsn;
end
set(handles.getcall, 'Enable', 'off');
set(handles.getbet, 'Enable', 'off');
set(handles.getfold, 'Enable', 'off');
set(handles.dispstayin, 'String', '');
set(handles.dispqstn, 'String', '');
set(handles.dispbet, 'String', '');
end
else
[dcsn(i) b]=rules(rawhands,rawcommunity,rawfinalhand,nop,folded,stack,pot,bet,ibet,dcsn(i),dealt,ranks(i),ranks(nop+1),results,i,dealer,blind,dbet,playertype,playername);
end
if dcsn(i)=='f'
set(eval(['handles.fhandname' int2str(i)]), 'String', 'Folds');
folded(i)='y';
results.folded{i}='y';
end
if dcsn(i)=='c'
set(eval(['handles.fhandname' int2str(i)]), 'String', 'Calls');
if bet>ibet(i)
if stack(i)>=(bet-ibet(i))
stack(i)=stack(i)-(bet-ibet(i));
pot=pot+(bet-ibet(i));
gbet(i)=gbet(i)+(bet-ibet(i));
elseif stack(i)<(bet-ibet(i)) && stack(i)>0
pot=pot+stack(i);
gbet(i)=gbet(i)+stack(i);
stack(i)=0;
end
ibet(i)=bet;
end
if stack(i)==0
set(eval(['handles.fhandname' int2str(i)]), 'String', 'All In!!!');
end
end
if dcsn(i)=='k'
set(eval(['handles.fhandname' int2str(i)]), 'String', 'Checks');
if stack(i)==0
set(eval(['handles.fhandname' int2str(i)]), 'String', 'All In!!!');
end
end
if dcsn(i)=='b'
if nopind(i)==1 & debug==0
msg=['Enter raise ($' int2str(blind) '-$' int2str(stack(i)-(bet-ibet(i))) ')'];
set(handles.dispqstn, 'String', msg);
set(handles.getcheck, 'Visible', 'off');
set(handles.getcall, 'Visible', 'off');
set(handles.getbet, 'Visible', 'off');
set(handles.getfold, 'Visible', 'off');
set(handles.getbetamt, 'Visible', 'on');
set(handles.enterbetamt, 'Visible', 'on');
b=stack(i)+1;
setappdata(gcbf, 'betamt', b);
while b>stack(i)
b=getappdata(gcbf, 'betamt');
if b<blind & stack(i)>blind
b=stack(i)+1;
elseif stack(i)<=blind
b=stack(i);
end
pause(.1)
end
set(handles.getbetamt, 'Visible', 'off');
set(handles.enterbetamt, 'Visible', 'off');
set(handles.dispqstn, 'String', '');
end
bet=bet+b;
dbet(i)=1;
if stack(i)>=(bet-ibet(i))
stack(i)=stack(i)-(bet-ibet(i));
pot=pot+(bet-ibet(i));
gbet(i)=gbet(i)+(bet-ibet(i));
elseif stack(i)<(bet-ibet(i)) & stack(i)>0
pot=pot+stack(i);
gbet(i)=gbet(i)+stack(i);
stack(i)=0;
end
set(eval(['handles.fhandname' int2str(i)]), 'String', ['Raised $' int2str(b)]);
msg={playername{i} ['Raised $' int2str(b)]};
set(handles.dispbet, 'String', msg);
ibet(i)=bet;
if stack(i)==0
set(eval(['handles.fhandname' int2str(i)]), 'String', 'All In!!!');
end
lastbet=i;
end
end
end
end
allcheck='y';
alldone='n';
numdone=0;
numfolded=0;
for f=1:nop
if stack(f)==0 & folded(f)=='n' & f~=lastbet
numdone=numdone+1;
end
if folded(f)=='y'
numfolded=numfolded+1;
numdone=numdone+1;
end
if numfolded==nop-1
allfolded='y';
end
if (nop-numdone)<2
alldone='y';
hidecards='n';
end
end
if allfolded=='n' & alldone=='n'
for i=1:nop
if results.flushdraw{i}(1)==0;
results.flushdraw{i}=0;
end
if bet>ibet(i) & folded(i)=='n' & stack(i)>0
allcheck='n';
end
end
results.flushdraw{nop+1}=0;
end
if debug==1 & allfolded=='n' & alldone=='n'
results
end
end
[sortedbet ind]=sort(gbet);
overbet=sortedbet(nop)-sortedbet(nop-1);
if overbet>0
pot=pot-overbet;
gbet(ind(nop))=gbet(ind(nop))-overbet;
stack(ind(nop))=stack(ind(nop))+overbet;
end
|
|