games - az31353.vo.msecnd.net · games. learning objectives o writing games! o understanding the...

24
games

Transcript of games - az31353.vo.msecnd.net · games. learning objectives o writing games! o understanding the...

Page 1: games - az31353.vo.msecnd.net · games. learning objectives o writing games! o understanding the built-in 2D game engine o events in games o using art (pictures, sounds) language

games

Page 2: games - az31353.vo.msecnd.net · games. learning objectives o writing games! o understanding the built-in 2D game engine o events in games o using art (pictures, sounds) language

learning objectives

o writing games!

o understanding the built-in 2D game engine

o events in games

o using art (pictures, sounds)

Page 3: games - az31353.vo.msecnd.net · games. learning objectives o writing games! o understanding the built-in 2D game engine o events in games o using art (pictures, sounds) language

language recapo local variables: store and reuse a value

var x := 5

x->post to wall

o if statement: make decisions!

if x = 5 then ...

else ...

o for loop: repeat code multiple times

for 0 <= i < n do

...

Page 4: games - az31353.vo.msecnd.net · games. learning objectives o writing games! o understanding the built-in 2D game engine o events in games o using art (pictures, sounds) language

global variableso a global variable holds a value in memory and “on

disk”;

o a global variable can be read or written too;

o A global variable is available everywhere

• definition

data->x := 0◳x := 0

• reading

◳x->post to wall

• update with new value

◳x := 5◳ is the shorthand

for ‘data’

Page 5: games - az31353.vo.msecnd.net · games. learning objectives o writing games! o understanding the built-in 2D game engine o events in games o using art (pictures, sounds) language

fruit ninja liteo one sprite shoots up from the

bottom of the screen

o user needs to tap the sprite

before sprite falls back

on the bottom

o when tapped, the sprite shoots

up again from the bottom

o 1 point per tap successful

o game over if 3 missed sprites

Page 6: games - az31353.vo.msecnd.net · games. learning objectives o writing games! o understanding the built-in 2D game engine o events in games o using art (pictures, sounds) language

boardo 2D sprite-based game engine

o physics: sprites have speed, gravity, friction

o game loop: timer event to ‘step’ the world

o touch events on sprites

Page 7: games - az31353.vo.msecnd.net · games. learning objectives o writing games! o understanding the built-in 2D game engine o events in games o using art (pictures, sounds) language

coordinates and units

o origin (0, 0) is top left

corner

o landscape or portrait

o y coordinates positive

going down

x

y

(0,0)

Page 8: games - az31353.vo.msecnd.net · games. learning objectives o writing games! o understanding the built-in 2D game engine o events in games o using art (pictures, sounds) language

1. basic game template

var board: Board

action main

◳board := media->create landscape board(800,480)

◳board->post to wall

x: 800

y: 480 pixel

(0,0)display on screen

creates a 2D game engine

global variable

Page 9: games - az31353.vo.msecnd.net · games. learning objectives o writing games! o understanding the built-in 2D game engine o events in games o using art (pictures, sounds) language

1.5 setting up physics

var board: Board

action main

◳board := media->create landscape board(800,480)

◳board->post to wall

◳board->set gravity(0, 700)

event gameloop

◳board->evolve

◳board->update on wall

x: 800

y: 480 pixel

(0,0)

gravity falling down

applies physics every 50 ms

Page 10: games - az31353.vo.msecnd.net · games. learning objectives o writing games! o understanding the built-in 2D game engine o events in games o using art (pictures, sounds) language

2. creating a sprite

o create an ellipse in the board

o store the sprite in a local variable

o promote the sprite variable to data

action main

...

◳fruit:= ◳board->create ellipse(100, 100)

width height

meaningful name!

Page 11: games - az31353.vo.msecnd.net · games. learning objectives o writing games! o understanding the built-in 2D game engine o events in games o using art (pictures, sounds) language

3. sprite shooting from the bottom

o position the sprite just above bottom of the board

o set speed such that the sprite goes up the screen

action shoot

◳fruit->set pos(400, 500)

◳fruit->set speed(0, -800)

action main

...

code->shoot

x: 800

y: 480 pixel

(0,0)

(400, 500)

Page 12: games - az31353.vo.msecnd.net · games. learning objectives o writing games! o understanding the built-in 2D game engine o events in games o using art (pictures, sounds) language

tap sprite event

