image thumbnail
from Texas Holdem by Stefan Krause
This is a fully functional Texas Holdem program.

varargout=main(mode,handles)
function varargout=main(mode,handles)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%% MODE 0 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

if mode==0

    %Get Global Variables
    nop=getappdata(gcbf, 'nop');    
    playername=getappdata(gcbf, 'playername');
    
	debug=0;
	rb=5;
	blind=50;
	startstack=1000;
	hndnum=0;
	quicksim='n';
	kp='y';
	maxblind=blind*(2^4);

    

    %Set Global Variables
    setappdata(gcbf, 'debug', debug);
    setappdata(gcbf, 'rb', rb);
    setappdata(gcbf, 'blind', blind);
    setappdata(gcbf, 'startstack', startstack);
    setappdata(gcbf, 'hndnum', hndnum);
    setappdata(gcbf, 'quicksim', quicksim);
    setappdata(gcbf, 'kp', kp);
    setappdata(gcbf, 'maxblind', maxblind);
	
	if debug==0
		playertype(1)=6;
		playername{1}=lower(playername{1});
		playername{1}(1)=upper(playername{1}(1));
	end

	nopind=[1:nop];
	onop=nop;
    
    %Set Global Variables
    setappdata(gcbf, 'nopind', nopind);
    setappdata(gcbf, 'onop', onop);

	if debug==1
        a=1;
	elseif debug==0
        a=2;
	end
	
	altname{1}={'Ken' 'Kate' 'Jim' 'Sue' 'Frank' 'Amanda' 'Chris' 'Ellen'};
	altname{2}={'Jared' 'Anna' 'Matt' 'Lisa' 'Doug' 'Kristen' 'Drew' 'Kelly'};
	altname{3}={'Stefan' 'Amy' 'John' 'Allie' 'Jason' 'Jen' 'Tom' 'Sarah'};
	altname{4}={'DJ' 'Beth' 'Ron' 'Cheryl' 'Mike' 'Mary' 'Will' 'Julie'};
	altname{5}={'Owen' 'Rachael' 'Steve' 'Colleen' 'Joe' 'Holly' 'Gary' 'Monica'};
	
	for i=a:nop
        prob=round(rand*100);
        if prob<20
            playertype(i)=1;
        elseif prob<40
            playertype(i)=2;
        elseif prob<60
            playertype(i)=3;
        elseif prob<80
            playertype(i)=4;
        elseif prob<=100
            playertype(i)=5;
        end
        
        numnam=length(altname{playertype(i)});
        pickname=ceil(rand*numnam);
        
        if a>1
        letters=min([length(playername{1}) length(altname{playertype(i)}{pickname})]);
     
        if playername{1}(1:letters)==altname{playertype(i)}{pickname}(1:letters)
            if pickname==numnam
                pickname=1;
            else
                pickname=pickname+1;
            end
        end
        end
        playername{i}=altname{playertype(i)}{pickname};
        alt=[1:numnam];
        alt(pickname)=[];
        altname{playertype(i)}=altname{playertype(i)}(alt);
      
	end
	
	lost=ones(1,nop);
	stack=startstack.*ones(1,nop);
	stackhist=startstack*ones(nop,1);
	dealer=[1:nop];
	adealer=dealer;
    
  
	a=fix(clock);
	utime=((a(4)*3600)+(a(5)*60)+a(6))+(rb*60);

	for n=1:nop+1
        folded(n)='n';
	end

    
    %Set Global Variables
    setappdata(gcbf, 'playername', playername);
    setappdata(gcbf, 'playertype', playertype);
    setappdata(gcbf, 'lost', lost);
    setappdata(gcbf, 'stack', stack);
    setappdata(gcbf, 'stackhist', stackhist);
    setappdata(gcbf, 'dealer', dealer);
    setappdata(gcbf, 'adealer', adealer);
    setappdata(gcbf, 'utime', utime);
    setappdata(gcbf, 'rb', rb);
    setappdata(gcbf, 'folded', folded);
    
    set(handles.dispname, 'String', playername)
    set(handles.dispstack, 'String', stack);

end 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%% MODE 1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

