%% Simulation eines Tennismatches
%  nutzt spielstand.m

clear; clc; close all

%% Daten
gewinn_saetze=3;            % Notwendige Anzahl von Gewinnsaetzen     
a = zeros(1,3);             % aktuelle Saetze, Spiele, Punkte von Spieler A
b = zeros(1,3);             % aktuelle Saetze, Spiele, Punkte von Spieler B

ss = zeros(2,gewinn_saetze);            % Speichern der Gewinnspiele pro Satz

%% Das Tennismatch
count_satz=0;               % Satzzaehler
while  max(a(1),b(1))~=gewinn_saetze  % genuegend Gewinnsaetze?
    count_satz = count_satz+1;        % neuer Satz
    a(2) = 0;                         % Spiele zuruecksetzen
    b(2) = 0;
    
    bsatz = true;                     % True falls Satz noch nicht zu Ende
    while  bsatz                      % neues Spiel 
        a(3) = 0;                     % Punkte zuruecksetzen
        b(3) = 0;
        spielstand(a,b);
        bspiel = true;               % True falls Spiel noch nicht zu Ende
        while bspiel
            %  Punkt ausspielen via Funktion rand
            if rand >=0.50           % Punkt an Spieler A falls ...
                a(3) = a(3)+1;
            else
                b(3) = b(3)+1;
            end
            spielstand(a,b);
            %  mind. 4 Gewinnpunkte und 2 Punkte Abstand 
            bspiel = max(a(3),b(3))<4 || abs(a(3)-b(3))<2;
        end
        if a(3)>b(3)                 % Spieler A das Spiel hat gewonnen;
            a(2) = a(2)+1;
        else
            b(2) = b(2)+1;
        end
        %  mind. 6 Gewinnspiele und 2 Spiele Abstand, kein Tie-Break 
        bsatz = max(a(2),b(2))<6 || abs(a(2)-b(2))<2;
    end
    ss(:,count_satz) = [ a(2) ; b(2)]; % dynamische Verlaengerung von ss falls noetig
    if a(2)>b(2)
        a(1) = a(1)+1;
    else
        b(1) = b(1)+1;
    end
end
disp('################################################');
disp('Endstand:');
spielstand(a,b);
disp('nach Spielen:');
disp(ss);
