Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#1 2015-05-27 18:27:25 Aide jeu Tower Defense

axel_rag
nouveau membre
Date d'inscription: 2015-05-27
Messages: 4

Aide jeu Tower Defense



Bonjour a tous, je suis nouveau sur ce forum et nouveau dans le milieu de la programmation big_smile

Pour mon projet d'ISN j'ai décidé de fair un tower defense mais je suis face a un probleme que je n'arrive pas a regler :
- lorsque plusieurs ennemis arrivent dans la zone d'action de la tour, la flamme commence a faire n'importe quoi, et cela s'empire quand on pose de nouvelles tours

Voici mon code (il y a certaines fonctions qui ne servent a rien elles sont:
dues aux diverses modifications du code et j'ai publié d'en enlever certaines.. )

PImage route, panda, tour, rouge, fire, end; //chargement des images
int x, n;
int xi;
int yi;
int i;
int v=40;
int p = 100;
int poser;
int enemi=1;
int chrono=millis();
int chrono2=millis();
int t ,t2;
int y;
int vch;
int ifirex=0;
int ifirey=0;
int j,k;
boolean pan,toura, bas, droite, haut;// bail qui bouge

String message;

Table tablex;
Table tabley;
Table Tpanda;
Table tablefeu;

void setup ()
{
  route = loadImage("route.PNG");
  panda = loadImage("pandapirated.png");
  panda2 = loadImage("pandapirateg.png");
  tour = loadImage("Tour2.0.png");
  rouge= loadImage("carre_rouge.png");
  fire= loadImage("fire.png");
  end= loadImage("gameover.jpg");
 
size(route.width, route.height);// on adapte la taille de la carte à celle de l'écran
pan = true;
x = 248;
y= -100;
xi = mouseX;
yi = mouseY;
v=40;

tablex = new Table();
tablex.addColumn("lesx",Table.INT);
tablex.addRow();


tabley = new Table();
tabley.addColumn("lesy",Table.INT);
tabley.addRow();

tablefeu = new Table();
tablefeu.addColumn("x",Table.INT);
tablefeu.addColumn("y",Table.INT);
tablefeu.addColumn("xattaque",Table.INT);
tablefeu.addColumn("yattaque",Table.INT);
tablefeu.addRow();

Tpanda = new Table();
Tpanda.addColumn("vie",Table.INT);
Tpanda.addColumn("x",Table.INT);
Tpanda.addColumn("y",Table.INT);
Tpanda.addRow();
Tpanda.addRow();
Tpanda.setInt(1, "x",248);
Tpanda.setInt(1,"y",-100);
Tpanda.setInt(1,"vie",v);


}


void draw()