if mode==1

    %Get Global Variables
    nop=getappdata(gcbf, 'nop');    
    hndnum=getappdata(gcbf, 'hndnum');    
    blind=getappdata(gcbf, 'blind');    
    maxblind=getappdata(gcbf, 'maxblind');    
    utime=getappdata(gcbf, 'utime');    
    nopind=getappdata(gcbf, 'nopind');    
    stack=getappdata(gcbf, 'stack');    
    dealer=getappdata(gcbf, 'dealer');    
    debug=getappdata(gcbf, 'debug');    
    quicksim=getappdata(gcbf, 'quicksim');    
    playername=getappdata(gcbf, 'playername');    
    playertype=getappdata(gcbf, 'playertype');    
    decktype=getappdata(gcbf, 'decktype');

    
    for i=1:nop
        dlabel{i}='     ';
    end
    dlabel{dealer(1)}='DLR';
    dlabel{dealer(2)}='SB';
    dlabel{dealer(3)}='BB';
    
    set(handles.dispdealer, 'String', dlabel);
    
	gbet=zeros(1,nop);
        
	hndnum=hndnum+1;
        
    set(handles.disphndnum, 'String', ['Hand #' int2str(hndnum)])
	
	pot=0;
    set(handles.disppot, 'String', ['Pot: $' int2str(pot)]);
	
	%Create deck
	deck.number=[2:14 2:14 2:14 2:14];
	deck.suit(1:13)=1;
	deck.suit(14:26)=2;
	deck.suit(27:39)=3;
	deck.suit(40:52)=4;
	
	
	deck=shuffle(deck);
	
	output=dealcards(deck,nop,nopind,1,dealer);
	hands=output{1};
	rawhands=output{2};
	rawhands{nop+1}{1}=[0 0];
	rawhands{nop+1}{2}=[0 0];
	
	for n=1:nop+1
        folded(n)='n';
        dcsn(n)='k';
	end
	
	hidecards='y';
	

   	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

	for j=1:2
    	crdimgX=imread(['cards/sXx' int2str(decktype) '.jpg']);
    	crdimgN=imread(['cards/sNn.jpg']);
        if j==1
        	crdimgXx=[crdimgX crdimgN crdimgN crdimgN crdimgN];
        elseif j==2
        	crdimgXx=[crdimgX crdimgX crdimgN crdimgN crdimgN];
        end
        crdimg=imread(['cards/Xx' int2str(decktype) '.jpg']);
        for i=1:nop
           	axes(eval(['handles.fhand' int2str(order(i))]));
    		image(crdimgXx);
            axis off
            if quicksim=='n'
                if nopind(i)==1 && i==1 && j==1
                    axes(handles.card1);
                    image(crdimg);
                    axis off
                elseif nopind(i)==1 && i==1 && j==2
                    axes(handles.card2);
                    image(crdimg);
                    axis off
                end
                pause(.1)
            end
            pause(.1)
        end
	end

    if quicksim=='n'
    pause(.4)
    axes(handles.card1);
    crdnm1=hands{1}{1};
    crdimg1=imread(['cards/' crdnm1 '.jpg']);
    image(crdimg1);
    axis off
    pause(.6)
    axes(handles.card2);
    crdnm2=hands{1}{2};
    crdimg2=imread(['cards/' crdnm2 '.jpg']);
    image(crdimg2);
    axis off

    end
    
	for n=1:5
        rawcommunity{n}=[0 0];
	end
	
	dealt=1;
	[folded stack pot dcsn gbet hidecards]=decision(handles,rawhands,rawcommunity,nop,nopind,folded,stack,pot,dcsn,dealt,blind,dealer,debug,quicksim,playertype,playername,gbet);
    set(handles.disppot, 'String', ['Pot: $' int2str(pot)]);

    
    %Set Global Variables
    setappdata(gcbf, 'pot', pot);
    setappdata(gcbf, 'stack', stack);
    setappdata(gcbf, 'dcsn', dcsn);
    setappdata(gcbf, 'gbet', gbet);
    setappdata(gcbf, 'hidecards', hidecards);
    setappdata(gcbf, 'rawhands', rawhands);
    setappdata(gcbf, 'hands', hands);
    setappdata(gcbf, 'rawcommunity', rawcommunity);
    setappdata(gcbf, 'utime', utime);
    setappdata(gcbf, 'folded', folded);
    setappdata(gcbf, 'deck', deck);
    setappdata(gcbf, 'blind', blind);
    setappdata(gcbf, 'dlabel', dlabel);
    setappdata(gcbf, 'hndnum', hndnum);
    setappdata(gcbf, 'order', order);

    set(handles.dispname, 'String', playername(nopind))
    set(handles.dispstack, 'String', stack);
    set(handles.dispdealer, 'String', dlabel);
    pause(.1)