o tap sprite is an event raised when the

user taps a sprite. Attaches to a global

variable of kind Sprite.

event tap sprite: fruit(

sprite : Sprite,

x : Number,

y : Number)

name of the global variable

(x,y) is the coordinate of the tap

Page 13: games - az31353.vo.msecnd.net · games. learning objectives o writing games! o understanding the built-in 2D game engine o events in games o using art (pictures, sounds) language

4. tap and shoot

o When sprite is tapped, shoot the sprite from

the bottom again

event tap sprite: fruit(...)

code->shoot

Page 14: games - az31353.vo.msecnd.net · games. learning objectives o writing games! o understanding the built-in 2D game engine o events in games o using art (pictures, sounds) language

5. score

o on tap, increase the score by 1

action main

...

◳score := 0

event tap sprite: sprite(...)

...

◳score := ◳score + 1

Page 15: games - az31353.vo.msecnd.net · games. learning objectives o writing games! o understanding the built-in 2D game engine o events in games o using art (pictures, sounds) language

6. when the sprite falls through the

bottom…

o the sprite shoots back

action gameloop

...

if ◳fruit->y > 480

and ◳fruit->speed y > 0

then

code->shoot

beyond the bottom

going down

Page 16: games - az31353.vo.msecnd.net · games. learning objectives o writing games! o understanding the built-in 2D game engine o events in games o using art (pictures, sounds) language

7. when the sprite falls through the

bottom for the 3rd time…

o the user has 3 chances and them game overaction main

...◳life := 3

action gameloop

...if ◳fruit->y > 800

and ◳fruit->speed y > 0then

◳life := ◳life – 1

if ◳life < 1then

◳score->post to wall

time->stop

one life lost

no more life, stop the game

Page 17: games - az31353.vo.msecnd.net · games. learning objectives o writing games! o understanding the built-in 2D game engine o events in games o using art (pictures, sounds) language

customizations

Page 18: games - az31353.vo.msecnd.net · games. learning objectives o writing games! o understanding the built-in 2D game engine o events in games o using art (pictures, sounds) language

art - pictureso using pictures in your games

Page 19: games - az31353.vo.msecnd.net · games. learning objectives o writing games! o understanding the built-in 2D game engine o events in games o using art (pictures, sounds) language

backgroundo set screen background color or image

wall->set background(color->blue)

or…

wall->set backround picture(art->background)

Page 20: games - az31353.vo.msecnd.net · games. learning objectives o writing games! o understanding the built-in 2D game engine o events in games o using art (pictures, sounds) language

picture spriteo use create picture instead of create

ellipse

o resize the picture (if needed)

action main◳fruit := ◳board->create ellipse(100,100)◳fruit := ◳board->create picture(art->fruit)

var pic := art->picture->clonepic->resize(100,-1)◳fruit := ◳board->create picture(pic)

this is the art we just added

Page 21: games - az31353.vo.msecnd.net · games. learning objectives o writing games! o understanding the built-in 2D game engine o events in games o using art (pictures, sounds) language

art - soundso same as picture for sounds

• still under development in web version

o When sprite is tapped, play the splash sound

event tap sprite: sprite(...)

code->shoot

art->splash->play

Page 22: games - az31353.vo.msecnd.net · games. learning objectives o writing games! o understanding the built-in 2D game engine o events in games o using art (pictures, sounds) language

randomness fruit trajectories

the sprite could start from any place at

the bottom

The sprite could have a little angle to get a bell-

shape trajectory

make sure the fruit stays in the screen!

Page 23: games - az31353.vo.msecnd.net · games. learning objectives o writing games! o understanding the built-in 2D game engine o events in games o using art (pictures, sounds) language

randomness fruit trajectories

o math->random(5) returns a number between

0 and 5 not included, i.e. 0,1,2,3 or 4.

action shoot

var x := 120 + math->random(540)

◳fruit->set pos(x, 500)

var speedx := -50 + math->random(100)

◳fruit->set speed(speedx, -800)

tweak these values!

Page 24: games - az31353.vo.msecnd.net · games. learning objectives o writing games! o understanding the built-in 2D game engine o events in games o using art (pictures, sounds) language

leaderboardso use bazaar->post leaderboard

score(score) to publish a score online

o use bazaar->post leaderboard to

wall to display the leaderboard

o leaderboards only work on published scripts