{
  image(route, 0,0);//image route indication placement
  noFill();
  message =" points =" + p;
  text(message, 550, 600);   
 
  tour.resize (50, 50);
  panda.resize (50, 50);
  panda2.resize(50, 50);
  rouge.resize (50, 50);// taille
  fire.resize(20,20);
  end.resize(800,800);
 
 
  textSize(35);
 
                                                                      //CHRONOMETRE
                                                                      if(millis()-chrono>=10)
                                                                      {
                                                                        t++;
                                                                      chrono=millis();
                                                                     
                                                                      }
                                                                      if (millis()>500)
                                                                      {n++;
                                                                      }
                                                                      if (n==80)
                                                                      {n=0;}
 
    for(int iii=1; iii<= enemi; iii++)
        {
          //Dessin
                           
         //mouvement
                               //bas
                                 if((Tpanda.getInt(iii,"x") < 472) && (Tpanda.getInt(iii,"y") < 470))
                              {
                                Tpanda.setInt(iii,"y",Tpanda.getInt(iii,"y")+1);
                                  if(n<=40)
                                  {
                                     image(panda,Tpanda.getInt(iii,"x") , Tpanda.getInt(iii,"y"));
                                  }
                                  else
                                  {
                                    image(panda2,Tpanda.getInt(iii,"x") , Tpanda.getInt(iii,"y"));
                                  }
                              }
                              //droite
                              if((Tpanda.getInt(iii,"x") <472) && (Tpanda.getInt(iii,"y") == 470))
                              {
                                Tpanda.setInt(iii,"x",Tpanda.getInt(iii,"x")+1);
                                if(n<=40)
                                  {
                                     image(panda,Tpanda.getInt(iii,"x") , Tpanda.getInt(iii,"y"));
                                  }
                                  else
                                  {
                                    image(panda2,Tpanda.getInt(iii,"x") , Tpanda.getInt(iii,"y"));
                                  }
                              }
                              //haut
                              if ((Tpanda.getInt(iii,"x") ==472 ) )
                              {
                                Tpanda.setInt(iii,"y",Tpanda.getInt(iii,"y")-1);
                                if(n<=40)
                                  {
                                     image(panda,Tpanda.getInt(iii,"x") , Tpanda.getInt(iii,"y"));
                                  }
                                  else
                                  {
                                    image(panda2,Tpanda.getInt(iii,"x") , Tpanda.getInt(iii,"y"));
                                  }
                           if ((Tpanda.getInt(iii,"x") == 472) && (Tpanda.getInt(iii,"y") == 0))
                            {
                            noLoop();
                            pan=false;
                         
                            image(end, 0, 0);
                            tint(51, 0);
                           
                            } 
           
        }
                                                        //Trajetfeu
                                                                             
                                                             for(int ii = 1;ii<=poser;ii++)
                                                           
                                                             
                                                      {
                                                        if (sqrt(sq(tablex.getInt(ii,"lesx")-Tpanda.getInt(iii-1,"x"))+sq(tabley.getInt(ii,"lesy")-Tpanda.getInt(iii-1,"y")))<=125)
                                                        {
                                                          continue;}
                                                        if (sqrt(sq(tablex.getInt(ii,"lesx")-Tpanda.getInt(iii,"x"))+sq(tabley.getInt(ii,"lesy")-Tpanda.getInt(iii,"y")))<=125)
                                                        {
                                                         
                                                         
                                                          {
                                                                if( Tpanda.getInt(iii,"x")+15>tablefeu.getInt(ii,"x") && Tpanda.getInt(iii,"y")+15>tablefeu.getInt(ii,"y"))
                                                            {
                                                               tablefeu.setInt(ii,"x",tablefeu.getInt(ii,"x")+1);
                                                               tablefeu.setInt(ii,"y",tablefeu.getInt(ii,"y")+1);
                                                                image(fire,tablefeu.getInt(ii,"x"),tablefeu.getInt(ii,"y"));
                                                            }
                                            //bas gauche
                                                        if( Tpanda.getInt(iii,"x")+15<tablefeu.getInt(ii,"x") && Tpanda.getInt(iii,"y")+15>tablefeu.getInt(ii,"y"))
                                                            {
                                                               tablefeu.setInt(ii,"x",tablefeu.getInt(ii,"x")-1);
                                                               tablefeu.setInt(ii,"y",tablefeu.getInt(ii,"y")+1);
                                                                image(fire,tablefeu.getInt(ii,"x"),tablefeu.getInt(ii,"y"));
                                                            }
                                           //haut droit
                                                            if( Tpanda.getInt(iii,"x")+15>tablefeu.getInt(ii,"x") && Tpanda.getInt(iii,"y")+15<tablefeu.getInt(ii,"y"))
                                                            {
                                                               
                                                               tablefeu.setInt(ii,"x",tablefeu.getInt(ii,"x")+1);
                                                               tablefeu.setInt(ii,"y",tablefeu.getInt(ii,"y")-1);
                                                                image(fire,tablefeu.getInt(ii,"x"),tablefeu.getInt(ii,"y"));
                                                            }
                                         //haut gauche
                                                            if( Tpanda.getInt(iii,"x")+15<tablefeu.getInt(ii,"x") && Tpanda.getInt(iii,"y")+15<tablefeu.getInt(ii,"y"))
                                                            {
                                                               tablefeu.setInt(ii,"x",tablefeu.getInt(ii,"x")-1);
                                                               tablefeu.setInt(ii,"y",tablefeu.getInt(ii,"y")-1);
                                                                image(fire,tablefeu.getInt(ii,"x"),tablefeu.getInt(ii,"y"));
                                                            }
                                          //bas
                                                            if( Tpanda.getInt(iii,"x")+15==tablefeu.getInt(ii,"x") && Tpanda.getInt(iii,"y")+15>tablefeu.getInt(ii,"y"))
                                                            {                                                           
                                                                tablefeu.setInt(ii,"y",tablefeu.getInt(ii,"y")-1);
                                                                image(fire,tablefeu.getInt(ii,"x"),tablefeu.getInt(ii,"y"));
                                                            }
                                              //gauche
                                                        if( Tpanda.getInt(iii,"x")+15<tablefeu.getInt(ii,"x") && Tpanda.getInt(iii,"y")+15==tablefeu.getInt(ii,"y"))
                                                            {
                                                                tablefeu.setInt(ii,"x",tablefeu.getInt(ii,"x")-1);;
                                                                image(fire,tablefeu.getInt(ii,"x"),tablefeu.getInt(ii,"y"));
                                                            }
                                                            //droit
                                                            if( Tpanda.getInt(iii,"x")+15>tablefeu.getInt(ii,"x") && Tpanda.getInt(iii,"y")+15==tablefeu.getInt(ii,"y"))
                                                            {
                                                                tablefeu.setInt(ii,"x",tablefeu.getInt(ii,"x")+1);
                                                                image(fire,tablefeu.getInt(ii,"x"),tablefeu.getInt(ii,"y"));
                                                            }
                                                            //haut
                                                            if( Tpanda.getInt(iii,"x")+15==tablefeu.getInt(ii,"x") && Tpanda.getInt(iii,"y")+15<tablefeu.getInt(ii,"y"))
                                                            {
                                                                tablefeu.setInt(ii,"y",tablefeu.getInt(ii,"y")-1);
                                                                image(fire,tablefeu.getInt(ii,"x"),tablefeu.getInt(ii,"y"));
                                                            }
                                                      if(tablefeu.getInt(ii,"x")==Tpanda.getInt(iii,"x")+15 && tablefeu.getInt(ii,"y")==Tpanda.getInt(iii,"y")+15)
                                                      {
                                                       
                                                        tablefeu.setInt(ii,"x",tablex.getInt(ii,"lesx")+15);
                                                        tablefeu.setInt(ii,"y",tabley.getInt(ii,"lesy")+15);
                                                         
                                                                   
                                                          Tpanda.setInt(iii,"vie",Tpanda.getInt(iii,"vie")-50);
                                                      }
                                                     
                                                        }
                                                         
                                                       
                                                           
                                                                         
                                                   if(Tpanda.getInt(iii,"vie")<=0)
                                                          { Tpanda.setInt(iii,"x",480);
                                                          Tpanda.setInt(iii,"vie",890);
                                                          p=p+20;
                                                          tablefeu.setInt(ii,"x",tablex.getInt(ii,"lesx")+15);
                                                        tablefeu.setInt(ii,"y",tabley.getInt(ii,"lesy")+15);
                                                         
                                                        }
                                                       
//                                               
                                                        }
                                                          }
                                                   
        }
                                                       
                                                     
       
    //gere les differentes tours
                                                                    for(int i = 1;i <= poser;i++)
                                                                      {       
                                                                        image(tour,tablex.getInt(i,"lesx"),tabley.getInt(i,"lesy"));
                                                                      }
                                                                   
      //indication pour poser les tours
                                                                  if (mousePressed == true)
                                                                    {
                                                                      image(tour, mouseX-25, mouseY-25);
                                                                      ellipse(mouseX, mouseY, 250, 250); //rayon d'action
                                                                      xi= mouseX;
                                                                      yi=mouseY;
                                                                      tint(255, 126);
                                                                     zoneinterdite();
                                                                      noTint();
                                                                    }
           
           
           
         
         

 
          if(t==450 || t==600 || t==700 || t==650 || t==800 ||t==1450 || t==1600 || t==1700 || t==1650 || t==1800)
          {
            enemi++;
            Tpanda.addRow();
            Tpanda.setInt(enemi, "x",248);
            Tpanda.setInt(enemi,"y",-100);
            v=v+v;
            Tpanda.setInt(enemi,"vie",v);
           
          }

 
       
}

