Corsi Blocks (Simplified) Demo Experiment Run Experiment

Corsi Blocks (Simplified)

Jaap Murre

Functional Corsi Block Tap test with immediate feedback. Does not store any data. Useful for demonstrations or informal testing.


This is the long text for the Corsi Block Tap test.

Functional Corsi Block Tap test with immediate feedback. Does not store any data. Useful for demonstrations or informal testing.

If you are a registered user and signed in, you can here copy this script and its stimuli to your own account, where you can edit it and change it in any way you want.

It is absolutely free to register (no credit card info asked!). You can then instantly copy this experiment with one click and edit it, change its accompanying texts, its landing page, stimuli, etc. Invite your colleagues, friends, or students to check out your experiment. There is no limit on how many people can do your experiment, even with a free account.

The catch? There is no catch! Just keep in mind that with a free account, you cannot collect data. For teaching that is usually not a problem. For research, prepaid data collection (unlimited subjects) starts as low as €10.00 for a 10-day period.

var coords = [[10,10],[20,40],[20,80],[40,30],[45,60], // block coordinates
          [60,10],[60,75],[70,50],[80,20],[85,45]],    // [[left,top], ...]
    blocks = [], i, b, series, e, block,
    block_color = "lightgrey",
    span = 2, errors, attempts = 0, correct = 0, kessels_score;
    
instruction("Watch the blocks 'light up' and then click them in the correct order. ");
clear();
await(1500);
    
for (i = 0; i < coords.length; i++) // Create block layout, use `i` as id
{
    blocks.push(main.addblock(coords[i][0],coords[i][1],10,10,block_color,"",i));
}

while (true)   // Do 'forever', but really only until `break` is called
{
    await(2000);
    series = shuffle(range(10));            // Randomize series
    
    for (i = 0; i < span; i++)              // 'Play' series
    {
        b = series[i];
        blocks[b].style("backgroundColor","black");
        await(500);
        blocks[b].style("backgroundColor",block_color);
        await(500);
    }
    
    errors = 0;
    for (i = 0; i < span; i++)              // Have subject click series
    {
        e = await("click");                 // Event `e` also contains target node
        b = parseInt(e.event.target.id);    // parseInt turns a string into a number
        blocks[b].blink("black",250);       // 250 ms blink to black
        if (series[i] !== b)                // Count errors
        {
            ++errors;
        }
    }   
    
    ++attempts;
    if (errors === 0)
    {
        ++correct;
        if (attempts === 2)             // If twice correct, increase span
        {
            ++span;
            attempts = 0;
        }
    }
    else
    {
        if (attempts === 2)             // If twice wrong, stop test
        {
            --span;
            kessels_score =  span*correct; // Kessels et al. (2000)
            break;                      // Break out of while loop
        }
    }
} 

await(1000);
main.addblock("center","center",90,90,"white","Your Corsi blocks span is " + span);

console.log("Corsi Span: ",span,"  Kessels Score: ",kessels_score);
This experiment has no files of this type
This experiment has no files of this type
This experiment has no files of this type
This experiment has no YouTube links
This experiment has no files of this type