Beginners Scratch – Challenge 8 – Start Preparing to Earn Your First Belt!

CDA-S2-Challenge08-PrepareForBelts

The ninjas of CoderDojo Athenry are starting to get ready for a new challenge: to earn belts!

Like martial arts dojos, the CoderDojo movement award belts of various colours from white to black, in recognition of skill levels in different coding disciplines. One big difference, though: our belts are USB memory keys that you can wear on your wrist!

Two weeks before the day on which we will be awarding belts, we took time to explain the process the the ninjas. The Scratch Beginners can earn one of two possible belts:

  1. White Belts for commitment and basic skills (based on attending for 5 weeks or more)
  2. Yellow Scratch Belts for competence in Scratch programming

The Scatch Advanced group have the potential to earn Yellow or Blue Scratch belts, and the Python  Beginners have the potential to earn White or Yellow Python belts.

To earn a Yellow Belt, you have to first be eligible for a White Belt. You also have to write a program in advance, and explain aspects of it to the mentors on the day, in order demonstrate your knowledge of Scratch programming concepts such as:

  • Loops (FOREVER or REPEAT blocks)
  • Decisions (IF blocks): for example, testing if one sprite is touching another or a colour, or testing the value of a variable
  • Variables
  • Animation and sound
  • Sprites controlled by keyboard or mouse
  • Other features such as Broadcasts and speech bubbles are good to have too.

Here are the presentation slides from the day, in PDF format: CDA-S2-Challenge08-PrepareForBelts.pdf

If you would like us to send you these slides in PowerPoint format, feel free to get in touch on Twitter or via the comments!

Scratch Advanced – Week 9 – Christmas Game Part 2

What are we going to learn about this week.

1. Code reuse
2. Testing and Debugging
3. Exams!

1. Code Reuse – how to plan ahead and only write something once, remember the button we did that we exported and used again in other projects? Well, you can do the same kind of thing
within Scratch if you need several Sprites to do exactly the same thing.

First you create one Sprite and add all the code that you need for that one Sprite.

When you are happy with the way that Sprite works then just right click on the Sprite and select duplicate. The key to getting the best out this of this functionality is to ensure that the first Sprite that you have done has everythin working correctly.

2. Testing and Debugging – This is normally done using the original requirements, you basically go through the list of things that the Game should do and tick them off if it works. It helps if you have the list written down and then you know what you are testing.

And, it also helps if you get someone else to test your Game, as they will test it differently to you.

So here is the list of requirements from last week:

1.It needs to look like my living room with a nice window and lovely fire place.
2.At Christmas, when you look out the window it is normally snowing.
3.We normally have our tree in the corner, with a nice set of lights on it.
4.Santa normally flies across the top of the house and drops the presents down the chimney, lately he has not had a good aim, so we will need to be able to move the fireplace left and right.
5.If we catch the presents, we can move them to under the tree.
6.I don’t want the game to last more than two minutes.
7.And when it ends I want to know what all the Presents are.

It’s best to use Presentation Mode to do your testing.

And go through each item on it’s own. At the moment we haven’t completed all the code for everything, so you can only test the parts that are complete.

If it passes, perfect, if not, it’s time to start debugging.

Debugging, the first thing to do is run your test again, to confirm that it’s not working. There are two very important things to know here:

1. What SHOULD happen – this is what is described in the list of requirements.
2. What is happening – this is the result of your test.

When you have those two bits worked out, you can start looking at the code to see what is wrong.

In Scratch, it is possible to see which piece of code is actually running, this is done using the Edit – Start Single Stepping.

Try it out, but DON’T use the Green Flag to start everything, just click on one of the Control Blocks to start that one piece of code.

3 Exams – ok, don’t panic, but it is that time of year again.

We are all going for the Blue Belt this time, and your knowledge will be tested on what we have learnt in the last 8 weeks. Here is a refresher of the things that we have covered:

