Bonjour tlm,
je suis debutant et je fait un petit jeux en javascript
Voila je rencontre un petit problème avec mon code.
je veux que Monperso puisse tirer des eclaire par en haut ,en bas, a gauche et a droite avec les fleches du clavier
voici le petit bout de code qui ne marche pas et plus bas je vais mettre le code complet

function tireEclaire(){
    var that = TireMagie;
    var positionFutureMagie = {
        PosX: that.PosX + that.vitesseX,
        PosY: that.PosY +that.vitesseY,
        width: that.width,
        height: that.height
    };
    if(collision(positionFutureMagie, Roche1) || collision(positionFutureMagie, Roche2) || collision(positionFutureMagie, Roche3))
        {
        TireMagie.vitesseX= TireMagie.PosX-TireMagie.vitesseX;
        TireMagie.vitesseY= TireMagie.PosX-TireMagie.vitesseY;
        }
    else
        {
        TireMagie.PosX=TireMagie.PosX+TireMagie.vitesseX;
        TireMagie.PosY=TireMagie.PosY+TireMagie.vitesseY;
        }
    limiteOrdi();
}

function tireMagie(direction)
{
    TireMagie.PosX=MonPerso.PosX;
    TireMagie.PosY=MonPerso.PosY;
    getEl("imgMagie").style.display="initial";

    if(tireMagie(0)==true)
        {
        TireMagie.PosY=TireMagie.PosY-TireMagie.VitesseY;
        }
    else if(TireMagie(1)==true)
        {
        TireMagie.PosY=TireMagie.PosY+TireMagie.VitesseY;
        }
    else if(TireMagie(2)==true)
        {
        TireMagie.PosX=TireMagie.PosX-TireMagie.VitesseX;
        }
    else (TireMagie(3)==true)
        {
            TireMagie.PosX=TireMagie.PosX+TireMagie.VitesseX;
        }
}

voila jespere que vous pourrez m'indiquer mon erreur et me guider sur la bonne voie

merci d'avance a tlm 

---------------------------------------------code complet----------------------------------------------------------------

var PointVie=100;
var PointVieOrdi=100;

function PositionRoche3(PosX,PosY)
{
    this.PosX = PosX;
    this.PosY = PosY;
    this.width=130;
    this.height=130;
}

function PositionRoche2(PosX,PosY)
{
    this.PosX = PosX;
    this.PosY = PosY;
    this.width=94;
    this.height=102;
}

function PositionRoche(PosX,PosY)
{
    this.PosX = PosX;
    this.PosY = PosY;
    this.width=130;
    this.height=130;
}

function PersoOrdi(PosX,PosY,Vitesse)
{
    this.PosX = PosX;
    this.PosY = PosY;
    this.Vitesse= Vitesse;
    this.vitesseX=-5;
    this.vitesseY=5;
    this.width=100;
    this.height=60;
}

function Perso(PosX,PosY,Vitesse)
{
    this.PosX = PosX;
    this.PosY = PosY;
    this.width=100;
    this.height=60;
    this.Vitesse= Vitesse;
}
function Magie(PosX,PosY,Vitesse)
{
    this.PosX = PosX;
    this.PosY = PosY;
    this.Vitesse= Vitesse;
}
/*function eclairMagie(PosX,PosY,Vitesse)
{
    this.PosX = PosX;
    this.PosY = PosY;
    this.VitesseX= VitesseX;
    this.VitesseY= VitesseY;
}*/

var MonPerso= new Perso(300,300,10);
var TireMagie=new Magie();
var MonPerso2= new PersoOrdi(840,800,15);
var Roche1= new PositionRoche(genererNbAle(250,500),genererNbAle(225,500));
var Roche2= new PositionRoche2(genererNbAle(220,500),genererNbAle(500,900));
var Roche3= new PositionRoche3(genererNbAle(220,870),genererNbAle(225,900));

function init(){

    setInterval(affichage,30);
    setInterval(deplacerOrdi,30);
    setInterval(changerDirection,2000);
    setInterval(tireEclaire,30);
}

