Olá pessoal preciso de ajudar para terminar um jogo estilo Brick Breaker no Flash CC.
O professor pediu que alem de criar o jogo, ele tivesse as seguintes funções em seu código (os nomes das funções devem ser os mesmos que os contidos neste documento):
insertMoreBalls: inseri no palco aleatoriamente duas ou três bolas.
speedUpBall: acelera a velocidade em relação ao eixo x e y da bola que colidiu com o tijolo.
slowDownBall: desacelera a velocidade em relação ao eixo x e y da bola que colidiu com o tijolo.
getBiggerBalls: aumenta o tamanho da bola que colidiu com o tijolo.
getMoreLifes: aumenta em um o número de vidas do jogador.
increaseBrickResistance: aumenta a resistência do tijolo, isto é, quando ele for acertado por uma bola a sua resistência é diminuída em um. Quando for igual a zero, então o tijolo desaparece da tela.
O jogo está completo, só preciso fazer essas funções mas não estou conseguindo. O professor deu uma dica de como sortear o tijolo que vai possuir esses “powerups”. Segue o código dele abaixo:
Brick.as (PROFESSOR)
package {
import flash.display.MovieClip;
import flash.display.;
import flash.events.;
public class Brick extends MovieClip {
private var _root:MovieClip;
private var _item:int;
public function Brick(){
//Code that will be run when the brick is added to the stage
addEventListener(Event.ADDED, beginClass);
//Enter frame code
addEventListener(Event.ENTER_FRAME, enterFrameEvents);
}
private function beginClass(event:Event):void{
_root = MovieClip(root);
_item = int(Math.random()*2);
}
private function enterFrameEvents(event:Event):void{
//hit testing with the ball
for(var i:int = 0;i<_root.ballsList.length;i++){
if(hitTestObject(_root.ballsList[i])){
//making the ball bounce off vertically
_root.ballsList[i].ballYSpeed *= -1;
//destroying this brick
_root.bricksCount–;
_root.removeChild(this);
//stop running this code
this.removeEventListener(Event.ENTER_FRAME, enterFrameEvents);
if(_item == 0){ // speed up the ball
speedUpBall(_root.ballsList[i]);
}
if(_item == 1 ){ // slow down the ball
slowDownBall(_root.ballsList[i]);
}
}
}
}
function speedUpBall(ball:MovieClip):void{
if(ball.ballXSpeed < 0){
ball.ballXSpeed -= 5;
}else{
ball.ballXSpeed += 5;
}
}
function slowDownBall(ball:MovieClip){
if(ball.ballXSpeed < 0){
ball.ballXSpeed += 5;
}else{
ball.ballXSpeed -= 5;
}
}
}
}
O meu código já é diferente, e eu tentei substituir o meu _root.mcball pelo _root.ballsList[i] dele e apliquei as funções de speedUpBall e slowDownBall mas aparece este erro quando faço isso:
…Brick.as, linha 1, coluna 1 5006: Um arquivo ActionScript não pode ter mais de uma definição externamente visível: Brick, speedUpBall
Brick.as (MEU CODIGO)
package {
import flash.display.;
import flash.events.;
//extende a classe para que ela possua as mesmas
//propriedades do MovieClip
public class Brick extends MovieClip {
//a timeline principal
private var _root:MovieClip;
public function Brick(){
//o codigo vai rodar quando um tijolo e adicionado na tela
addEventListener(Event.ADDED, beginClass);
addEventListener(Event.ENTER_FRAME, enterFrameEvents);
}
private function beginClass(event:Event):void{
_root = MovieClip(root);
//incrementa a quantidade de tijolos na tela
_root.brickAmt ++;
}
private function enterFrameEvents(event:Event):void{
//verifica se o jogador perdeu
if(_root.gameOver){
//destroi this brick
this.parent.removeChild(this);
//o codigo para de rodar
removeEventListener(Event.ENTER_FRAME, enterFrameEvents);
}
//teste de batida da bola
if(this.hitTestObject(_root.mcBall)){
//faz a bola bater verticalmente
_root.ballYSpeed *= -1;
//destroi this brick
this.parent.removeChild(this);
//o codigo para de rodar
removeEventListener(Event.ENTER_FRAME, enterFrameEvents);
//decrementa a quantidade de tijolos na tela
_root.brickAmt --;
//aumenta a pontuacao do jogador a cada tijolo quebrado
_root.score += 10;
}
}
}
}
Então pessoal, queria ter o código das funções pois não estou conseguindo pensar na logica e como sou leigo em java e actionscript ta difícil pra mim.
Outra duvida que tenho é como fazer as bolas extras aparecerem no palco quando a bola principal bate no tijolo que “esconde” essas bolas.