Week 1. Movies.
Week 2. Sliders and Buttons
Week 3. Random Numbers, Stamping, Saving Images.
Week 4. Exporting Sprites
Week 5. Code Reuse – Parallel and Sequential Programming.
Week 6. Lists, for saving data and reading it out.
Week 7. Code Modules, using LIsts as a Database.
Week 8. Coding to Requirements.

Advanced Scratch – Week 8 – Planning for Christmas

Dear Santa,

I would like a nice new game for Christmas.

I would like it to be a Christmas game where you have to catch the presents in the fireplace

Just to make it easier, here are some more things that I would like it to do.

  1. It needs to look like my living room with a nice window and lovely fire place.
  2. At Christmas, when you look out the window it is normally snowing.
  3. We normally have our tree in the corner, with a nice set of lights on it.
  4. Santa normally flies across the top of the house and drops the presents down the chimney, lately he has not had a good aim, so we will need to be able to move the fireplace left and right.
  5. If we catch the presents, we can move them to under the tree.
  6. I don’t want the game to last more than two minutes.
  7. And when it ends I want to know what all the Presents are.

So you might need to think about the following:

  1. What to put on the Stage and what to use Sprites for.
  2. Whether one Sprite should be in front of another Sprite. This is something that we have not done before.
  3. How many costumes each Sprite needs
  4. Do you want to use one Sprite for all the Presents and just change the size and colour.
  5. Stamping could be used to get the Presents under the Tree.
  6. How to do the Snow and the Flashing Lights on the Tree.

Beginners Scratch – Challenge 7 – Buid Your Own Game!

These are the notes from our seventh challenge in Season 2 of Scratch Beginners, CoderDojo Athenry.

The challenge this week was to work on your own game. The coding concepts for this challenge are:

  1. Using the Scratch skills you have acquired for your own games
  2. Creativity and imagination
  3. Designing your own program.

A key point in developing your own game is to start simple, get the first idea tested and working, and then start adding more. We also spoke about the usefulness of planning on paper, rather than jumping straight into coding (which can be a tough one to sell!)

Here are the notes from the day (PDF): CDA-S2-Challenge07-YourGame.pdf

If you want to check how we did things in previous challenges, you can find the programs here: http://scratch.mit.edu/galleries/view/183379

We will continue to work on our own games next week, and I will post a link to a gallery of games that ninjas have produced.

Advanced Scratch – Week 7 – A fancy Piano

What are we going to learn this week:

Modularistion – How to make your code simpler and easier to look after.

Sequential Processing – review

Databases – storing static data to use later in the day.

Remember the Piano last week, where we ended up with the same code repeated again and again, all that copying, yeaagh!!!

Well this week we are going to have a look at doing the same thing but a little smarter.

This is the code that we ended up with last week, where everything was the same apart from the Mouses X position that we were checking.

Well we are going to look at making this a lot smarter.

Let’s imagine if we could get the notes on the Keyboard to got from 1 to 15 instead of 48 to 72, that should then make things a lot simpler. In order to do this we need to do a little number crunching, don’t worry if you don’t understand all of what follows.

My Piano Keyboard goes from X = -222 to x = +222 it would be easier if it went from 0 – to 444?

We can sort this out easily enough, we just make our own variable to store the Mouse X value, and add 222 to it, like this:

So our Keyboard is now 444 units wide and there are 15 keys on it, that means that each key takes up (444 / 15 ) 29.6 units.

If we divide the MouseX value by 29.6, we get the number of the Key that has been pressed (ranging from 0 to 14). For example if the User clicks on the third note, this would have an X value of around -150, we add 222 to that, which gives us 72, we then divide 72 by 29.6 which gives us 2.43, if we just take the number before the decimal point, this gives us 2, which is the third key 0,1,2. And to make it three we just add one.