void mouseClicked()
    {
      if (p >= 50) {
        poser++;
            tablex.addRow();
            tablex.setInt(poser, "lesx",xi-25);
            tabley.addRow();
            tabley.setInt(poser,"lesy",yi-25);
            p=p-50;
            tablefeu.addRow();
            tablefeu.setInt(poser,"x",tablex.getInt(poser,"lesx")+15);
            tablefeu.setInt(poser,"y",tabley.getInt(poser,"lesy")+15);
      }
    }


void zoneinterdite()
      {
         image(rouge, 248, 0);
                  image(rouge, 248, 50);
                  image(rouge, 248, 100);
                  image(rouge, 248, 150);
                  image(rouge, 248, 200);
                  image(rouge, 248, 250);
                  image(rouge, 248, 300);
                  image(rouge, 248, 350);
                  image(rouge, 248, 400);
                  image(rouge, 248, 450);
                  image(rouge, 248, 500);
                    image(rouge, 298, 500);
                    image(rouge, 348, 500);
                    image(rouge, 298, 450);
                    image(rouge, 348, 450);
                    image(rouge, 398, 500);
                    image(rouge, 448, 500);
                    image(rouge, 398, 450);
                    image(rouge, 448, 450);
                   rouge.resize (22, 50);
                    image(rouge, 498, 450);
                    image(rouge, 498, 500);
                  rouge.resize (50, 50);
                  image(rouge, 470, 400);
                  image(rouge, 470, 350);
                  image(rouge, 470, 300);
                  image(rouge, 470, 250);
                  image(rouge, 470, 200);
                  image(rouge, 470, 150);
                  image(rouge, 470, 100);
                  image(rouge, 470, 50);
      }

