µLua DS - Forum officiel | Official forum Index du Forum

µLua DS - Forum officiel | Official forum
Le bon endroit pour en savoir plus sur MicroLua et pour parler de vos projets ! | The right place to learn more about MicroLua and talk about your projects !

 FAQFAQ   RechercherRechercher   MembresMembres   GroupesGroupes   S’enregistrerS’enregistrer   ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

aide pour creation d'objet

 
Poster un nouveau sujet   Répondre au sujet    µLua DS - Forum officiel | Official forum Index du Forum -> Section française -> Demande d'aide
Sujet précédent :: Sujet suivant  
Auteur Message
bzh0


Hors ligne

Inscrit le: 16 Juil 2012
Messages: 47

MessagePosté le: Lun 16 Juil 2012 - 15:31    Sujet du message: aide pour creation d'objet Répondre en citant

Bonjour.
Je suis débutant en microlua et j'ai commencé par créer des petits programmes basiques, pour m'exercer.
Le principe de celui que je suis en train de créer est simple: l'utilisateur déplace un personnage sur l'écran supérieur avec les         flèche et tir des boules de feu avec A,B,X et Y sur des ennemis qui apparaissent.
Pour gerer les tir, j'ai décider de faire comme cela:

On regarde toute les cases du tableau avec un pas de 4
si tir=1, alors enregistrer dans une case libre du tableau les positions du joueur à cet instant ainsi que la direction du tir, puis mettre tir à 0 et indiquez que cet emplacement est pris.
fin
Si la case est remplie, changer les coordonnées du  tir en fonction de sa direction, puis dessiner le tir.

Le problème, c'est que mon programme lague énormément, même avec seulement une dizaine de case dans le tableau.
Est ce moi qui m'y prend mal ou c'est trop en demander pour microlua?
Merci d'avance pour votre aide.
_________________
while not humeur.pas_content ("bzh0") do

face ("bzh0"):smile()
render ()

end


Revenir en haut
Publicité






MessagePosté le: Lun 16 Juil 2012 - 15:31    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
Fantasix
Modérateur

Hors ligne

Inscrit le: 26 Avr 2010
Messages: 1 317
Localisation: SCREEN_UP, en -1, -1

MessagePosté le: Lun 16 Juil 2012 - 16:25    Sujet du message: aide pour creation d'objet Répondre en citant

Salut !

Le mieux pour que l'on puisse comprendre, c'est que l'on vois le code je pense Smile

J'dois avouer ne pas avoir tout compris.

Fanta'
_________________


BMA News :

Création du Homebrew Storage en cours ...


Revenir en haut
Visiter le site web du posteur
bzh0


Hors ligne

Inscrit le: 16 Juil 2012
Messages: 47

MessagePosté le: Lun 16 Juil 2012 - 17:12    Sujet du message: aide pour creation d'objet Répondre en citant

J'ai eu une erreur de sauvegarde et mon code a été effacé, mais je vais poster ça rapidement.
_________________
while not humeur.pas_content ("bzh0") do

face ("bzh0"):smile()
render ()

end


Revenir en haut
bzh0


Hors ligne

Inscrit le: 16 Juil 2012
Messages: 47

MessagePosté le: Lun 16 Juil 2012 - 17:33    Sujet du message: aide pour creation d'objet Répondre en citant

Voilà, j'espère que ce sera plus clair:

---je n'indique pas tout le code--
--initialisation--
l={{0,0,0,0,0,0,0,0,0,0}}
tir_image=Image.load("tir.png",VRAM)
--appuyer sur une touche pour tirer--
tir=0
if Keys.newPress.A then
    tir=1
    dir=2 --droite--
end
if Keys.newPress.B then
    tir=1
    dir=3 --bas--
end
if Keys.newPress.X then
    tir=1
    dir=1 --haut--
end
if Keys.newPress.Y then
    tir=1
    dir=4 --gauche
