A typewriter simulator is a simulation project where you can type notes, like in a word processor. This typewriter tutorial only requires simple scripting.

Creation

First, create a sprite. One can call it whatever the user wants to, but for this example, it will be called "Text".

Now, click the Costumes button above the block palette, and change the mode to vector. One will need to create a new costume with the letter "a", uppercase or lowercase. Name the costume "a".

Create 25 more costumes, but instead of making more "a"s, make one costume for each letter of the alphabet. The name of each costume should be the letter that the costume is.

Once the user has all of the costumes, create a custom block that looks like this:

print [] size ():: custom

Once the Scratcher finishes, a "Define" hat should appear.

Click the Data button, and create a variable that is open to all sprites and named "letter on?".

In this step, print [] size ():: custom will be defined. Snap the following blocks underneath the define block so that the script looks like this:

define print [text] size (size::custom-arg)
set [letter on? v] to [1]
repeat (length of (text))
switch costume to (letter (letter on?) of (text))
stamp
change [letter on? v] by (1)
change x by (size::custom-arg)
end

Now, you have two different choices. You can choose whichever one you like better.

One method of detecting which keys are pressed can be the 26-script way. It's like this:

First, create a script like this:

when [a v] key pressed
print [a] size (width of costumes):: custom

When using this method, you need to repeat the script 25 more times, but each with a different letter of the alphabet. First "a", then "b", and so on.

Another method of detecting which keys are pressed can be the 1-script way. First, create a script like this:

when gf clicked
forever
if <key [a v] pressed?>:: control
print [a] size (width of costumes):: custom
else
...
end

The next step is to copy the "if else" part and stick it in the first "if else"'s "else". Change the "<key [a v] pressed>" to "<key [b v] pressed>" and change the "print [a]..." to "print [b]...". Keep on doing this until you get to "y". This part is different, and should look like this:

...
if <key [y v] pressed?>:: control
print [y] size (width of costumes):: custom
else
if <key [z v] pressed?>:: control
print [z] size (width of costumes):: custom
end
end
wait (delay time) secs

Here is the completed script:

when gf clicked
forever
if <key [a v] pressed?>:: control
print [a] size (width of costumes):: custom
else
if <key [y v] pressed?>:: control
print [y] size (width of costumes):: custom
else
if <key [z v] pressed?>:: control
print [z] size (width of costumes):: custom
end
end
wait (delay time) secs
end

define print [text] size (size::custom-arg)
set [letter on? v] to [1]
repeat (length of (text))
switch costume to (letter (letter on?) of (text)
stamp
change [letter on? v] by (1)
change x by (size::custom-arg)
end
Cookies help us deliver our services. By using our services, you agree to our use of cookies.