Hearts, particularly valentine hearts, tend to be a feature of February rather than September. Fortunately, my valentine isn’t crammed full of them. I’ll share it with you, below, as it’s a Snap project. This school year, I’m providing what TEALS refers to as “lab support” for students in the morning class at DeKalb High School of Technology—South (DHSTS) in Decatur, Georgia. And, as part of that, I’m working the projects, same as last year, although now, Snap, is not a stranger to me.
DHSTS is a magnet school. Students are bused in from other high schools to spend half a school day (four periods) in my class, five days a week. This means we cover a lot of material in a short time. In fact, they’re doing an intro to tech first quarter, Code.org‘s Computer Science Principles during the second quarter and AP Computer Science (with Java and a test), third and fourth quarters.
Which brings me back to the valentine. As part of the intro, we’re doing a little Snap and we’ve chosen what TEALS calls the Animated Storytelling Project. Last year, I did a nursery rhyme, “Itsy Bitsy Spider” and all of my students did nursery rhymes as well. This year, it’s expanded. It does have to (loosely) tell a story/narrative and fulfill the rubric.
And so, I present to you. Carol Ann Duffy’s poem “Valentine” in Snap.
Before Pong we had to do a nursery rhyme. With animation, not simply a storyboard with text. In Snap, the main way to animate is to change the sprite’s costume. There are two costume-switching blocks. These are in the Looks section. One is which changes to the next costume in the set of costumes loaded for that particular sprite. The other iswhich allows the coder to choose which of the loaded costumes to switch to at that point in the code.
Animation also often involves movement from one position on the screen to another and there are two blocks for that, too. (well, several actually, but two that are useful in animation). These are found in the Motion section and are and Both of these take numbers or variables as parameters in the little ovals that I left blank.
There was a rubric for the nursery rhyme. Students can earn up to 20 points for their project. Here is a screenshot of my nursery rhyme.You can see it here. Assets are from clker.com except the background (included with Snap) and the waterspout (created in GIMP). The text sprite was also done in GIMP. Most assets were modded in some way—either to make a second costume or (in the case of the sun) to make the text sprite more readable.
Apparently, Unit 3 is a “platform game” and I don’t even like those (except maybe Cosmo’s Cosmic Adventure). Watch this space for more exciting Snap stuff as I figure out what kind of platform game I’m going to create and how it will work.
Ever had one of those days when your IDE decides to rebel? Today was that day for me in Snap and what it did was lost several of the blocks in the Variables category that I needed to do my Pong. Namely, I lost the ability to set variables and the ability to change them. These were the blocks I lost.This meant I couldn’t track the score or change the speed of the ball (the particular things I was attempting to do when I noticed the blocks had gone missing from the palette). This was highly annoying.
About all I could do was open another Snap in another browser window and rebuild my code. Because exporting to XML and importing back into Snap brought the anemic palette with me.
It took a long time, as I was mostly finished, too. I was struggling with reflections and had finally figured them out (including how to apply what I think is called “English”). And I was to the part of putting in sounds. I got all my sounds from freesound.org which is searchable.
Of course my Pong is baseball-themed—what else would you expect? I use sprites for all the edges because I know how to easily test for that and play a sound when sprites touch (and I heard there was a glitch with other kinds of detection and rather than explore them, I figured I’d be lazy). I don’t know if my sprites need to be as big as I make them, but I’ve noticed that size does not equate to pixels, but to “steps” and (again) I’m too lazy to figure it out.
On the off-chance someone messes with my field, when the green flag is clicked, I put things in their places. I uncheck the box at the top of each sprite for draggability but that might not stop someone who is determined. Here’s a screenshot of the pregame.
You can see it here. Don’t know that I’m off hiatus, but I may be.
No, Pong is not the next Snap project—a kaleidoscope is. Here is the example of the kind of thing they mean by a kaleidoscope.
Four sprites moving in synchrony. This example was presented as you see it—in .gif format. No clues on how to make one like it except some platitudes. “You will need four sprites.” Well no shaving cream, Sherlock! “The easiest way to create three more is to duplicate the one you have.” You mean there are other ways? The only way I could figure out to make more sprites without cracking the manual (there is one) is by right-clicking the existing sprite and clicking duplicate. That also duplicates the code. So I did break down and look at the manual.
It turns out that green flag is at the top of the stage. Quick peeky-see at the names of all the areas on the Snap screen—from the actual homework that I actually did that had the actual kaleidoscope program assigned. Here’s that picture.
See the flag? When you click that, it counts for all the sprites that have that block of code so you can start …. say, four sprites, and have them do synchronous stuff. This is what I came up with. It is similar, but different, you can look at the code by exiting full-screen mode. I think that it’s more of the sort of thing I think of as kaleidoscopic. I think the color should be the same for all sprites but change over time.
Now, I’m ready for Pong. Well, no, that’s not right, now the next major project i turn in is Pong. I’ll probably do some other things in the meanwhile. Pong has a rubric. For those who don’t know, a rubric is a scoring chart that lists aspects of my program and how many points each is worth. Everything from “Players can control paddles with required keys” to “Program is well-documented and exhibits good style.” Whoa, documented? I don’t think I saw comment blocks in Snap (not that I was looking, mind you). I’m usually adequate at commenting. I hope that’s good enough for my grader. I guess I’ll find out.
Wish me luck!
Snap is a programming language that is intended to teach programming concepts without the pesky need to learn syntax. If you’ve ever worked with Legos, K’nex, Erector or other component systems, it’s a similar concept. Sounds easy, right? It’s harder than it looks.
Here’s the screenshot of Snap, which can be run entirely online.The area on the left is the set of blocks you can pick from; at the top there are eight options for sets of blocks you can have displayed there. The default is the first one, Motion.
So, when I loaded Snap for the first time, I did what any respectable programmer would do—I set about writing a “Hello, world” program in Snap. Oh, my! Where to begin. Well, you need to start the program and you need to “say” the text “Hello, world!” and you need to end the program. Well it turns out the start and end stuff is under Control. The stuff to say things is under Looks. And the stuff to tell it, no, you can stop saying it already (forever is an option but ewww!) is under Controls too but the condition you need to test is under Sensing.
After fiddling around with it, I discovered if you only say “Hello, world!” and end, it disappears before the user even is aware it was said. Not good. There are options. You can set a duration or you can set until an event. I chose an event and the event I chose was a mouse-click. Here is my version of “Hello, world!” in Snap.Next up. Pong. Yes, you read that right. I’m going to be a teaching assistant for a school in Hillsboro, North Dakota (remotely) and I’ll be introducing high school students to programming through Snap and then Python. So for the next while, you’ll be reading more about TEALS than FreeCodeCamp.
TEALS (Technology Education and Literacy in Schools) is the program through which I’m lucky enough to get to reach out and teach the next generation. I have five(!) kids and of them, only one did any amount of coding (and that was a phase—he’s becoming a paralegal). This is my way of sharing my passion.