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();