Create a Simon Clone!
Scratch, 1604 – 125 = 1479

I'm here for the fun, not the golf.

Edit: updated scoring method based on community consensus.

Main program:



Individual sprites:



This is the sprite with number 0. The other sprites have the same script, except the number.

Play with it online.

Code used for byte counting: (Using snippet to hide code)



when green flag clicked
set [s v] to [0]
delete (all v) of [a v]
forever 
  set [x v] to (pick random (0) to (3))
  add (x) to [a v]
  set [i v] to [1]
  repeat (length of [a v] :: list) 
    broadcast (item (i) of [a v] :: list)
    wait (0.3) secs
    change [i v] by (1)
  end
  set [i v] to [1]
  wait until &lt;(x) = [4]&gt;
end

when I receive [0 v]
play sound [0 v]
next costume
wait (0.3) secs
next costume

when this sprite clicked
broadcast [0 v]
wait (0.3) secs
if &lt;[0] = (item (i) of [a v] :: list)&gt; then 
  change [i v] by (1)
else 
  stop [all v]
end
if &lt;(i) &gt; (length of [a v] :: list)&gt; then 
  set [x v] to [4]
  change [s v] by (1)
end

when this sprite clicked
broadcast [3 v]
wait (0.3) secs
if &lt;[3] = (item (i) of [a v] :: list)&gt; then 
  change [i v] by (1)
else 
  stop [all v]
end
if &lt;(i) &gt; (length of [a v] :: list)&gt; then 
  set [x v] to [4]
  change [s v] by (1)
end

when I receive [3 v]
play sound [3 v]
next costume
wait (0.3) secs
next costume

when I receive [1 v]
play sound [1 v]
next costume
wait (0.3) secs
next costume

when this sprite clicked
broadcast [1 v]
wait (0.3) secs
if &lt;[1] = (item (i) of [a v] :: list)&gt; then 
  change [i v] by (1)
else 
  stop [all v]
end
if &lt;(i) &gt; (length of [a v] :: list)&gt; then 
  set [x v] to [4]
  change [s v] by (1)
end

when this sprite clicked
broadcast [2 v]
wait (0.3) secs
if &lt;[2] = (item (i) of [a v] :: list)&gt; then 
  change [i v] by (1)
else 
  stop [all v]
end
if &lt;(i) &gt; (length of [a v] :: list)&gt; then 
  set [x v] to [4]
  change [s v] by (1)
end

when I receive [2 v]
play sound [2 v]
next costume
wait (0.3) secs
next costume




Note: Code automatically generated using scratchblocks generator, modified as somehow the generator doesn't correctly handle decimal numbers (treating 0.3 as 0).

Screenshot:



Note: Please do not press two buttons within 0.3 seconds.