Pong

Get Adobe Flash player

Kode:


/** 

	Pong - Enkel versjon

	Ulven 16.11.11

*/



import flash.events.TimerEvent; 		//Skal bruke klassene TimerEvent

import flash.utils.Timer;				//og Timer fra rammeverket

import flash.events.KeyboardEvent;



/* Konstanter */

const xmax=400;		//Banestørrelse horisontalt

const ymax=400;		//Banestørrelse vertikalt

const r=15;			//Radius på ball

const h=20;			//Høyde på rekkert

const b=80;			//Bredde på rekkert

 

/* Tilstand i noen globale variabler */ 

var timer:Timer; 

var stepx=2;		//Bevegelsesfart per "tikk"

var stepy=3;



/* Hovedprogram */

stop();					//stopp "filmen", har bare en keyframe, så egentlig undødvendig her



ball.w=2*r;				//Setter størrelse på ball og rekkert

ball.h=b;

rekkert.w=b;

rekkert.h=h;



ball.x=xmax/2;				//Plasserer ball og rekkert på skjermen

ball.y=ymax/2;

rekkert.x=xmax/2;

rekkert.y=ymax-h;



/* Oppretter nytt objekt fra klassen Timer.

     timer sender en TimerEvent hvert sekund i det uendelige. ("0" betyr uendelig ikke 0 ganger!)

    (1000 hadde gitt 1000 ganger.)

*/  

timer = new Timer(0.5,0);		//timer sender en TimerEvent hvert halve sekund.

												



timer.addEventListener(TimerEvent.TIMER,flyttBall);	//flyttBall()



function flyttBall(evt):void {

	if(ball.x<r) {stepx=-stepx;}		//utenfor til venstre?

	if(ball.y<r) {stepy=-stepy;}		//utenfor over?

	if(ball.x>(xmax-r) ) {stepx=-stepx;}	//utenfor til høyre?

	if(ball.y>(ymax-r) ) {stepy=-stepy;} //utenfor under?

	

	/* Kollisjonssjekk.

	   Kunne brukt 	ball.hitTestObject(rekkert) istedenfor den relativt

	   kompliserte betingelsen, men betingelsen illustrerer hvordan man

	   bygger opp en kompleks betingelse, den kan leses omtrent slik:

	   Hvis

	   	   ball.x til høyre for venstresiden av rekkert og

	       	   ball.x til venstre for høyresiden av rekkert og

		   ball.y nedenfor øvre toppen av rekkert       og

		   ballens bevegelsesretning er nedover

	   så endrer vi vertikal bevegelse.

	   

	   Vær opperksom på at x- og y-koordinaten til grafiske objekter

	   ligger midt i objektet!

	 */

	if(

	   (ball.x>(rekkert.x-b/2)) && (ball.x<(rekkert.x+b/2)) && 

	   (ball.y>=(rekkert.y-rekkert.h/2-r/2)) && (stepy>0)         ) {

	   		stepy=-stepy;

   }//if 

	ball.x+=stepx;

	ball.y+=stepy;

}//flyttBall()



stage.addEventListener(KeyboardEvent.KEY_DOWN,flyttRekkert);	//moveRekkert()



function flyttRekkert(evt):void{

	var tastekode=evt.keyCode;

	if(tastekode==Keyboard.RIGHT){

		rekkert.x+=15;

	} else if(tastekode==Keyboard.LEFT){

		rekkert.x-=15;

	}//if-else

}//moveRekkert()



timer.start();