end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%% MODE 2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

if mode==2
    
    %Get Global Variables
    nop=getappdata(gcbf, 'nop');    
    deck=getappdata(gcbf, 'deck');    
    blind=getappdata(gcbf, 'blind');    
    nopind=getappdata(gcbf, 'nopind');    
    stack=getappdata(gcbf, 'stack');    
    pot=getappdata(gcbf, 'pot');    
    gbet=getappdata(gcbf, 'gbet');    
    dcsn=getappdata(gcbf, 'dcsn');    
    folded=getappdata(gcbf, 'folded');    
    hidecards=getappdata(gcbf, 'hidecards');    
    dealer=getappdata(gcbf, 'dealer');    
    dlabel=getappdata(gcbf, 'dlabel');    
    debug=getappdata(gcbf, 'debug');    
    quicksim=getappdata(gcbf, 'quicksim');    
    playername=getappdata(gcbf, 'playername');    
    playertype=getappdata(gcbf, 'playertype');    
    hands=getappdata(gcbf, 'hands');    
    rawhands=getappdata(gcbf, 'rawhands');    
    rawcommunity=getappdata(gcbf, 'rawcommunity');    
    decktype=getappdata(gcbf, 'decktype');
    order=getappdata(gcbf, 'order');
    
    output=dealcards(deck,nop,nopind,2,dealer);
	community=output{1};
	for n=1:3
        rawcommunity{n}=output{2}{n};
	end

    
    crdimg=imread(['cards/Xx' int2str(decktype) '.jpg']);
    axes(handles.card3);
    image(crdimg);
    axis off
    if quicksim=='n'
        pause(.2)
    end
    pause(.1)
    axes(handles.card4);
    image(crdimg);
    axis off
    if quicksim=='n'
        pause(.2)
    end
    pause(.1)
    axes(handles.card5);
    image(crdimg);
    axis off

    if quicksim=='n'
        pause(.5)
    end
    pause(.1)
    axes(handles.card3);
    crdnm3=community{1};
    crdimg3=imread(['cards/' crdnm3 '.jpg']);
    image(crdimg3);
    axis off
    if quicksim=='n'
        pause(.5)
    end
    pause(.1)
    axes(handles.card4);
    crdnm4=community{2};
    crdimg4=imread(['cards/' crdnm4 '.jpg']);
    image(crdimg4);
    axis off
    if quicksim=='n'
        pause(.5)
    end
    pause(.1)
    axes(handles.card5);
    crdnm5=community{3};
    crdimg5=imread(['cards/' crdnm5 '.jpg']);
    image(crdimg5);
    axis off
    
    dealt=2;
	[folded stack pot dcsn gbet hidecards]=decision(handles,rawhands,rawcommunity,nop,nopind,folded,stack,pot,dcsn,dealt,blind,dealer,debug,quicksim,playertype,playername,gbet);
    set(handles.disppot, 'String', ['Pot: $' int2str(pot)]);

    
    %Set Global Variables
    setappdata(gcbf, 'pot', pot);
    setappdata(gcbf, 'stack', stack);
    setappdata(gcbf, 'dcsn', dcsn);
    setappdata(gcbf, 'gbet', gbet);
    setappdata(gcbf, 'hidecards', hidecards);
    setappdata(gcbf, 'rawhands', rawhands);
    setappdata(gcbf, 'hands', hands);
    setappdata(gcbf, 'rawcommunity', rawcommunity);
    setappdata(gcbf, 'community', community);
    setappdata(gcbf, 'folded', folded);
    
    
    set(handles.dispname, 'String', playername(nopind))
    set(handles.dispstack, 'String', stack);
    set(handles.dispdealer, 'String', dlabel);
    pause(.1)

end


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%% MODE 3 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


