/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
keyboard input i spil...
Fra : Morten Olsson


Dato : 10-03-01 22:26

Davs folkens - jeg har kun haft med java at gøre i et 1½-2 måneders tid, og
er rendt ind i et lille
problem...

Jeg har, på baggrund af DSJUG (demoscenes java udviklings grej -
www.demo-scene.dk) lavet
en lille sprite-engine (der kører som en applet), som indtil videre
håndterer 24-bit sprites der kan fise rundt på skærmen, skifte
retning når de rammer kanten, finde ud af hvornår de ramme hinanden osv...

Hvis ovenstående lyder mystisk har jeg smidt et par småeksempler op på
users.cybercity.dk/~dsl23906/1 (en sprites der fjerne andre sprites når
de kolliderer)
users.cybercity.dk/~dsl23906/2 (en række sprites der racer afsted efter
hinanden)

Nu ville jeg gerne tilføje noget keyboardinput, således at jeg kan lave et
par små spil på baggrund af ovenstående...

Mit spørgsmål er simpelt: hvorledes håndterer jeg bedst keyboard input mens
min applet kører ? jeg skulle gerne være i stand til
at registrere hvornår en bestemt tast trykkes ned, og hvornår den slippes
etc...

På forhånd tak

Venlig hilsen
Morten Olsson





 
 
Ulrik Magnusson (10-03-2001)
Kommentar
Fra : Ulrik Magnusson


Dato : 10-03-01 22:57

Morten Olsson wrote:

> Mit spørgsmål er simpelt: hvorledes håndterer jeg bedst keyboard input mens
> min applet kører ? jeg skulle gerne være i stand til
> at registrere hvornår en bestemt tast trykkes ned, og hvornår den slippes
> etc...

Du kan evt lade det enkelte Sprite objekt håndtere hvordan den styres. Vi kan
kalde den UserControlledSprite og definere den således:

class KeyboardControlledSprite implements Keylistener
{
private int x, y;

UserControlledSprite( Component component )
{
component.addKeyListener( this );
}

public void keyPressed( KeyEvent e )
{
if( e is up-arrow )
{
y--;
}
etc
}

public void draw( Graphics g )
{
tegn denne sprite på x, y
}

}

Du kan lave "flydende" bevægelser (som ikke kræver at du taster, hver gang et
Sprite objekt skal
flyttes en enhed) ved at bruge State mønsteret:

class MovingUpwards implements State
{
private int length;

MovingUpwards( int length )
{
this.length = length;
}

public void update( Sprite sprite )
{
if( --length == 0 )
{
//dræb denne tilstand
sprite.nextState();
}
else
{
sprite.moveOneUnitUp():
}
}
}

eller noget i den retning..

Ulrik Magnusson


--
"Somewhere in here I was born and there I died. It was only
a moment for you; you took no notice"
'Madeleine' in Vertigo, Hitchcock 1958
Visit my home page: http://www.geocities.com/ulrikm



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste