For the final week we are going to convert the Christmas Card into a Christmas Game.
We will be starting with the Christmas Card that we made last week, if you weren’t there or want to start with the same one that I will be using, have a look at the bottom of this document, I have added instructions on how to get it.
The Plan for this week.
We will be adding some additional Sprites. We will be using Scratch Sprites rather than drawing our own to save time.
A sprite for Santa’s sleigh
This will move backwards and forward across the top of the screen
A sprite for the Presents
This will fall from Santa’s sleigh to the bottom of the screen, not directly down though.
This sprite will have many costumes.
As sprite for you
You will be able to move Left and Right across the bottom of the screen to try and catch the falling presents.
The Sleigh Sprite
Scratch does not have a sleigh sprite, so I used the reindeer.
He needs to start on the top left of the screen and move all the way to the top right of the screen and then turn around and go back to the top left, he will just keep doing this.
The code might look something like this:
The Present Sprite
We might have to draw this one.
The present Sprite will start from wherever the Sleigh Sprite is glide down to a random place at the bottom of the Screen, you can make the Present a random size as well to make it more interesting.
The is a Scratch block to put one Sprite in the same place as another Sprite So the code to move down the screen will look something like this:
There will also be code to count the number of presents caught. So, if the Present Sprite touches you, it will count as being caught, so you can increase your score.
When the present is caught you can change to a random costume to display the unwrapped present.
I’ll let you figure out this code as a little challenge (I haven’t done it yet 😊 )
This is the one that catches the presents. I used the Scratch cat, finally.
Not much code for this one, he just needs to move left or right using the left or right keys on the keyboard. So, something like this:
When you are using Teams, please keep your microphone off unless you need to ask a question. You can have your webcam on or off, whichever you prefer.
Here are the main buttons you might need:
It is much easier to follow the session if you have two screens, one for the Teams window and one for your own code. Here are two ways to do this:
If your laptop has a HDMI port, you could connect it to a TV with a HDMI cable, or you could connect a spare computer monitor if you have one. Then press Windows and P, and select Extend. Then you can have different windows in each screen.
You could use your laptop for your own code, and connect to the Teams session with a separate phone or tablet.
As well as the main mentor leading the Teams session, we have other mentors who can answer your questions at any time.
Either: press the Chat button and type your question
Or: press the Raise Hand button and wait for the mentor
If Chat Does Not Work
If you get an error when you try to press the Chat button, it might be because you are logged into a work or school Teams account that has chat restrictions. If so, here is a solution:
Press Leave to leave the CoderDojo session
Sign out of Teams – click on your picture in the top right corner to open a menu, and Sign Out is at the bottom of the menu
Click on the link to join the CoderDojo session again, and this time join as a guest without logging into your school/work account.
This is not just an ordinary clock though, we are going to build a clock that works in the same way as the Railway clocks works in Switzerland.
These clocks work in the following way:
The Clock waits for a signal from the master clock
When it gets the signal, it moves the minute hand on by one minute (and the hour hand if necessary)
then the second hand moves round once in about 58 seconds
It then waits for the signal again from the master clock.
This means that all the clocks on all the Stations are synchronised exactly.
In Computer speak this is called Event Driven Programming, where the code simply waits for an Event before doing anything.
So what’s the plan?
We need 4 Sprites
For the Clock Face
For the Hour Hand
For the Minute Hand
For the Second Hand
You can create them however you want but this is what the Swiss railway clocks look like and I will try and create something similar.
Remember one thing, when creating the Sprites make sure they are centred correctly.
So, the clock face should be perfectly centred and then the hands should be centred near one end something like this, I have highlighted where the centre is, with the green circle.
Remember this will be event driven, so we will be using Broadcasts a lot. We will also have to calculate how far to move each hand, this means we will be using the number 360 a lot as that is one complete circle.
So just to let you know how far each hand should move:
The Second hand will move 360 degrees for each event.
The Minute hand will move 6 degrees for each event (360/60 minutes)
The Hour hand will move 0.5 degree for each event (360/60 minutes/ 12 hours)
The first event will be broadcast from the Stage:
The Minute hand will receive this broadcast and move 6 degrees it will then broadcast another 2 events, one to the Hour hand and one to the second hand so they can move.
This is the code for the Minute hand which should be enough to work out the rest of the code as well.
The extra code above is to make sure the Minute hand starts in the correct position.
And one final thing which might be a little tricky, but I’ll leave it as a challenge for you, the Second hand should only take 58 seconds to go all the way around.
We completed our Mario game this week. We coded Mario so that he always floated down on to the wall. We added a fraction of a second of a wait so that it appears that he floats as he comes down. This also allows time for you to navigate left or right as needed.
We also introduced a more advanced concept, the Parallax effect, whereby objects further away appear to move slower than objects nearer. We coded mountains and a Sun to demonstrate this.