if mode==3

    %Get Global Variables
    nop=getappdata(gcbf, 'nop');    
    deck=getappdata(gcbf, 'deck');    
    blind=getappdata(gcbf, 'blind');    
    nopind=getappdata(gcbf, 'nopind');    
    stack=getappdata(gcbf, 'stack');    
    pot=getappdata(gcbf, 'pot');    
    gbet=getappdata(gcbf, 'gbet');    
    dcsn=getappdata(gcbf, 'dcsn');    
    folded=getappdata(gcbf, 'folded');    
    hidecards=getappdata(gcbf, 'hidecards');    
    dealer=getappdata(gcbf, 'dealer');    
    dlabel=getappdata(gcbf, 'dlabel');    
    debug=getappdata(gcbf, 'debug');    
    quicksim=getappdata(gcbf, 'quicksim');    
    playername=getappdata(gcbf, 'playername');    
    playertype=getappdata(gcbf, 'playertype');    
    hands=getappdata(gcbf, 'hands');    
    community=getappdata(gcbf, 'community');    
    rawhands=getappdata(gcbf, 'rawhands');    
    rawcommunity=getappdata(gcbf, 'rawcommunity');    
    decktype=getappdata(gcbf, 'decktype');
    
	output=dealcards(deck,nop,nopind,3,dealer);
	community{4}=output{1};
	rawcommunity{4}=output{2};

    crdimg=imread(['cards/Xx' int2str(decktype) '.jpg']);
    axes(handles.card6);
    image(crdimg);
    axis off

    if quicksim=='n'
        pause(.5)
    end
    pause(.1)
    axes(handles.card6);
    crdnm6=community{4};
    crdimg6=imread(['cards/' crdnm6 '.jpg']);
    image(crdimg6);
    axis off
    
    
	dealt=3;
	[folded stack pot dcsn gbet hidecards]=decision(handles,rawhands,rawcommunity,nop,nopind,folded,stack,pot,dcsn,dealt,blind,dealer,debug,quicksim,playertype,playername,gbet);
    set(handles.disppot, 'String', ['Pot: $' int2str(pot)]);

    %Set Global Variables
    setappdata(gcbf, 'pot', pot);
    setappdata(gcbf, 'stack', stack);
    setappdata(gcbf, 'dcsn', dcsn);
    setappdata(gcbf, 'gbet', gbet);
    setappdata(gcbf, 'hidecards', hidecards);
    setappdata(gcbf, 'rawhands', rawhands);
    setappdata(gcbf, 'hands', hands);
    setappdata(gcbf, 'rawcommunity', rawcommunity);
    setappdata(gcbf, 'community', community);
    setappdata(gcbf, 'folded', folded);


    set(handles.dispname, 'String', playername(nopind))
    set(handles.dispstack, 'String', stack);
    set(handles.dispdealer, 'String', dlabel);
       pause(.1)
 
end
    
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%% MODE 4 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

if mode==4


    

    %Get Global Variables
    nop=getappdata(gcbf, 'nop');    
    onop=getappdata(gcbf, 'onop');    
    deck=getappdata(gcbf, 'deck');    
    blind=getappdata(gcbf, 'blind');    
    nopind=getappdata(gcbf, 'nopind');    
    stack=getappdata(gcbf, 'stack');    
    pot=getappdata(gcbf, 'pot');    
    gbet=getappdata(gcbf, 'gbet');    
    dcsn=getappdata(gcbf, 'dcsn');    
    folded=getappdata(gcbf, 'folded');    
    hndnum=getappdata(gcbf, 'hndnum');    
    hidecards=getappdata(gcbf, 'hidecards');    
    dealer=getappdata(gcbf, 'dealer');    
    adealer=getappdata(gcbf, 'adealer');    
    dlabel=getappdata(gcbf, 'dlabel');    
    debug=getappdata(gcbf, 'debug');    
    quicksim=getappdata(gcbf, 'quicksim');    
    playername=getappdata(gcbf, 'playername');    
    playertype=getappdata(gcbf, 'playertype');    
    hands=getappdata(gcbf, 'hands');    
    community=getappdata(gcbf, 'community');    
    rawhands=getappdata(gcbf, 'rawhands');    
    rawcommunity=getappdata(gcbf, 'rawcommunity');    
    decktype=getappdata(gcbf, 'decktype');    
    
    output=dealcards(deck,nop,nopind,4,dealer);
	community{5}=output{1};
	rawcommunity{5}=output{2};

    crdimg=imread(['cards/Xx' int2str(decktype) '.jpg']);
    axes(handles.card7);
    image(crdimg);
    axis off

    if quicksim=='n'
        pause(.5)
    end
    pause(.1)
    axes(handles.card7);
    crdnm7=community{5};
    crdimg7=imread(['cards/' crdnm7 '.jpg']);
    image(crdimg7);
    axis off
    

    dealt=4;
	[folded stack pot dcsn gbet hidecards]=decision(handles,rawhands,rawcommunity,nop,nopind,folded,stack,pot,dcsn,dealt,blind,dealer,debug,quicksim,playertype,playername,gbet);
    set(handles.disppot, 'String', ['Pot: $' int2str(pot)]);

    
    %Set Global Variables
    setappdata(gcbf, 'pot', pot);
    setappdata(gcbf, 'stack', stack);
    setappdata(gcbf, 'dcsn', dcsn);
    setappdata(gcbf, 'gbet', gbet);
    setappdata(gcbf, 'hidecards', hidecards);
    setappdata(gcbf, 'rawhands', rawhands);
    setappdata(gcbf, 'hands', hands);
    setappdata(gcbf, 'rawcommunity', rawcommunity);
    setappdata(gcbf, 'community', community);
    setappdata(gcbf, 'folded', folded);


    set(handles.dispname, 'String', playername(nopind))
    set(handles.dispstack, 'String', stack);
    set(handles.dispdealer, 'String', dlabel);
        pause(.1)

