WEEK 4
CONDITIONALS & DEBUGGING
MAKE SPRITES
THAT THINK
AND MAKE
DECISIONS
BUILD GAMES
THAT KNOW
WHEN YOU
WIN OR LOSE
BECOME
DEBUGGING
DETECTIVES
CREATE
ENEMIES
THAT REACT
TO THE
PLAYER
THINK ABOUT GAMES YOU PLAY:
HOW DOES
IT KNOW
YOU CAUGHT
ALL THE
COINS?
HOW DOES
IT KNOW
YOU TOUCHED
THE LAVA?
HOW DOES
IT KNOW
WHEN TIME
RAN OUT?
ANSWER: IT'S ALWAYS CHECKING WITH IF/THEN BLOCKS!
CONDITIONALS = IF/THEN DECISIONS
IN REAL LIFE:
IF RAINING
THEN BRING
UMBRELLA
IF HUNGRY
THEN EAT
A SNACK
IN SCRATCH:
IF TOUCHING
RED THEN
GAME OVER
IF SCORE > 10
THEN YOU WIN
WATCH ME CODE!
WHEN GREEN
FLAG CLICKED
FOREVER
IF <TOUCHING
COLOR [RED]?>
THEN
SAY [GAME OVER!]
FOR (2) SECONDS
STOP [ALL]
KEEPS CHECKING FOREVER UNTIL THE SPRITE TOUCHES RED!
MAKING IT FEEL REAL!
WHEN I RECEIVE
[PLAYER LOST]
SWITCH COSTUME
TO [SAD]
SAY [YOU LOST!]
FOR (2) SECONDS
CHANGE [SCORE]
BY (-5)
GO TO X: (0) Y: (0)
BROADCAST
[RESTART GAME]
MULTIPLE THINGS HAPPEN WHEN YOU LOSE!
HOW TO DETECT A WIN!
CHECK FOR WIN
WHEN GREEN
FLAG CLICKED
FOREVER
IF <(SCORE)
> [50]> THEN
BROADCAST
[PLAYER WON]
CELEBRATE!
WHEN I RECEIVE
[PLAYER WON]
SWITCH COSTUME
TO [HAPPY]
SAY [YOU WON!]
FOR (3) SECONDS
STOP [ALL]
FAILURE IS NORMAL!
PRO CODERS
SPEND 50%
OF THEIR
TIME
DEBUGGING
THAT MEANS
HALF OF
CODING IS
FIXING
MISTAKES!
BUGS ARE NOT MISTAKES - THEY'RE CLUES!
EVERY ERROR TELLS YOU SOMETHING ABOUT YOUR CODE.
IN 1947 A REAL MOTH BROKE A COMPUTER!
THAT'S WHERE
THE WORD
"BUG" COMES
FROM!
TODAY'S BUGS AREN'T MOTHS - THEY'RE:
MISSING
BLOCKS
WRONG
ORDER
BLOCKS NOT
CONNECTED
WRONG
SPRITE
STEP 1: READ
READ YOUR
CODE OUT
LOUD
SAY WHAT
YOU THINK
IT DOES
STEP 2: CHECK
TEST ONE
BLOCK AT
A TIME
WHERE DOES
IT BREAK?
STEP 3: TEST
CHANGE ONE
THING
RUN IT AGAIN
BETTER OR
WORSE?
EXAMPLE CODE:
WHEN GREEN
FLAG CLICKED
FOREVER
MOVE (10) STEPS
IF ON EDGE,
BOUNCE
"WHEN I CLICK GREEN FLAG, THE SPRITE WILL KEEP
MOVING 10 STEPS AND BOUNCING AT THE EDGE FOREVER."
DOES THAT MATCH WHAT YOU WANT IT TO DO?
DISCONNECT BLOCKS AND TEST EACH PART
TEST JUST
THE MOVEMENT
DOES IT
MOVE?
ADD THE
FOREVER LOOP
DOES IT
KEEP MOVING?
ADD THE
BOUNCE
DOES IT
BOUNCE?
IF SPRITE IS MOVING TOO FAST:
DON'T DELETE
EVERYTHING
AND START
OVER!
DO CHANGE
ONE NUMBER
AT A TIME
AND TEST!
TRY MOVE (5) INSTEAD OF (10) - STILL TOO FAST?
TRY MOVE (3) - TEST AGAIN!
CHANGE ONE THING - TEST - REPEAT
YOU'LL GET A BROKEN PROJECT!
1. OPEN THE
PROJECT
2. TRY TO
RUN IT
WHAT'S
WRONG?
3. USE THE
3-STEP
DEBUG
METHOD
4. FIX ALL
3 BUGS!
TIME: 8 MINUTES
BUG TYPE 1
MISSING
FOREVER LOOP
SPRITE MOVES
ONCE AND
STOPS
BUG TYPE 2
IF BLOCK
OUTSIDE
THE LOOP
NEVER
CHECKS!
BUG TYPE 3
WRONG SPRITE
DOING THE
ACTION
CODE ON
BACKGROUND!
WHEN YOUR CODE DOESN'T WORK, CHECK:
GREEN FLAG
BLOCK AT
THE TOP?
FOREVER LOOP
FOR THINGS
THAT KEEP
HAPPENING?
IF BLOCKS
INSIDE THE
FOREVER
LOOP?
ALL BLOCKS
CONNECTED?
NO GAPS!
KEEP THIS CHECKLIST IN YOUR MIND!
NOW YOU CODE WITH ME!
ADD A WAY
TO LOSE
(TOUCH THE
ENEMY)
ADD A WAY
TO WIN
(COLLECT 5
STARS)
ADD MESSAGES
THAT TELL
YOU WHAT
HAPPENED
FOLLOW ALONG STEP-BY-STEP!
CLICK "VARIABLES" > "MAKE A VARIABLE"
CREATE
VARIABLE:
"SCORE"
FOR ALL
SPRITES
CREATE
VARIABLE:
"GAME OVER"
FOR ALL
SPRITES
CHECK THE BOXES SO THEY SHOW ON THE STAGE
ON THE PLAYER SPRITE:
WHEN GREEN
FLAG CLICKED
SET [SCORE] TO (0)
SET [GAME OVER]
TO [NO]
GO TO X: (-200)
Y: (0)
WHY? START FRESH EVERY GAME!
ON THE PLAYER SPRITE: TOUCH ENEMY = LOSE!
WHEN GREEN
FLAG CLICKED
FOREVER
IF <TOUCHING
[ENEMY]?> THEN
SET [GAME OVER]
TO [YES]
BROADCAST
[PLAYER LOST]
STILL ON PLAYER SPRITE:
WHEN I RECEIVE
[PLAYER LOST]
SAY [OH NO!]
FOR (2) SECONDS
HIDE
STOP [OTHER
SCRIPTS IN
SPRITE]
PLAYER SAYS "OH NO!" - DISAPPEARS - MOVEMENT STOPS
ON THE STAR SPRITE:
WHEN GREEN
FLAG CLICKED
FOREVER
IF <TOUCHING
[PLAYER]?> THEN
CHANGE [SCORE]
BY (1)
HIDE
MAKE 5 STARS BY DUPLICATING THIS SPRITE!
ON THE PLAYER SPRITE:
CHECK SCORE
WHEN GREEN
FLAG CLICKED
FOREVER
IF <(SCORE)
= [5]> THEN
BROADCAST
[PLAYER WON]
CELEBRATE!
WHEN I RECEIVE
[PLAYER WON]
SAY [I WON!]
FOR (3) SECONDS
GLIDE (1) SECS
TO X: (0) Y: (0)
COLLECT 5 STARS AND SEE WHAT HAPPENS!
TRY THESE THINGS:
CLICK GREEN
FLAG - DOES
SCORE START
AT 0?
TOUCH A
STAR - DOES
SCORE GO
UP?
TOUCH THE
ENEMY - DO
YOU LOSE?
COLLECT ALL
5 STARS -
DO YOU WIN?
IF SOMETHING DOESN'T WORK:
USE THE 3-STEP DEBUG METHOD!
ENEMIES THAT CHASE YOU! ON THE ENEMY SPRITE:
WHEN GREEN
FLAG CLICKED
FOREVER
POINT TOWARDS
[PLAYER]
MOVE (2) STEPS
IF ON EDGE,
BOUNCE
IF <TOUCHING
[PLAYER]?> THEN
BROADCAST
[PLAYER LOST]
WANT IT HARDER?
1. DUPLICATE
THE ENEMY
SPRITE
2. PLACE
THEM IN
DIFFERENT
SPOTS
3. GIVE THEM
DIFFERENT
SPEEDS!
ENEMY1: MOVE (2) STEPS - ENEMY2: MOVE (3) STEPS
ENEMY3: MOVE (1) STEPS - FAST AND SLOW ENEMIES!
CHOOSE YOUR CHALLENGE LEVEL!
LEVEL 1-2
ADD SOUND
EFFECTS TO
WIN/LOSE
ENEMY
CHANGES
COLOR
LEVEL 3
ADD A TIMER
BEAT THE
GAME IN 30
SECONDS!
LEVEL 4-5
SAFE ZONES
(BLUE =
SAFETY)
PATROLLING
ENEMIES
1. FIND A
PARTNER
2. SWAP
COMPUTERS
3. ONE
PERSON
HIDES 2-3
BUGS
4. OTHER
PERSON
DEBUGS
WITH THE
3-STEP
METHOD
TIME: 10 MINUTES - THEN SWITCH ROLES!
GOOD BUGS TO CREATE:
TAKE OUT
THE FOREVER
LOOP
MOVE THE IF
BLOCK
OUTSIDE
THE LOOP
CHANGE
SCORE TO
COUNT
BACKWARDS
HIDE THE
BROADCAST
BLOCK
DON'T MAKE IT IMPOSSIBLE - MAKE IT A GOOD PUZZLE!
THINK ABOUT THESE QUESTIONS:
WHAT'S YOUR
DEBUGGING
STRATEGY
NOW?
WHAT'S THE
HARDEST BUG
YOU FIXED
TODAY?
HOW DID
IF/THEN
BLOCKS MAKE
YOUR GAME
SMARTER?
SHARE WITH A PARTNER!
IF/THEN
BLOCKS MAKE
SPRITES
DECIDE
GAME OVER
USES
BROADCASTS
DEBUGGING
IS A SKILL
YOU CAN
PRACTICE
3-STEP
METHOD:
READ CHECK
TEST
YOU'RE BECOMING REAL CODERS!
WEEK 5: "KEEPING SCORE"
VARIABLES
THAT
REMEMBER
NUMBERS
SCORE
SYSTEMS
LIVES
AND
HEALTH
TIMERS
MAKING
GAMES
FEEL REAL!
HOMEWORK (OPTIONAL): ADD MORE IF/THEN BLOCKS
TO YOUR GAME. WHAT ELSE CAN YOUR SPRITES REACT TO?
LEAVE YOUR PROJECT OPEN ON YOUR SCREEN!
WALK AROUND
AND TRY 3
CLASSMATES'
GAMES
FOR EACH GAME:
PLAY IT!
FIND ONE
IF/THEN
CONDITION
THEY USED
GIVE THEM
ONE
COMPLIMENT
TIME: 10 MINUTES
SAVE WITH A DESCRIPTIVE NAME:
GOOD NAMES
"MAZE CHASE
WITH SMART
ENEMY"
"STAR
COLLECTOR
WIN/LOSE"
BAD NAMES
"MY PROJECT"
"UNTITLED"
YOU'LL WANT TO FIND IT NEXT WEEK!
GREAT WORK, MAKERS! SEE YOU NEXT WEEK!
REMEMBER: EVERY BUG YOU FIX MAKES YOU A BETTER CODER.