Squeak

 

Keyboard input

Page history last edited by Dave R 2 yrs ago

http://wiki.squeak.org/squeak/488

 

On Oct 27, 2007, at 15:29 , Bill Kerr wrote:

 

> I can't see any capability for keyboard commands

> (important requirement for serious game making)

 

In the World's viewer you can find the "last keystroke" tile.

 

- Bert -


thanks bert, karl

but still can't get the functionality I want with only a global

lastKeyStroke

 

eg. to make a simple shooter

I have one script to move the shooter right and left - using right and left

keys

Another script to prime the bullet, so it starts in the same position as the

shooter - I have arbitarily used the z key for this

Another script to shoot the bullet - I have used space bar for this

 

But if I shoot the bullet and then move the shooter then the bullet suddenly

stops

And I want to make a sound once only when the bullet fires, can't see how to

do that because the script to fire the bullet has to tick continually

 

Converting my visual scripts to text:

 

move

World1 getLastKeystroke =3D '' ~~ false

ifTrue: [self setHeading: 90.

self forward: 5].

World1 getLastKeystroke =3D '' ~~ false

ifTrue: [self setHeading: -90.0.

self forward: 5]

 

prime

World1 getLastKeystroke =3D 'z' ~~ false

ifTrue: [Bullet setY: self getY.

Bullet setX: self getX]

 

shoot

World1 getLastKeystroke =3D ' ' ~~ false

ifTrue: [self setHeading: 0.0.

self forward: 10]

 

 

By comparison it's much easier using GameMaker, which has localised (to

objects) keyboard and keypress events and distinct movement and speed

actions

 

Information about object: objBear

 

Keyboard Event for Key:

move relative to position (-4,0)

 

Keyboard Event for Key:

move relative to position (4,0)

 

Key Press Event for Key:

create instance of object objBullet at position (objBear.x,objBear.y)

__________________________________________________

 

Information about object: objBullet

 

Create Event:

start moving in directions 000000010 with speed set to 10

play sound sndShot; looping: false

 

 

I see making a shooter, eg. a space invaders simulation, as a nice first

game activity for children, one that many find highly motivating

 

 

-- =

 

Bill Kerr

http://billkerr2.blogspot.com/

 

On 10/28/07, karl wrote:

>

> Bill Kerr wrote:

> > I can't see any capability for keyboard commands

> > (important requirement for serious game making)

> Key input is a property of the world. Make a viewer on the world and one

> of the categories has keyboard input.

>

> Karl


Hi Bill,

 

the Etoys version wouldn't actually be too different from the Game

Maker one. You wrote:

 

> start moving in directions 000000010 with speed set to 10

> play sound sndShot

 

"start moving" is not the same as "move" obviously. So make a

"moving" script for the bullet that ticks and moves it one step each

time, and on space key press "start moving", that is, call "bullet

startScript: #moving" from the "scripting" category.

 

An alternative to this would be introducing a "moving" variable that

would be set to true when the space key is hit, and testing this in

each step to move the bullet.

 

- Bert -

Comments (0)

You don't have permission to comment on this page.