Now to get just the number to the left of the decimal point is not as simple as rounding, as we always want to round DOWN. So the simplest way to do it in Scratch is to just treat as some text and find out where the “.” is. If it is in the third character then we take tw characters, otherwise we just take one. Fortunately we know that there will only be a maximum of two numbers on the left. And finally we add the one at the end so we end up with this…

Now this has got us a number from 1 to 15, how do we translate that into the correct Note to play?

We need a Database of all the possible Notes that can be played. We will store this information in a List, and fill it full of data when you click on the Green Flag.

The Notes go from 48 through to 72, with a few missing inbetween. What we want to do is have the Notes numbered from 1 to 15. This will make it easier to figure out what note to play when the user clicks on the keyboard.

We fill the list as like this…

So how does this all help us get rid of the big long repeated code block that we had before?

Well, instead of looking to see where the mouse is ourselves we just ask the code that does all the Maths to figure it out for use. We can use a Broadcast and Wait for this, so we have one “if mouse down” which asks the other code what Note should be played.

If you take out the Record and Playback code, this is everything you need…

 

Beginners Scratch – Challenge 6 – Story-Telling and Scrolling Backgrounds!

This week, our challenge is to work on Animation projects. We are looking at two project ideas: telling stories and scrolling backgrounds.

To tell a story, we have two sprites with speech and pauses carefully timed so that they have a conversation with each other. I just did a simple knock-knock joke, but you could do more.

After, we worked on how to make a scrolling background, a bit like the scrolling demo example that is supplied with Scratch. We figured out how to create the appearance of left/right movement by moving a sprite representing the ground in the opposite direction. We also found out how to make distant background objects, like mountains, move more slowly (called the parallax effect).

Coding concepts that we discussed included:

  1. Speech bubbles and sound
  2. Timing sprites
  3. Loops

Here are the notes from the day (PDF): CDA-S2-Challenge06-StoriesAndScrolling.pdf

Here is my Knock-Knock animation: http://scratch.mit.edu/projects/cdathenry/2899125

And here is my Scrolling Background with Mario: http://scratch.mit.edu/projects/cdathenry/2531497

If you would like us to send you the PowerPoint slides of my notes, get in touch via twitter or by leaving a comment.

Advanced Scratch – Week 6 – Lets Build a Piano

 

What are we going to learn this week, well it might take two weeks to get this completed.

Lists – How to put stuff in.

Lists – How to get stuff out.

Record – How to record things that happen, we might use a list for this 🙂

Playback – How to replay things that have happened, we might use a list for this 🙂

Mouse – where is it on the Screen, we use this to determine which Piano key has been pressed.

Lists

So what is a List, well they are like variables, you get to them from the same screen, but there are just a lot of them joined together. You would normally use them for similar types of things, like a Shopping list for example, where you put different items of food:

Chocolate, Crisps, Biscuits, Tea, Coffee.

We are going to use a list to store all the different Piano Keys that have been clicked. We can then use the same list to Play the Notes back again.

We also get to use the Button Building Block to add some buttons, one for Record and one for Play etc.

So what do we need for out Piano, well, we need a keyboard for a Start, we only need 16 notes (2 octaves) and we can either draw it ourselves or borrow one from somewhere.

Something like this would be good

Then we need to play the right note depending upon where the user has clicked.

There is one piece of easy code that just needs to be repeated over and over again with slightly different numbers. Here is a sample of what is needed and then you just need to repeat it with the different numbers for the location (mouse X / Y position) of the different keys.

 

 

 

Playback Time – so how do we play back what we recorded, well I just imported my Go Button Sprite to start the Playback and added the following code to run when I recieve the Broadcast from the Go Button… Remember how we did this before.

I needed to create another variable as well to keep track of which Note in the List we should be playing.

And finally, there is some initialisation code that keeps things nice and tidy when you click the Green Flag. But you could import another Button and use that to reset the Notes List, which would be much nicer. And don’t forget we already have the Button as a Sprite, so this should be easy to add in.