end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%% MODE 4 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

if mode==5 
    

    %Get Global Variables
    nop=getappdata(gcbf, 'nop');    
    deck=getappdata(gcbf, 'deck');    
    blind=getappdata(gcbf, 'blind');    
    nopind=getappdata(gcbf, 'nopind');    
    stack=getappdata(gcbf, 'stack');    
    stackhist=getappdata(gcbf, 'stackhist');    
    pot=getappdata(gcbf, 'pot');    
    gbet=getappdata(gcbf, 'gbet');    
    lost=getappdata(gcbf, 'lost');    
    dcsn=getappdata(gcbf, 'dcsn');    
    folded=getappdata(gcbf, 'folded');    
    hndnum=getappdata(gcbf, 'hndnum');    
    hidecards=getappdata(gcbf, 'hidecards');    
    dealer=getappdata(gcbf, 'dealer');    
    adealer=getappdata(gcbf, 'adealer');    
    dlabel=getappdata(gcbf, 'dlabel');    
    debug=getappdata(gcbf, 'debug');    
    quicksim=getappdata(gcbf, 'quicksim');    
    playername=getappdata(gcbf, 'playername');    
    playertype=getappdata(gcbf, 'playertype');    
    hands=getappdata(gcbf, 'hands');    
    community=getappdata(gcbf, 'community');    
    rawhands=getappdata(gcbf, 'rawhands');    
    rawcommunity=getappdata(gcbf, 'rawcommunity');    
    decktype=getappdata(gcbf, 'decktype');
    
    dealt=4;
    
    wp=zeros(1,nop);
	for i=1:nop
        for j=1:nop
            if gbet(j)>=gbet(i)
                wp(i)=wp(i)+gbet(i);
            else
                wp(i)=wp(i)+gbet(j);
            end
        end
	end
	
	sidepot=1;
	msg=[];
    
	while pot>0
	
		
		%Get Winner
		[winners finalresults finalhand rawfinalhand ranks]=getresults(rawhands,rawcommunity,nop,folded,dealt);
	
		
		now=length(winners);
		strwinnersfinal=[];
		if now==1
            if sidepot==1
                msg{sidepot}=[playername{nopind(winners)} ' wins $' int2str(wp(winners)) '!!!'];
            else
                msg{sidepot}=[playername{nopind(winners)} ' wins a side pot of $' int2str(wp(winners)) '!'];
            end
            stack(winners)=stack(winners)+wp(winners);
            pot=pot-wp(winners);
            folded(find(wp<=wp(winners)))='y';
            wp=wp-wp(winners);
		else
            strwinners=[];
            for n=1:now
                strwinners{2*n-1}=playername{nopind(winners(n))};
                strwinners{2*n}=' and ';
                if n==now
                strwinners{2*n}='';
                end
                strwinnersfinal=[strwinnersfinal strwinners{2*n-1} strwinners{2*n}];
			end
            split=min(wp(winners));
            if sidepot==1;
                msg{sidepot}=[strwinnersfinal ' split $' int2str(split) '.'];
            else
                msg{sidepot}=[strwinnersfinal ' split a side pot of $' int2str(split) '.'];
            end
            isplit=round(split/now);
            stack(winners)=stack(winners)+isplit;
            pot=pot-split;
            folded(find(wp<=min(wp(winners))))='y';
            wp=wp-split;
		end
		sidepot=sidepot+1;
		
	end


    for i=1:nop
        if finalhand{i}{1}(1:2)=='Xx'
            fcrdnm1=['Xx' int2str(decktype)];
            fcrdimg1=imread(['cards/s' fcrdnm1 '.jpg']);
            fcrdimgN=imread(['cards/sNn.jpg']);
            fcrdimg{i}=[fcrdimg1 fcrdimg1 fcrdimgN fcrdimgN fcrdimgN];
        else
            fcrdnm1=finalhand{i}{1};
            fcrdimg1=imread(['cards/s' fcrdnm1 '.jpg']);
            fcrdnm2=finalhand{i}{2};
            fcrdimg2=imread(['cards/s' fcrdnm2 '.jpg']);
            fcrdnm3=finalhand{i}{3};
            fcrdimg3=imread(['cards/s' fcrdnm3 '.jpg']);
            fcrdnm4=finalhand{i}{4};
            fcrdimg4=imread(['cards/s' fcrdnm4 '.jpg']);
            fcrdnm5=finalhand{i}{5};
            fcrdimg5=imread(['cards/s' fcrdnm5 '.jpg']);
            fcrdimg{i}=[fcrdimg1 fcrdimg2 fcrdimg3 fcrdimg4 fcrdimg5];
        end
    end
    for i=1:nop
        axes(eval(['handles.fhand' int2str(i)]));
        image(fcrdimg{i});
        axis off
        set(eval(['handles.fhandname' int2str(i)]), 'String', finalresults{i});
    end
    
    
    set(handles.dispwinner, 'Visible', 'on');
    set(handles.dispwinner, 'String', msg);

	adealer(nop+1)=adealer(1);
	adealer=adealer(2:nop+1);
	
    msg{sidepot}='    ';	
    n=sidepot+1;
	a=nop;
	elim=[];
	for i=1:a
		if stack(i)<=0
            lost(nopind(i))=hndnum;
            msg{n}=[playername{nopind(i)} ' has been eliminated.'];
            n=n+1;
            elim=[elim i];
            adealer(find(adealer==nopind(i)))=[];
			nop=nop-1;
	        if debug==0 & nopind(i)==1
                quicksim='y';
