[racket] Key-event test problem

From: Roelof Wobben (r.wobben at home.nl)
Date: Thu May 3 09:16:52 EDT 2012

Op 3-5-2012 14:24, Laurine Harbulot schreef:
> Hello all,
> We're students and we're working on a space invaders project.
>
> Our game runs very well but we've got a problem:
> We would like to give the opportunity to players to press two 
> keyboards buttons at the same time but for now,our program tests only 
> one event at the same time.
> Is there a solution for that ?
>
> Thanks all.
>
> Laurine and Vincent
>
>
>
> ____________________
>    Racket Users list:
>    http://lists.racket-lang.org/users

Hello,

If I look at this text copied from htpd2e it can't.

Once the big-bang 
<http://docs.racket-lang.org/teachpack/2htdpuniverse.html#%28form._%28%28lib._2htdp%2Funiverse..rkt%29._big-bang%29%29> 
expression is evaluated, DrRacket acts just like a real operating 
system, watching the clock, the key board, and the mouse for events and 
dispatching to your designated BSL functions.

The key question is what arguments DrRacket supplies to your event 
handlers for key strokes, mouse clicks, and clock ticks and what kind of 
results it expects from these event handlers. Like a real operating 
system, DrRacket gives these functions access to the current state of 
the world. For key events and mouse events, DrRacket also supplies 
information about these events.

The initial state is the value of w0, because our big-bang 
<http://docs.racket-lang.org/teachpack/2htdpuniverse.html#%28form._%28%28lib._2htdp%2Funiverse..rkt%29._big-bang%29%29> 
expression says so. It also is the state that DrRacket hands to the 
first event handling function that it uses. DrRacket expects that this 
event handling function produces a new state of the world, and DrRacket 
keeps this result around until the second event happens. Here is a table 
that describes this relationship among worlds and event handling functions:

event:

	

big-bang 
<http://docs.racket-lang.org/teachpack/2htdpuniverse.html#%28form._%28%28lib._2htdp%2Funiverse..rkt%29._big-bang%29%29>

	

e1

	

e2

	

e3

	

e4

current world:

	

w0

	

w1

	

w2

	

w3

	

w4

clock tick:

	

(cthw0)

	

(cthw1)

	

(cthw2)

	

(cthw3)

	

(cthw4)

key stroke:

	

(kehw0... 
<http://docs.racket-lang.org/htdp-langs/beginner.html#%28form._%28%28lib._lang%2Fhtdp-beginner..rkt%29._......%29%29>)

	

(kehw1... 
<http://docs.racket-lang.org/htdp-langs/beginner.html#%28form._%28%28lib._lang%2Fhtdp-beginner..rkt%29._......%29%29>)

	

(kehw2... 
<http://docs.racket-lang.org/htdp-langs/beginner.html#%28form._%28%28lib._lang%2Fhtdp-beginner..rkt%29._......%29%29>)

	

(kehw3... 
<http://docs.racket-lang.org/htdp-langs/beginner.html#%28form._%28%28lib._lang%2Fhtdp-beginner..rkt%29._......%29%29>)

	

(kehw4... 
<http://docs.racket-lang.org/htdp-langs/beginner.html#%28form._%28%28lib._lang%2Fhtdp-beginner..rkt%29._......%29%29>)

mouse click:

	

(mehw0... 
<http://docs.racket-lang.org/htdp-langs/beginner.html#%28form._%28%28lib._lang%2Fhtdp-beginner..rkt%29._......%29%29>)

	

(mehw1... 
<http://docs.racket-lang.org/htdp-langs/beginner.html#%28form._%28%28lib._lang%2Fhtdp-beginner..rkt%29._......%29%29>)

	

(mehw2... 
<http://docs.racket-lang.org/htdp-langs/beginner.html#%28form._%28%28lib._lang%2Fhtdp-beginner..rkt%29._......%29%29>)

	

(mehw3... 
<http://docs.racket-lang.org/htdp-langs/beginner.html#%28form._%28%28lib._lang%2Fhtdp-beginner..rkt%29._......%29%29>)

	

(mehw4... 
<http://docs.racket-lang.org/htdp-langs/beginner.html#%28form._%28%28lib._lang%2Fhtdp-beginner..rkt%29._......%29%29>)

Although you might imagine that two events happen at the same time, 
DrRacket arranges all events in a linear sequence.The first row 
enumerates the events since DrRacket started evaluating the big-bang 
<http://docs.racket-lang.org/teachpack/2htdpuniverse.html#%28form._%28%28lib._2htdp%2Funiverse..rkt%29._big-bang%29%29> 
expression, while the second row presents the current world---a result 
of processing the event. The big-bang 
<http://docs.racket-lang.org/teachpack/2htdpuniverse.html#%28form._%28%28lib._2htdp%2Funiverse..rkt%29._big-bang%29%29> 
column thus says that w0 becomes the current world as a result of a 
big-bang 
<http://docs.racket-lang.org/teachpack/2htdpuniverse.html#%28form._%28%28lib._2htdp%2Funiverse..rkt%29._big-bang%29%29> 
event. Each of the remaining rows tabulates what the functions cth, keh, 
and meh produce when applied to the current world. Only one of these 
results is chosen, however, as the current world---depending on which 
event actually takes place.
So suppose e1 is the key stroke "a", e2 and e3 are clock ticks, and e3 
is a mouse event. Then

 1.

    w1 is the result of (kehw0"a"), i.e., the fourth cell in the e1 column;

 2.

    w2 is the result of (cthw1), i.e., the third cell in the e2 column;

 3.

    w3 is (cthw2), i.e., again the third cell in the e3 column; and

 4.

    (mehw390100"button-down") produces w4 assuminge4 is the mouse event
    "button down" taking place at the position (90,100).


Roelof

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20120503/ccba2587/attachment-0001.html>

Posted on the users mailing list.