function deplacerOrdi(){
    var that = MonPerso2;
    var positionFuture = {
        PosX: that.PosX + that.vitesseX,
        PosY: that.PosY +that.vitesseY,
        width: that.width,
        height: that.height
    };
    if(collision(positionFuture, Roche1) || collision(positionFuture, Roche2) || collision(positionFuture, Roche3)){

        MonPerso2.vitesseX= -MonPerso2.vitesseX;
        MonPerso2.vitesseY= -MonPerso2.vitesseY;
    }
    else{
        MonPerso2.PosX=MonPerso2.PosX+MonPerso2.vitesseX;
        MonPerso2.PosY=MonPerso2.PosY+MonPerso2.vitesseY;
    }
    limiteOrdi();
}

function changerDirection()
{
    MonPerso2.vitesseX= genererNbAle(-5,5);
    MonPerso2.vitesseY= genererNbAle(-5,5);
}

// utiliser cette fonction pour déplacer l'éclair
function tireEclaire(){
    var that = TireMagie;
    var positionFutureMagie = {
        PosX: that.PosX + that.vitesseX,
        PosY: that.PosY +that.vitesseY,
        width: that.width,
        height: that.height
    };
    if(collision(positionFutureMagie, Roche1) || collision(positionFutureMagie, Roche2) || collision(positionFutureMagie, Roche3)){

        TireMagie.vitesseX= TireMagie.PosX-TireMagie.vitesseX;
        TireMagie.vitesseY= TireMagie.PosX-TireMagie.vitesseY;
    }
    else{
        TireMagie.PosX=TireMagie.PosX+TireMagie.vitesseX;
        TireMagie.PosY=TireMagie.PosY+TireMagie.vitesseY;
    }
    limiteOrdi();
    affichage();
}

function tireMagie(direction)
{
    TireMagie.PosX=MonPerso.PosX;
    TireMagie.PosY=MonPerso.PosY;
    getEl("imgMagie").style.display="initial";

    if(tireMagie(0)==true)
    {
        TireMagie.PosY=TireMagie.PosY-TireMagie.VitesseY;
    }
    else if(TireMagie(1)==true)
    {
        TireMagie.PosY=TireMagie.PosY+TireMagie.VitesseY;
    }
    else if(TireMagie(2)==true)
    {
        TireMagie.PosX=TireMagie.PosX-TireMagie.VitesseX;
    }
    else (TireMagie(3)==true)
    {
        TireMagie.PosX=TireMagie.PosX+TireMagie.VitesseX;
    }

    affichage();
}

Perso.prototype.deplacerGauche = function() 
{
        var that = this;
        var positionFuture = {
        PosX: that.PosX - that.Vitesse,
        PosY: that.PosY,
        width: that.width,
        height: that.height
    };
    if(collision(positionFuture, Roche1) || collision(positionFuture, Roche2) || collision(positionFuture, Roche3)|| collision(positionFuture, MonPerso2)){

    }
    else{
        this.PosX=this.PosX-this.Vitesse;

        }
}
Perso.prototype.deplacerDroite = function() 
{
        var that = this;
        var positionFuture = {
        PosX: that.PosX + that.Vitesse,
        PosY: that.PosY,
        width: that.width,
        height: that.height
    };
    if(collision(positionFuture, Roche1) || collision(positionFuture, Roche2) || collision(positionFuture, Roche3)|| collision(positionFuture, MonPerso2)){

    }
    else{
        this.PosX=this.PosX+this.Vitesse;

        }
}
Perso.prototype.deplacerHaut = function() 
{
        var that = this;
        var positionFuture = {
        PosX: that.PosX,
        PosY: that.PosY - that.Vitesse,
        width: that.width,
        height: that.height
    };
    if(collision(positionFuture, Roche1) || collision(positionFuture, Roche2) || collision(positionFuture, Roche3)){

    }
    else{
        this.PosY=this.PosY-this.Vitesse;

        }
}
Perso.prototype.deplacerBas = function() 
{
        var that = this;
        var positionFuture = {
        PosX: that.PosX,
        PosY: that.PosY + that.Vitesse,
        width: that.width,
        height: that.height
    };
        if(collision(positionFuture, Roche1) || collision(positionFuture, Roche2) || collision(positionFuture, Roche3)|| collision(positionFuture, MonPerso2)){

        }
    else{
        this.PosY=this.PosY+this.Vitesse;

        }
}

