Скачиваний:
16
Добавлен:
25.12.2019
Размер:
2 Кб
Скачать
global hAxes1

% main HP
health=zeros(2,1);
health(1,1)=ceil(abs(normrnd(120,1)));
health(2,1)=ceil(abs(normrnd(120,1)));

% main damage
damage=zeros(2,1);
damage(1,1)=floor(abs(normrnd(9,1)));
damage(2,1)=floor(abs(normrnd(9,1)));

% increase damage
k=zeros(2,1);
k(1,1)=floor((normrnd(3,1)+1));
k(2,1)=floor((normrnd(3,1)+1));

% reduce damage
p=zeros(2,1);
p(1,1)=normrnd(0,1);
p(2,1)=normrnd(0,1);

% last treatment befor battle
H=health;
D=zeros(2,1);                       
D(1,1)=floor(damage(1,1).*k(1,1));
D(2,1)=floor(damage(2,1).*k(2,1));

% run battle
%figure('Name','Battle Field','NumberTitle','off');
axes(hAxes1);
while (H(1,1)>0) && (H(2,1)>0)
       
    H(1,1)=H(1,1)-abs(D(2,1));
    H(2,1)=H(2,1)-abs(D(1,1));
        
    if H(1,1)-abs(D(2,1)) <= 0 
        H(1,1)=0; 
        
    elseif H(2,1)-abs(D(1,1)) <= 0
        H(2,1)=0;
        
    end

    
    if H(1,1) < health(1,1)/2
        D(2,1)=floor(damage(2,1).*p(2,1));      
    elseif H(2,1) < health(2,1)/2
        D(1,1)=floor(damage(1,1).*p(1,1));
    end
    
    x=categorical({'HP Player 1','HP Player 2'});
    b=bar(x,[health(1,1) H(1,1); health(2,1) H(2,1)]);
    title('GREAT BATTLE');
    axis manual;
    xtips1 = b(1).XEndPoints;
    ytips1 = b(1).YEndPoints;
    labels1 = string(b(1).YData);
    text(xtips1,ytips1,labels1,'HorizontalAlignment','center','VerticalAlignment','bottom')
    
    xtips2 = b(2).XEndPoints;
    ytips2 = b(2).YEndPoints;
    labels2 = string(b(2).YData);
    text(xtips2,ytips2,labels2,'HorizontalAlignment','center','VerticalAlignment','bottom')
    
    xlabel('Number of Fighter')
    ylabel('Health')
    ylim([0 (max(health(1,1),health(2,1))+10)]);
    pause(0.5);
end

clear x

% fight results
if (H(1,1) > H(2,1) && H(1,1)> 0)
    disp('WINNER - PLAYER 1');
    fprintf(1,'Winner Health=%g',max(H(1,1),H(2,1)));
    msgbox('WINNER - PLAYER 1','Winner'); 
    
elseif (H(1,1)==0 && H(2,1)==0)
    disp('DRAW')
    msgbox('DRAW','Winner'); 
elseif (H(1,1)<0 && H(2,1)==0)
    disp('DRAW')
    msgbox('DRAW','Winner');
elseif (H(1,1)==0 && H(2,1)<0)
    disp('DRAW')
    msgbox('DRAW','Winner');
elseif (H(1,1)<0 && H(2,1)<0)
    disp('DRAW')
    msgbox('DRAW','Winner');
    
elseif (H(2,1) > H(1,1) && H(2,1)>0)
    disp('WINNER - PLAYER 2')
    msgbox('WINNER - PLAYER 2','Winner'); 
    fprintf(1,'Winner Health=%g',max(H(1,1),H(2,1)));
    
end
Соседние файлы в папке Дополнительное задание 1