Jak pisałem, przeprowadzełem ze znajomymi Eksperyment z zakresu psychologii poznawczej.
Do eksperymentu postanowiłem wykorzystać komputer. A co!
Zasada działania
Powerpoint wyświetla twarz przeglądajacemu. Za pomocą klawiszy 1-5 przeglądający identyfikuje ją jako wyświetlającą jedną z 5 emocji. Gdy naciśnie klawisz, slajd się zmienia i przeglądający przechodzi dalej.
Pragniemy zapisać do pliku czas oraz wybrana opcję.
Jak to zrobić najłatwiej?
Postanowiłem wykorzystać program Autohotkey: http://www.autohotkey.com/
Autohotkey jest programem do budowania makr w windows.
Jak go skonfigurowałem?
- Przycisk Insert uruchamia procedurę. Jego naciśnięcie zapisuje do pliku informację o nowej osobie badanej
- Gdy procedura jest uruchomiona, działanie przycisków 1-5 zostaje zmienione. Każdy z nich zamiast przesłać cyfrę, robi rzeczy następujące:
-
- Zapisuje do pliku wybraną cyfrę i czas.
- Przesyła spację do powerpointa przerzucając slajd
- Pomocnik badacza naciskając insert kończy badanie
Kod Autohotkey:
osoba:=0
dziala:=0
numer:=0
$Space::
{
if(dziala)
{
numer:=numer+1
FileAppend,`n%A_TickCount%, C:TypingLog.txt
}
Send {Space}
return
}
$1::
{
if(dziala)
{
numer:=numer+1
FileAppend,`nCZERWONY %A_TickCount%, C:TypingLog.txt
Send {Space}
}
else
{
Send {1}
}
return
}
$2::
{
if(dziala)
{
numer:=numer+1
FileAppend,`nZIELONY %A_TickCount%, C:TypingLog.txt
Send {Space}
}
else
{
Send {2}
}
return
}
$3::
{
if(dziala)
{
numer:=numer+1
FileAppend,`nNIEBIESKI %A_TickCount%, C:TypingLog.txt
Send {Space}
}
else
{
Send {3}
}
return
}
$4::
{
if(dziala)
{
numer:=numer+1
FileAppend,`nZOLTY %A_TickCount%, C:TypingLog.txt
Send {Space}
}
else
{
Send {4}
}
return
}
$5::
{
if(dziala)
{
numer:=numer+1
FileAppend,`nCZARNY %A_TickCount%, C:TypingLog.txt
Send {Space}
}
else
{
Send {5}
}
return
}
vk13sc045::
{
if(dziala)
{
dziala:=0
SoundPlay, C:WindowsMediatada.wav
Send {Space}
}
else
{
dziala:=1
FileAppend,`nNOWA_OSOBA %A_TickCount%, C:TypingLog.txt
SoundPlay, C:WindowsMediachord.wav
Send {Space}
}
return
}
Interpretacja danych
A napiszemy sobie w PHP skrypcik do interpretacji danych:
<?php
function wczytaj($plik)
{
$tablica=file($plik);
$osoby=array();
$osoba_teraz=-1;
$czas=0;
for($i=0;$i5)
{
$dane=explode(" ",$teraz);
$osoby[$osoba_teraz][]=array($dane[0],($dane[1]-$czas));
$czas=$dane[1];
}
}
return $osoby;
}
$dane_emocje=wczytaj("dane_emocje.txt");
$dane_kolory=wczytaj("dane_kolory.txt");
$odp_emocje=wczytaj("emocje_odp.txt");
$odp_kolory=wczytaj("kolory_odp.txt");
$emocje_tran=array();
$emocje_tran['CZERWONY']='USMIECHNIETY';
$emocje_tran['ZIELONY']='SMUTNY';
$emocje_tran['NIEBIESKI']='ZLY';
$emocje_tran['ZOLTY']='PRZERAZONY';
$emocje_tran['CZARNY']='ZAZENOWANY';
$emocje=array();
$emocje_ile=0;
$kolory=array();
$kolory_ile=0;
//Przeliczamy emocje. Powinno byc proste.
for($i=0;$i<count($dane_emocje);$i++)
{
$emocje_ile++;
for($j=0;$j<count($dane_emocje[$i]);$j++)
{
$dane_emocje[$i][$j][2]=0;
if($dane_emocje[$i][$j][0]==$odp_emocje[0][$j][0])
{
$dane_emocje[$i][$j][2]=1;
}
if(!isset($emocje[$j]))
{
$emocje[$j]=array($dane_emocje[$i][$j][1],$dane_emocje[$i][$j][2],$emocje_tran[$odp_emocje[0][$j][0]]);
}
else
{
$emocje[$j][0]+=$dane_emocje[$i][$j][1];
$emocje[$j][1]+=$dane_emocje[$i][$j][2];
}
//sort
$emocje_czas_sort=array();
$emocje_odp_sort=array();
$emocje_czas_sort[$odp_emocje[$odp][$j][0]]+=$dane_emocje[$i][$j][1];
$emocje_odp_sort[$odp_emocje[$odp][$j][0]]+=$dane_emocje[$i][$j][2];
}
}
//print_r($emocje);
for($i=0;$i<count($dane_kolory);$i++)
{
$kolory_ile++;
for($j=0;$j5)
{
//wedle emocje1
$slajd=$j;
$odp=0;
}
else
{
$odp=1;
//wedle emocje2
if($j>19)
{
$slajd=$j-20;
}
else
{
$slajd=$j+20;
}
}
$dane_kolory[$i][$j][2]=0;
if($dane_kolory[$i][$j][0]==$odp_kolory[$odp][$j][0])
{
$dane_kolory[$i][$j][2]=1;
}
if(!isset($kolory[$slajd]))
{
$kolory[$slajd]=array($dane_kolory[$i][$j][1],$dane_kolory[$i][$j][2],$odp_kolory[$odp][$j][0]);
}
else
{
$kolory[$slajd][0]+=$dane_kolory[$i][$j][1];
$kolory[$slajd][1]+=$dane_kolory[$i][$j][2];
}
//sort
$kolory_czas_sort=array();
$kolory_odp_sort=array();
$kolory_czas_sort[$odp_kolory[$odp][$j][0]]+=$dane_kolory[$i][$j][1];
$kolory_odp_sort[$odp_kolory[$odp][$j][0]]+=$dane_kolory[$i][$j][2];
}
}
asort($kolory_czas_sort);
asort($kolory_odp_sort);
asort($emocje_czas_sort);
asort($emocje_odp_sort);
print("
KOLORY CZAS SORT
| ".$keys." | ".$values." |
KOLORY ODP SORT
| ".$keys." | ".$values." |
EMOCJE CZAS SORT
| ".$keys." | ".$values." |
KOLORY CZAS SORT
| ".$keys." | ".$values." |
".$kolory_ile."
| ".($kolory[$i][0])." | ".$kolory[$i][1]." | ".$kolory[$i][2]." |
1 Comment