The go to x,y code I found to be quite useful as when you Click on the Piano Keys it can move the Keyboard around a little. But again, remember this will only happen in “Design” mode, when you switch to Presentation Mode, you won’t see this problem.

 

Beginners Scratch – Challenge 5 – A Better GhostBuster Game!

This week, our lead mentor was Declan Fox, who did a great job.

The challenge was to enhance our GhostBuster game from out last challenge.  The game involves PacMan character, controlled by the mouse, who has to catch ghosts that move at random.

This week, we added levels that make it go faster and change the colour of the background, and we added animations (PacMan chomping, ghosts blinking & sticking out their tongues), and background music.

Coding concepts that we discussed included:

  1. Loops
  2. Animation
  3. Broadcasting to communicate between sprites

Here are the notes from the day (PDF): CDA-S2-Challenge05-BetterGhostCatcher.pdf

This is my version of the updated game: http://scratch.mit.edu/projects/cdathenry/2485407

If you would like us to send you the PowerPoint slides of my notes, get in touch via twitter or by leaving a comment.

Advanced Scratch – Week 5 – Code Recycling and parallel processing

What are we going to learn this week.

  • Buzzer Game – Using old code and a little new code we can build a game.
  • Code recycling – How to re-use code that you have already written.
  • Parrallel vs Sequential Processing – sounds worse than it is 🙂

Buzzer Game

Navigate through the Maze to earn More Money, the more you get the Harder the game becomes.

Most of the code for this game you have already written, cool… But there is some  new code that you will need.

So, lets do the New code first…

We need a coin, or something that you can move with the mouse and that will BUZZ and Shake when it touches a particular colour.

This is my Coin here…

I have one costume for normal and one costume fo buzzing!

We now need to set up some code so that you can move it with the mouse, this is similar code to the button code we did, and I found a better way of doing it!

What you want to happen is if the mouse is on the Coin you can Click to grab it and it will move wherever the mouse moves until you let go of the mouse.

We also want it to Buzz! when it touches a particluar colour, to test this I just drew some lines on the Stage and used the Dropper tool to select the right colour.

SEQUENTIAL PROCESSING – This is my Buzz code, I just move it around a little and make a noise. Notice on the Broadcast that it is a Broadcast and Wait, this allows the Buzz code to work correctly.

 

And the code that allows you to click and drag the coin around the Screen goes something like this…

Advanced Tip 1. To test this piece of code, you will need to run your program in full screen mode, otherwise Scratch is in “design” mode and moves the Sprite anyway.

The Maze.

CODE RECYCLING PART 1. Remember last week whne you did the Truchet Patterns, they were pretty maze like, weren’t they. Well all we need to do is import the Truchet Sprite, maybe play around with it a little bit and you will have your maze.

What I changed in my Truchet Pattern, was the size of the initial square, I made it bigger, and also I didn’t stamp along the top line or the bottom line so the coin has somewhere to aim for.

The other thing that you might have to change is if you have used curved lines, you might want to change them for straight lines, otherwise the gaps between them can be very close. Alternatively you can make your coin very small.

So once I had adjusted my pattern, I ended up getting something like this.

CODE RECYCLING PART 2. Remember the Button we did, well let’s bring that into the Game as well so we can use it to Start everything off

Now you need to connect everything together. This is where the fun Starts…. 🙂

 

Beginners Scratch – Challenge 4 – Create a GhostBuster Game!

This week, our lead mentor was Martha Madden, who blogs at kidswithskills.wordpress.com.

The challenge was to develop a game with a PacMan character, controlled by the mouse, who has to catch ghosts that move at random.

Coding concepts that we discussed included:

  1. Design of programs
  2. Loops
  3. Decisions
  4. Using the Paint Editor in Scratch

Here are the notes from the day (PDF): CDA-S2-Challenge04-GhostCatcher.pdf

If you would like us to send you the PowerPoint slides of my notes, get in touch via twitter or by leaving a comment.