Also

Moderators: Commodore, Zenith Nadir
Controller Elements are elements that react to keystrokes. The player and the monitor are two known Controller Elements. They each have their own set of keys that they react to. By default, the Controller Element that is "meant" to be on the board is listed first in the stat element parameter section of the .ZZT board data. I'll just refer to that as the "board data" when talking about elements that have parameters.
However, Controller Elements work normally no matter where they are in the board data, in terms of their internal functions. You may then ask, "What about player clones? They don't move when you press the directions." True. Internally, they don't cause themselves to move.
Here's what happens when you press a keystoke. Let's say there are 5 players on the board (1 active one (the first element in the board data) and 4 clones). You press up. Every player, in turn, reacts to the keystroke. The first player (the active one) checks to see if it is blocked to the North. It isn't, so it changes the y-coordinate for the first element in the board data (the player) to 1 less than its current y-coordinate and the x-coordinate equal to its current one. That will be updated at the beginning on the following cycle. The next player then does the same thing. It isn't blocked to the North, so it changes the FIRST player's y-coordinate to one less than the SECOND player's y-coordinate and its x-coordinate equal to its own (the second player's). Note that that would place the first player above the second. The third player does it as well, but say it is blocked to the North. It performs the normal function of trying to SEND whatever is to the North of it to TOUCH and doing nothing else. The fourth player operates and isn't blocked, so the coordinates of the first player are set above the fourth player. The fifth player is blocked, and tries to send whatever is above it to TOUCH. The next cycle begins and the first player appears directly to the North of the fourth player (third player clone). It is in the situation we have come to know as "stuck."
In a nutshell, the player always ends up to be the pressed direction of the LAST player in the board data who isn't blocked in that direction. If all player clones happen to be blocked in that direction and the first player (the active one) isn't, it moves in that direction normally.