% T9_C1 - Visuelle Stimulation in einem einfachen psychophysikalischen Experiments
   % Schauen Sie sich dieses Programm [zufallsquadrate.m] an und probieren Sie es aus. 
   % Führen Sie schrittweise folgende Änderungen an dem Programm durch:
       % Bestimmen Sie bei jedem "Sprung" eine zufällige Farbe, die dem neuen Quadrat zugewiesen wird.
       % Lassen Sie die Dauer der Pause als weiteres Argument durch den Benutzer angeben.
       % Nehmen Sie die Benutzerangabe der Pause als Maximalwert und bestimmen Sie jede individuelle Pause zufällig zwischen 0s und diesem Maximalwert.
       % Machen Sie die Benutzereingabe der Pause optional. Wenn der Benutzer einen Pausenwert eingibt, wird dieser benutzt, sonst wird 2sec als defaultwert verwendet.
       % Ändern Sie die Wahrscheinlichkeit der Position von einer Gleichverteilung zu einer Normalverteilung rund um die Mitte der Abbildung.

function zufallsquadrate (wiederholungen)
% function zufallsquadrate (wiederholungen)
% erzeugt einen visuellen Stimulus, der aus einem Quadrat fester Farbe und 
% Groesse besteht, das vor einheitlichem Hintergrund jeweils nach einem
% festen Zeitinterval seine Position zufaellig aendert.
% Vom Benutzer wird die Anzahl der Wiederholungen vorgegeben. 


janein=input('Wollen sie die Maximalwert für die Pause festlegen? Nein (0) oder Ja (1). ');
if janein==1
   sek=input('Wie lange soll die Pause zwischen dem Auftauchen des Quadrates Maximal sein (in sek)?: ');
   N=0;
else
    N=2;
end


% Abbildung erzeugen und 
bild=figure;
set(bild,'Color','white');

% Achsen festlegen
axis([0 12 0 12])
axis off 'square'
hold

% Erzeugen des Quadrates
qx=[0 0 2 2 0];
qy=[0 2 2 0 0];

% Schleife ueber die Wiederholungen:
for w=1:wiederholungen 
    % Auswuerfeln der Position (durch Faktor 10 wird sichergestellt, dass
    % das 2*2 Einheiten grosse Quadrat nicht aus dem sichtbaren Bereich 
    % verschwindet)
    posx=10*rand;
    posy=10*rand;
    zufallsfarbe=round(rand*7);     % Zufallszahl erzeugen um mit dieser eine Farbe auszuwählen
    if zufallsfarbe==1 
        % plotten des Quadrats
        fill(qx+posx,qy+posy,'black','EdgeColor','black')
    elseif zufallsfarbe==2
        fill(qx+posx,qy+posy,'blue','EdgeColor','blue')
    elseif zufallsfarbe==3
        fill(qx+posx,qy+posy,'green','EdgeColor','green')
    elseif zufallsfarbe==4
        fill(qx+posx,qy+posy,'red','EdgeColor','red')
    elseif zufallsfarbe==5
        fill(qx+posx,qy+posy,'yellow','EdgeColor','yellow')
    elseif zufallsfarbe==6
        fill(qx+posx,qy+posy,'cyan','EdgeColor','cyan')
    else
    fill(qx+posx,qy+posy,'magenta','EdgeColor','magenta')
    end
    % Wartezeit wird von dem Benutzer eingegeben
    if N==0
    zufallsek=randperm(sek+1);    % Zufallsvektor mit Zahlen von 1-n+1 (n+1, da der Vektor gleich lang sein muss wie der indipause, der eine Null beinhaltete)
    indipause=0:sek;              % indipause der als Maxi-wert die Benutzereingabe erhält
    N=indipause(zufallsek(1));   % erstes element des Zufallsvektors wird genommen um ein Element für die Sekunden rauszugreifen
    pause(N);
    else
    pause(N); 
    end
    % Loeschen des Quadrats
    fill(qx+posx,qy+posy,'white','EdgeColor','white')
end