% 				inpchk=0;
% 				while inpchk==0
%                     quicksim=input('Do you want to quicksim (y/n): ','s');
%                     if quicksim=='y' | quicksim=='n'
%                         inpchk=1;
%                     end
% 				end
            end
        end
	end
	stack(elim)=[];
	nopind(elim)=[];
	folded(elim)=[];
	dcsn(elim)=[];
	
	
	dealer=[];
	
	for i=1:nop
        dealer(i)=find(adealer(i)==nopind);
	end
	
	if nop==2
        dealer(3)=dealer(1);
	end

   set(handles.dispwinner, 'String', msg);

	
	
	for i=1:nop
        stackhist(nopind(i),hndnum+1)=stack(i);
	end

    
    %Set Global Variables
    setappdata(gcbf, 'pot', pot);
    setappdata(gcbf, 'stack', stack);
    setappdata(gcbf, 'stackhist', stackhist);
    setappdata(gcbf, 'hndnum', hndnum);
    setappdata(gcbf, 'nop', nop);
    setappdata(gcbf, 'nopind', nopind);
    setappdata(gcbf, 'dealer', dealer);
    setappdata(gcbf, 'adealer', adealer);
    setappdata(gcbf, 'lost', lost);
    setappdata(gcbf, 'folded', folded);
    setappdata(gcbf, 'dcsn', dcsn);
    setappdata(gcbf, 'quicksim', quicksim);

    set(handles.dispname, 'String', playername(nopind))
    set(handles.dispstack, 'String', stack);


	if nop==1
        kp='n';
        lost(nopind)=hndnum;
        msg{sidepot+3}=['Congratulations ' playername{nopind} '! You won MATLAB Texas Holdem in ' int2str(hndnum) ' hands!'];
        set(handles.dispwinner, 'String', msg);
        setappdata(gcbf, 'kp', kp);
        mode=7;
        setappdata(gcbf, 'mode', mode);
    end

        pause(.1)

    
