Apos alguns arranhoes e minha vista cansada, porque ainda nao troquei o oculos … fiz algo que funciona, um quadradinho que vai para um lado e para o outro batendo nas paredes
veja que legal, pongme
o codigo fonte eh razoalmente simples:
um arquivo Main.as que faz a inicializacoes do framework flashpunk, uma classe para cada intancia de World, que representa cada cena, por exemplo Menu, o jogo em si, tela de fim de jogo e assim por diante, e objetos filhos de Actor que sao elementos de tela.
seguem os arquivos que usei
main.as
package
{
import punk.core.*;
import punk.util.*;
import punk.*;
[SWF(width = "480", height = "320")]
public class Main extends Engine
{
public function Main()
{
super(480, 320, 60, 1, Menu);
}
}
}
menu.as
package
{
import punk.core.*;
import punk.util.*;
import punk.*;
/**
* ...
* @author athanazio.com
*/
public class Menu extends World
{
public function Menu()
{
Text.color = 0x667CFF;
var centerX:int = FP.screen.width / 2;
var centerY:int = FP.screen.height / 2;
var title:Text = new Text("PongMe!\nPress Space to play.", centerX, centerY);
title.size = 15;
title.center();
add(title);
}
override public function update():void
{
if (Input.pressedKey(Key.SPACE))
FP.goto = new GameWorld();
}
}
}
gameworld.as
package
{
import punk.core.World;
import punk.Text;
/**
* ...
* @author athanazio.com
*/
public class GameWorld extends World
{
public function GameWorld()
{
}
override public function init():void
{
FP.randomizeSeed();
Text.color = 0x667CFF;
add(new Text("Game Screen.", 10, 10));
add(new Player());
add(new Ball());
add(new WallTop());
add(new WallLeft());
add(new WallRight());
}
}
}
player.as
package
{
import punk.Actor;
import punk.util.Input;
import punk.util.Key;
/**
* ...
* @author athanazio.com
*/
public class Player extends Actor
{
private var speed:Number = 3;
[Embed(source='data/player.png')] private var ImgPlayer:Class;
public function Player()
{
sprite = FP.getSprite(ImgPlayer, 0, 0);
speed = 6 * (sprite.width / FP.fps);
setHitbox( sprite.width, sprite.height, 0, 0);
x = 100;
y = 200;
type = "player";
Input.define("right", Key.RIGHT);
Input.define("left", Key.LEFT);
Input.define("up", Key.UP);
Input.define("down", Key.DOWN);
}
override public function update():void
{
var newX:Number = x;
var newY:Number = y;
if (Input.check("right")) newX += speed;
if (Input.check("left")) newX -= speed;
if (Input.check("up")) newY -= speed;
if (Input.check("down")) newY += speed;
if ( ! collide("wall", newX, newY) )
{
x = newX;
y = newY;
}
var ball:Ball= collide("ball", x, y) as Ball;
if ( ball )
{
ball.speedY = ball.speedY * -1;
}
}
}
}
ball.as
package
{
import punk.Actor;
/**
* ...
* @author athanazio.com
*/
public class Ball extends Actor
{
public var speedX:Number = 0;
public var speedY:Number = 0;
[Embed(source='data/ball.png')] private var ImgPlayer:Class;
public function Ball()
{
super();
sprite = FP.getSprite(ImgPlayer, 0, 0);
speedX = 7 * (sprite.width / FP.fps);
speedY = 7 * (sprite.width / FP.fps);
x = 100;
y = 100;
type = "ball";
}
override public function update():void
{
x += speedX;
y += speedY;
}
}
}
wallleft.as
package
{
import punk.Actor;
import punk.core.Entity;
/**
* ...
* @author athanazio.com
*/
public class WallLeft extends Actor
{
[Embed(source='data/wall-vert.png')] private var ImgPlayer:Class;
public function WallLeft()
{
sprite = FP.getSprite(ImgPlayer, 0, 0);
setHitbox( sprite.width, sprite.height, 0, 0);
x = 0;
y = 0;
type = "wall";
}
override public function update():void
{
var ball:Ball= collide("ball", x, y) as Ball;
if ( ball )
{
ball.speedX = ball.speedX * -1;
}
}
}
}
wallright.as
package
{
import punk.Actor;
import punk.core.Entity;
/**
* ...
* @author athanazio.com
*/
public class WallRight extends Actor
{
[Embed(source='data/wall-vert.png')] private var ImgPlayer:Class;
public function WallRight()
{
sprite = FP.getSprite(ImgPlayer, 0, 0);
setHitbox( sprite.width, sprite.height, 0, 0);
x = FP.screen.width - sprite.width;
y = 0;
type = "wall";
}
override public function update():void
{
var ball:Ball= collide("ball", x, y) as Ball;
if ( ball )
{
ball.speedX = ball.speedX * -1;
}
}
}
}
walltop.as
package
{
import punk.Actor;
import punk.core.Entity;
/**
* ...
* @author athanazio.com
*/
public class WallTop extends Actor
{
[Embed(source='data/wall-top.png')] private var ImgPlayer:Class;
public function WallTop()
{
sprite = FP.getSprite(ImgPlayer, 0, 0);
setHitbox( sprite.width, sprite.height, 0, 0);
x = 0;
y = 0;
type = "wall";
}
override public function update():void
{
var ball:Ball= collide("ball", x, y) as Ball;
if ( ball )
{
ball.speedY = ball.speedY * -1;
}
}
}
}
