I’m new to Snap! but I have some experience with Scratch. How similar is this platform to Scratch and what are the main differences I should be aware of?
Hi, welcome to Snap!.
Pretty much everything you know from Scratch will work here too. But Snap! adds lots of important big ideas. The central one is first class procedures:
Putting a block or script in a gray ring yields the block or script itself as the value of the expression. Using this capability, you can write in Snap! itself control structures such as FOR:
The key here is the RUN block, which takes a (ringed) script as input and runs it.
For more:
The only thing that may be confusing to someone with Scratch experience coming to Snap! is the lack of a button to make lists. You make lists like this: set [var V] to (list [a] @delInput@addInput)
the first difference i noticed is in making custom blocks
in scratch, you know you can only create command blocks (the normal block type) and the block can have labels, or text/boolean inputs
in snap, custom blocks can be command blocks (command), reporters ( (reporter) ), predicates (<predicate :: operators>), and hats (hat :: hat control)and there are way more input types
the definitions for custom blocks also appear in their own “window” instead of the main code area and there’s no “Run without screen refresh” option, but an easy workaround i’ve used for that is putting my block definitions inside of a warp {
} block
another thing i noticed is that in snap!, there are no “extensions” (the extra block categories, not like the extension [ V] [] @<:> you might see) but rather libraries, collections of blocks that are typically user-made which you can find by clicking the paper button at the top of the editor page and selecting “Libraries…”
i’ll answer any specific questions that i can if you need to know more!
So this is a way to store values without using them immediately? At least that’s what I think it means
Another difference is that there are first class costumes, sounds, and sprites. This also means you can save these things in variables:

A primary example of this is the
block
These libraries have custom blocks? That’s actually pretty neat. I look forward to checking some out?
I didn’t use lists too much, but thank you for showing me how to make one here!
Interesting! I’ll have to check these out
I’m having a bit of trouble with sprites. I can’t convert any of them to vector and it defaults to bitmap. Is there a way to make it vector?
above all the paint tools in the UI, there should be 3 buttons, the rightmost of which should say ‘Vector’
Yes but my sprites aren’t transferred over when converting. They disappear.
whoops, misinterpreted what you said, sorry. as for your actual problem, I’m not sure how to get around it. why do you want to convert bitmaps to vector anyway?
I mean you could switch to vector beforehand and draw out your sprites there
I like the Vector editor more and I like being able to select parts of it, but if there is no way, that’s fine
Okay so the costume editor kinda sucks for anything more than making simple costumes. What I usually use is the Turbowarp vector editor or Boxy SVG
ok, thanks for the resource!
Variables are how you store values to use later. Rings are a way to make a procedure (a block or script) into a value (which can then be stored in a variable like any other value).
When you make a C-shaped block, the C slot (into which you put a script) is implicitly ringed. Then you can run it repeatedly using the RUN block.
It’s an idea that takes some effort to wrap your mind around, but once you do, you’ll feel like a wizard; you can program anything!
Another big idea is hyperblocks. This means that the operators that usually expect a scalar (a number or string) as input can instead be given a list, and it operates termwise, like this:
This is great for media computation, such as computing a transformed version of every pixel in a costume.
Snap! can be used for data structures. Here is a basic example of a ‘dictionary’:
Tip: Drag this image into Snap! to import it (if it doesn’t work, open the image for a raw preview then try again)
Nothing to do with sprites, but you can code something similar to this to create a whole new class of objects.
oops, forgot to select the sound in play sound ()
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.