Merci d'avance pour votre aide ! en esperant que quelqu'un trouve une solution smile

Dernière modification par axel_rag (2015-05-27 19:31:59)

Hors ligne

 

#2 2015-05-27 19:11:28 Re : Aide jeu Tower Defense

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 802

Re: Aide jeu Tower Defense



Bonsoir,
Avant de pouvoir t'aider, il nous faut tes images. Créer un zip du répertoire de ton projet pour que nous ayons tous les éléments.

Hors ligne

 

#3 2015-05-27 19:32:49 Re : Aide jeu Tower Defense

axel_rag
nouveau membre
Date d'inscription: 2015-05-27
Messages: 4

Re: Aide jeu Tower Defense



Il me semblait l'avoir fait mais cela n'a pas été pris en compte, problème réglé !

Hors ligne

 

#4 2015-05-27 23:00:59 Re : Aide jeu Tower Defense

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 802

Re: Aide jeu Tower Defense



Je ne sais pas s'il y avait des contraintes dans votre sujet, mais à première vue, tu utilises des classes peu adaptées à ce que tu veux faire.
Je ne pense pas que l'utilisation de la classe Table soit opportune.
Tu stockes les positions des différents éléments dans celles-ci.
Il eut été préférable car beaucoup lisible, de créer des classes pour chaque éléments.
Et pour gérer ces classes introduire des Arraylist pour pouvoir aisément ajouter et rétirer des éléments de ces listes.
N'étant pas imprégné par ton programme, je ne peux guère t'aider.

Avez-vous abordé en cours la notion de classe et sais-tu comment les construire ?

Bon courage

Hors ligne

 

#5 2015-05-27 23:04:38 Re : Aide jeu Tower Defense

axel_rag
nouveau membre
Date d'inscription: 2015-05-27
Messages: 4

Re: Aide jeu Tower Defense



l'utilisation des tables m'a été recommandé par mon professeur, nous n'avons pas eu de réel cours de programmation, on était censé se renseigner sur le net...
j'ai entendu parler de la notion de classes mais je ne sais pas comment l'utiliser...

Hors ligne

 

#6 2015-05-27 23:29:31 Re : Aide jeu Tower Defense

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 802

Re: Aide jeu Tower Defense



Regarde ce que je suis en train de faire…

Hors ligne

 

#7 2015-05-27 23:37:45 Re : Aide jeu Tower Defense

axel_rag
nouveau membre
Date d'inscription: 2015-05-27
Messages: 4

Re: Aide jeu Tower Defense



Je pense saisir a peux pres le principe, cependant cela demande de reconstruire une bonne partie du code.
Merci pour votre aide, je vais pouvoir me servir de ca pour coder quelque chose de vraiment fonctionnel ! smile

Bonne soirée

Hors ligne

 

#8 2015-05-28 00:52:47 Re : Aide jeu Tower Defense

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 802

Re: Aide jeu Tower Defense



Voilà pour t'avancer un peu.
Il faudrait pour plus de faciliter avoir déjà les images à la bonne taille.

Si tu as des questions, n'hésite pas.
Bon courage.

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2025