end
--gérer les objets--
i=0
while i<11 do
 i=1+4
 --créer un objet si tir=1 et que l'emplacement est libre--
 if l[1][i]=0 then
  if tir==1 then
   tir=0
   l[1][i]=1--création de l'objet  --
   l[1][i+1]=PersoX
   l[1][i+2]=Persoy--coordonnées de l'objet--
   l[1][i+3]=dir--pour savoir vers où il vas--
  end
 end
 --deplacer les objets déjà créés--
  if l[1][i]=1 then
   if l[1][i+3]=1 then --si la direction est haut--
    l[1][i+2]=l[1][i+2]-4 --on modifie la coordonnée Y--
   end
   if l[1][i+3]=3 then --si la direction est bas--
    l[1][i+2]=l[1][i+2]+4 --on modifie la coordonnée Y--
   end
   if l[1][i+3]=2 then --si la direction est droite--
    l[1][i+1]=l[1][i+1]+4 --on modifie la coordonnée X--
   end
   if l[1][i+3]=4 then --si la direction est gauche--
    l[1][i+1]=l[1][i+1]-4 --on modifie la coordonnée X-
   end
  end
 x=l[1][i+1]
 y=l[1][i+2]
 screen.blit(SCREEN_UP,x,y,image_tir)--on affiche le tir--
end
--tout ça est placé dans la boucle principale--
_________________
while not humeur.pas_content ("bzh0") do

face ("bzh0"):smile()
render ()

end


Revenir en haut
thermo_nono
Modérateur

Hors ligne

Inscrit le: 31 Déc 2008
Messages: 2 415
Localisation: La Géhenne

MessagePosté le: Lun 16 Juil 2012 - 19:06    Sujet du message: aide pour creation d'objet Répondre en citant

quand tu as des séries de test ou tout ne peux pas se dérouler en même temps, utilise des "elseif" (ici on ne veux pas faire haut et bas en même temps et on ne veux pas non plus faire droite et gauche en même temps) : 

 
Code:
 --deplacer les objets déjà créés--
  if l[1][i]=1 then
   if l[1][i+3]=1 then --si la direction est haut--
    l[1][i+2]=l[1][i+2]-4 --on modifie la coordonnée Y--
   elseif l[1][i+3]=3 then --si la direction est bas--
    l[1][i+2]=l[1][i+2]+4 --on modifie la coordonnée Y--
   end
   if l[1][i+3]=2 then --si la direction est droite--
    l[1][i+1]=l[1][i+1]+4 --on modifie la coordonnée X--
   elseif l[1][i+3]=4 then --si la direction est gauche--
    l[1][i+1]=l[1][i+1]-4 --on modifie la coordonnée X-
   end
  end 

je pense que tu aurais aussi pu encapsuler tous les keypress dans un gros if keypress :



 
Code:
if Keys.newPress then
  tir=1
  if Keys.newPress.B then
    dir=3 --bas--
  elseif Keys.newPress.X then
    dir=1 --haut--
  end
  if Keys.newPress.Y then
    dir=4 --gauche
  elseif Keys.newPress.A then
    dir=2 --droite--
  end
end
 

_________________
“Qui reçoit une idée de moi reçoit de la connaissance sans diminuer la mienne, comme celui qui allume sa chandelle à la mienne reçoit la lumière sans me plonger dans l’obscurité.” - Thomas Jefferson


Revenir en haut
Visiter le site web du posteur MSN
Fantasix
Modérateur

Hors ligne

Inscrit le: 26 Avr 2010
Messages: 1 317
Localisation: SCREEN_UP, en -1, -1

MessagePosté le: Lun 16 Juil 2012 - 19:48    Sujet du message: aide pour creation d'objet Répondre en citant

Code:
---je n'indique pas tout le code--

Le truc, c'est qu'il nous faudrait tout le code !

Parce que rien que là, si ton code est actuellement tel quel dans ton script, j'ai bien peur que les ralentissements surviennent à cause d'une simple ligne :

Code:
tir_image=Image.load("tir.png",VRAM)

En gros, tu charges à chaque fois l'image, ce qui ne sert à rien, si ce n'est qu'à manger la VRAM et faire ralentir la DS :s

Fanta'
_________________


BMA News :

Création du Homebrew Storage en cours ...


Revenir en haut
Visiter le site web du posteur
bzh0


Hors ligne

Inscrit le: 16 Juil 2012
Messages: 47

MessagePosté le: Mer 18 Juil 2012 - 15:44    Sujet du message: aide pour creation d'objet Répondre en citant

Merci beaucoup de l'aide.
En effet, tout mettre sous des elseif fait qu'il ne ram plus.
Merci encore!
_________________
while not humeur.pas_content ("bzh0") do

face ("bzh0"):smile()
render ()

end


Revenir en haut
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 10:27    Sujet du message: aide pour creation d'objet

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    µLua DS - Forum officiel | Official forum Index du Forum -> Section française -> Demande d'aide Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  

Index | Creer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com