function pingpong
% ________________________________________________________________________
%|Tato funkce demonstruje pouziti grafickych objektu v MATLABu            |
%|                                                                        |
%|V Plzni, dne 2.8.2011                                                   |
%|________________________________________________________________________|

% tvorba figury
obr = get(0,'screensize');           % rozliseni obrazovky
figure('name','paintball', ...       % jmeno
       'color','k',...               % barva pozadi
       'position',[fix(obr(3)/2)-500,fix(obr(4)/2)-250,1000,500]); % pozice okna a rozmery okna
   
% nastaveni os
axes('position',[0.1 0.1 0.8 0.8],... % pozice a rozmery
     'color','k',...                  % barva
     'Xlim',[-1.1 1.1],'Ylim',[0,1]); % rozsah os
hold on;

% tisk bileho ramecku
plot([-1.1 1.1 1.1 -1.1 -1.1],[0 0 1 1 0],'color','w','linewidth',3);

% tisk zelene delici cary
plot([0 0],[0 1],'color','g','linewidth',2);

% pocatecni poloha a tisk micku
xb = 0;
yb = rand;
ball = plot(xb,yb,'color','r','marker','o','markersize',12,'markerfacecolor','r'); % vytvoreni grafickeho objektu micku

% tisk palek
L = 0.1; % polovina delky palky
x = [-0.02 0.02 0.02 -0.02];
y = [-L -L L L];

xp1 = -1;
yp1 = 0.5;
palka1 = fill(xp1+x,yp1+y,'w');

xp2 = 1;
yp2 = 0.5;
palka2 = fill(xp2+x,yp2+y,'w');
axis off;

% vlastni hra
% inicializace pohybu micku
v = 0.2;    % velikost pocatecni rychlosti
dt = 0.02;  % casovy krok
alfa = [30,45,60,120,135,150,195,210,225,300,315,330]/180*pi;
n = length(alfa);
i = fix(n*rand+1);   % nahodny vyber pocatecniho uhlu
vx = v*cos(alfa(i)); % pocatecni rychlost v x
vy = v*sin(alfa(i)); % pocatecni rychlost v y

vp = 0.25;     % rychlost pohybu palky
t_round = 70;  % cas jednoho levelu
round = 1;     % pocatecni level
t = 0;
display(['Level ',num2str(round),'!']);
while 1 == 1
    % nastaveni levelu
    if(t > t_round);
        round = round + 1;
        t = 0;
        vx = 1.5*vx;
        vy = 1.5*vy;
        display(['Level ',num2str(round),'!']);
    end
    
    % aktualizace pohybu micku
    xb = xb + vx*dt;
    yb = yb + vy*dt;
    if(yb <= 0 || yb >= 1) % odraz od horni nebo dolni steny
        vy = -vy;
    end
    
    if(xb <= -1) % micek je u leve palky
        if(abs(yb-yp1) < 1.1*L)
            vx = -vx;
        else
            display('Hrac cislo 1 prohral!');
            break;
        end
    end
    
    if(xb >= 1) % micek je u prave palky
        if(abs(yb-yp2) < 1.1*L)
            vx = -vx;
        else
            display('Hrac cislo 2 prohral!');
            break;
        end
    end
    
    % aktualizace pohybu palek
    p1 = palka_pohybL(yp1,xb,yb,vx,vy); % vola funkci leve palky
    yp1 = yp1 + sign(p1)*vp*dt;
    if(yp1 < L)
        yp1 = L;
    end
    if(yp1 > 1-L)
        yp1 = 1-L;
    end
    
    p2 = palka_pohybP(yp2,xb,yb,vx,vy); % vola funkci prave palky
    yp2 = yp2 + sign(p2)*vp*dt;
    if(yp2 < L)
        yp2 = L;
    end
    if(yp2 > 1-L)
        yp2 = 1-L;
    end
    
    t = t + dt;
    
    % vykresleni
    set(ball,'Xdata',xb,'Ydata',yb);
    set(palka1,'Xdata',xp1+x,'Ydata',yp1+y);
    set(palka2,'Xdata',xp2+x,'Ydata',yp2+y);
    drawnow;
end