function deplacer(Perso)
{
    var touche=window.event.keyCode;

    switch(touche)
    {
        case 37: tireMagie(0);
        break;
        case 39: tireMagie(1);
        break;
        case 38: tireMagie(2);
        break;
        case 40: tireMagie(3);
        break;
        case 65: MonPerso.deplacerGauche();
        break;
        case 68: MonPerso.deplacerDroite();
        break;
        case 87: MonPerso.deplacerHaut();
        break;
        case 83: MonPerso.deplacerBas();
        break;
        case 32: MonPerso.tireMagie();
    }

    limite();

}
function affichage()
{
    getEl("imgPers").style.left=MonPerso.PosX
    getEl("imgPers").style.top=MonPerso.PosY
    getEl("imgPers2").style.left=MonPerso2.PosX
    getEl("imgPers2").style.top=MonPerso2.PosY
    getEl("imgRoche1").style.left=Roche1.PosX
    getEl("imgRoche1").style.top=Roche1.PosY
    getEl("imgRoche2").style.left=Roche2.PosX
    getEl("imgRoche2").style.top=Roche2.PosY
    getEl("imgRoche3").style.left=Roche3.PosX
    getEl("imgRoche3").style.top=Roche3.PosY
    getEl("imgMagie").style.left=TireMagie.PosX
    getEl("imgMagie").style.top=TireMagie.PosY
}

function limite()
{
    if(MonPerso.PosX<270)
        {
        MonPerso.PosX=270;
        PointVie=PointVie-1/2;
        getEl("lbljoueur1").innerHTML =PointVie+" "+"Point de Vie";
        }
    if(MonPerso.PosX>930)
        {
        MonPerso.PosX=930;
        PointVie=PointVie-1/2;
        getEl("lbljoueur1").innerHTML =PointVie+" "+"Point de Vie";
        }
    if(MonPerso.PosY<145)
        {
        MonPerso.PosY=145;
        PointVie=PointVie-1/2;
        getEl("lbljoueur1").innerHTML =PointVie+" "+"Point de Vie";
        }
    if(MonPerso.PosY>840)
        {
        MonPerso.PosY=840;
        PointVie=PointVie-1/2;
        getEl("lbljoueur1").innerHTML =PointVie+" "+"Point de Vie";
        }

}

function limiteOrdi()
{
    if(MonPerso2.PosX<270)
        {
        MonPerso2.PosX=270;

        getEl("lbljoueur2").innerHTML =PointVieOrdi+" "+"Point de Vie";
        }
    if(MonPerso2.PosX>930)
        {
        MonPerso2.PosX=930;

        getEl("lbljoueur2").innerHTML =PointVieOrdi+" "+"Point de Vie";
        }
    if(MonPerso2.PosY<145)
        {
        MonPerso2.PosY=145;

        getEl("lbljoueur2").innerHTML =PointVieOrdi+" "+"Point de Vie";
        }
    if(MonPerso2.PosY>840)
        {
        MonPerso2.PosY=840;

        getEl("lbljoueur2").innerHTML =PointVieOrdi+" "+"Point de Vie";
        }

}
function collision(rectangle1, rectangle2)
{

    if ( rectangle2.PosX > rectangle1.PosX + rectangle1.width
         || rectangle2.PosX < rectangle1.PosX -rectangle2.width
         || rectangle2.PosY > rectangle1.PosY + rectangle1.height
         || rectangle2.PosY < rectangle1.PosY - rectangle2.height ) {

        return false;
        } 
        else {

        return true;
        }
}

function getEl( El )
{
    return document.getElementById( El );
}

function genererNbAle(Min,Max)
{
    var NbAle=Math.floor(Math.random()*(Max-Min+1)+Min);
    return NbAle;
}

2 réponses


malarock
Auteur

oups desoler cest la premiere fois je poste je comprend pas pk ca fait ca

Tu peux utiliser du markdown pour présenter ton code correctement sur ce forum. Pour la question, tu poste bcp de code et ce n'est pas forcément évident de comprendre exactement ce qui te pose problème. Essaie de simplifier / découper le prroblème si tu souhaite obtenir de l'aide.