end
	

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%% MODE 7 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

if mode==7
    
    %Get Global Variables
    nop=getappdata(gcbf, 'nop');    
    onop=getappdata(gcbf, 'onop');    
    stack=getappdata(gcbf, 'stack');    
    stackhist=getappdata(gcbf, 'stackhist');    
    startstack=getappdata(gcbf, 'startstack');    
    lost=getappdata(gcbf, 'lost');    
    hndnum=getappdata(gcbf, 'hndnum');    
    playername=getappdata(gcbf, 'playername');    
	
	
	
	
	figure;
	hnds=[0:hndnum];
	plot(hnds,stackhist(1,:),'k*-')
	hold on
	for i=2:onop
        if i==2
            plot(hnds,stackhist(i,:),'b.-')
        elseif i==3
            plot(hnds,stackhist(i,:),'g.-')
        elseif i==4
            plot(hnds,stackhist(i,:),'r.-')
        elseif i==5
            plot(hnds,stackhist(i,:),'c.-')
        elseif i==6
            plot(hnds,stackhist(i,:),'m.-')
        elseif i==7
            plot(hnds,stackhist(i,:),'y.-')
        elseif i==8
            plot(hnds,stackhist(i,:),'k.-')
        end        
	end
        
	AXIS([0 hndnum 0 onop*startstack])    
	title('Players Stack History By Hand')
	xlabel('Hand #')
	ylabel('Money in Stack')
	grid on
	
	
	if onop==2
        legend([playername{1} ' (' int2str(lost(1)) ' Hands)'],[playername{2} ' (' int2str(lost(2)) ' Hands)'],2)
	elseif onop==3
        legend([playername{1} ' (' int2str(lost(1)) ' Hands)'],[playername{2} ' (' int2str(lost(2)) ' Hands)'],[playername{3} ' (' int2str(lost(3)) ' Hands)'],2)
	elseif onop==4
        legend([playername{1} ' (' int2str(lost(1)) ' Hands)'],[playername{2} ' (' int2str(lost(2)) ' Hands)'],[playername{3} ' (' int2str(lost(3)) ' Hands)'],[playername{4} ' (' int2str(lost(4)) ' Hands)'],2)
	elseif onop==5
        legend([playername{1} ' (' int2str(lost(1)) ' Hands)'],[playername{2} ' (' int2str(lost(2)) ' Hands)'],[playername{3} ' (' int2str(lost(3)) ' Hands)'],[playername{4} ' (' int2str(lost(4)) ' Hands)'],[playername{5} ' (' int2str(lost(5)) ' Hands)'],2)
	elseif onop==6
        legend([playername{1} ' (' int2str(lost(1)) ' Hands)'],[playername{2} ' (' int2str(lost(2)) ' Hands)'],[playername{3} ' (' int2str(lost(3)) ' Hands)'],[playername{4} ' (' int2str(lost(4)) ' Hands)'],[playername{5} ' (' int2str(lost(5)) ' Hands)'],[playername{6} ' (' int2str(lost(6)) ' Hands)'],2)
	elseif onop==7
        legend([playername{1} ' (' int2str(lost(1)) ' Hands)'],[playername{2} ' (' int2str(lost(2)) ' Hands)'],[playername{3} ' (' int2str(lost(3)) ' Hands)'],[playername{4} ' (' int2str(lost(4)) ' Hands)'],[playername{5} ' (' int2str(lost(5)) ' Hands)'],[playername{6} ' (' int2str(lost(6)) ' Hands)'],[playername{7} ' (' int2str(lost(7)) ' Hands)'],2)
	elseif onop==8
        legend([playername{1} ' (' int2str(lost(1)) ' Hands)'],[playername{2} ' (' int2str(lost(2)) ' Hands)'],[playername{3} ' (' int2str(lost(3)) ' Hands)'],[playername{4} ' (' int2str(lost(4)) ' Hands)'],[playername{5} ' (' int2str(lost(5)) ' Hands)'],[playername{6} ' (' int2str(lost(6)) ' Hands)'],[playername{7} ' (' int2str(lost(7)) ' Hands)'],[playername{8} ' (' int2str(lost(8)) ' Hands)'],2)
	end        
    pause(.1)
    quicksim='n';
    setappdata(gcbf, 'quicksim', quicksim);

end

Contact us at files@mathworks.com