µ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 

Mon programme plante ?!

 
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
Sharkou


Hors ligne

Inscrit le: 22 Fév 2012
Messages: 84
Localisation: Bretagne

MessagePosté le: Sam 25 Fév 2012 - 22:22    Sujet du message: Mon programme plante ?! Répondre en citant

Bonsoir,

J'ai un petit souci avec mon programme, il plante à partir d'un moment :/
Voici le code :

 
Code:

 while true do
    
    Controls.read()

    screen.centerPrint(SCREEN_UP, 6, "Texte", Color.new(31, 0, 0))
    screen.centerPrint(SCREEN_UP, 176, "Par Sharkou", Color.new(31, 0, 0))

    if Keys.newPress.Down then
    selection = selection + 1
    elseif Keys.newPress.Up then
    selection = selection - 1
    end

    if selection == 4 then selection = 1
    elseif selection == 0 then selection = 3 end

    if selection == 1 then screen.centerPrint(SCREEN_UP, 60, "Nouvelle partie", Color.new(31, 31, 31))
    else screen.centerPrint(SCREEN_UP, 60, "Nouvelle partie", Color.new(15, 15, 15)) end

    if selection == 2 then screen.centerPrint(SCREEN_UP, 80, "Charger une partie", Color.new(31, 31, 31))
    else screen.centerPrint(SCREEN_UP, 80, "Charger une partie", Color.new(15, 15, 15)) end

    if selection == 3 then screen.centerPrint(SCREEN_UP, 100, "Options", Color.new(31, 31, 31))
    else screen.centerPrint(SCREEN_UP, 100, "Options", Color.new(15, 15, 15)) end
    
    if selection == 1 and Keys.held.A then
        while not Keys.newPress.A do
            --
        end
    
    elseif selection == 2 and Keys.held.A then
        while not Keys.newPress.A do
            --
        end

    elseif selection == 3 and Keys.held.A then
        while not Keys.newPress.A do
            screen.drawFillRect(SCREEN_UP, 0, 10, 256, 170, Color.new(0, 0, 0))
            screen.centerPrint(SCREEN_UP, 80, "Pas d'options disponibles pour le moment", Color.new(15, 15, 15))
            screen.centerPrint(SCREEN_UP, 100, "Retour", Color.new(31, 31, 31))
        end
    end
    
    render()
    
end

C'est le menu, la sélection fonctionne bien (quand j'appuie sur Haut et Bas la couleur du texte sélectionné devient blanc) mais dès que j'appuie sur A (quand je suis sur le menu "Options" par exemple), le programme plante alors qu'il devrait effacer la moitié de l'écran et afficher "Pas d'options disponibles pour le moment" et "Retour". :/
Ça fait plus d'une heure que je suis sur le menu mais impossible de trouver d'où vient le problème Surprised

Merci d'avance. Smile


Revenir en haut
Publicité






MessagePosté le: Sam 25 Fév 2012 - 22:22    Sujet du message: Publicité

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

Hors ligne

Inscrit le: 10 Mai 2009
Messages: 693
Localisation: Vittel (88)

MessagePosté le: Sam 25 Fév 2012 - 23:59    Sujet du message: Mon programme plante ?! Répondre en citant

essais de mettre controls.read() et render () dans tes boucle while
_________________
La page de mes projets
L'ancienne page de mes projets


Revenir en haut
Fantasix
Modérateur

Hors ligne

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

MessagePosté le: Dim 26 Fév 2012 - 00:16    Sujet du message: Mon programme plante ?! Répondre en citant

Sharkou, c'est exactement le même problème que ce que tu avais avec ta fonction de transition (avec les setAlpha).

Une boucle while t'isole du reste du programme, et donc les fonctions de rendering de l'écran et de listener sur les boutons n'ont pas d'effet si tu ne les met pas dedans.

Fanta'
_________________


BMA News :

Création du Homebrew Storage en cours ...


Revenir en haut
Visiter le site web du posteur
Reylak
Administrateur

Hors ligne

Inscrit le: 24 Nov 2008
Messages: 2 838
Localisation: Toulouse

MessagePosté le: Dim 26 Fév 2012 - 00:30    Sujet du message: Mon programme plante ?! Répondre en citant

Tu fais un peu ce que je faisais au tout début : faire des boucles dans la boucle, comme pour mettre en pause le programme. Et en effet, il faut transposer dans ces boucles les fonctions Controls.read() et render(), sans quoi tes contrôles ne seront jamais mis à jour et tu ne pourras pas en sortir, et rien ne sera jamais affiché.

J'ai compris plus tard que ça ne servait en fait à rien de faire ce genre de boucles, il suffit de faire les bonnes conditions dans la boucle principale Wink (enfin, je suppose que ça peut-être utile, mais c'est souvent peu pratique).
_________________


Plein d'infos sur le SourceForge !


Revenir en haut
Visiter le site web du posteur MSN Skype
Sharkou


Hors ligne

Inscrit le: 22 Fév 2012
Messages: 84
Localisation: Bretagne

MessagePosté le: Dim 26 Fév 2012 - 01:14    Sujet du message: Mon programme plante ?! Répondre en citant

Merci beaucoup j'ai compris maintenant (:

Par contre dans cette boucle :

 
Code:

 elseif selection == 3 and Keys.held.A then
        while not Keys.newPress.A do
            screen.drawFillRect(SCREEN_UP, 0, 10, 256, 170, Color.new(0, 0, 0))
            screen.centerPrint(SCREEN_UP, 80, "Pas d'options disponibles pour le moment", Color.new(15, 15, 15))
            screen.centerPrint(SCREEN_UP, 100, "Retour", Color.new(31, 31, 31))
        end
    end

Quand je retape sur A pour revenir au menu, je reviens presque directement dans les options à cause du Keys.held.A :/
Je suis obligé d'appuyer une fois et de relâcher très rapidement A pour rester sur le menu..
J'ai essayé en remplaçant held par newPress mais ça marche pas quand j'appuie sur A.

 
Citation:

 J'ai compris plus tard que ça ne servait en fait à rien de faire ce genre de boucles, il suffit de faire les bonnes conditions


J'ai essayé de suivre ton conseil mais si je laisse que la condition, le menu des options s'affiche puis disparaît juste après :/
Vous avez des idées ?
Merci Smile


Revenir en haut
Fantasix
Modérateur

Hors ligne

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

MessagePosté le: Dim 26 Fév 2012 - 01:30    Sujet du message: Mon programme plante ?! Répondre en citant

Mais mais mais ... Quelle est cette horreur ? xD

Code:
if Keys.newPress.A then
   choix = selection
end
   
if choix == 1 then
   
elseif ...
   
end

Et oublie pas d'initialiser la variable choix.

Fanta'
_________________


BMA News :

Création du Homebrew Storage en cours ...


Revenir en haut
Visiter le site web du posteur
Sharkou


Hors ligne

Inscrit le: 22 Fév 2012
Messages: 84
Localisation: Bretagne

MessagePosté le: Dim 26 Fév 2012 - 01:50    Sujet du message: Mon programme plante ?! Répondre en citant

Merci ça marche nickel Mr. Green
Par contre pourquoi on est obligé de passer par une deuxième variable ?


Revenir en haut
Fantasix
Modérateur

Hors ligne

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

MessagePosté le: Dim 26 Fév 2012 - 02:20    Sujet du message: Mon programme plante ?! Répondre en citant

Pour faire plus propre ?

selection change à chaque fois que tu bouge le curseur, alors que choix change uniquement lorsque tu clique avec le bouton A.

N'hésite pas à utiliser des variables pour te simplifier la vie.

Ca rend aussi le code plus lisible, mais attention, il ne faut pas non plus abuser du nombre de variables ! Les tableaux sont souvent mieux que 1000 variables.

Fanta'
_________________


BMA News :

Création du Homebrew Storage en cours ...


Revenir en haut
Visiter le site web du posteur
Sharkou


Hors ligne

Inscrit le: 22 Fév 2012
Messages: 84
Localisation: Bretagne

MessagePosté le: Dim 26 Fév 2012 - 02:33    Sujet du message: Mon programme plante ?! Répondre en citant

Ok merci pour le conseil (:

Revenir en haut
spectrenoir06


Hors ligne

Inscrit le: 13 Jan 2012
Messages: 184
Localisation: Paris

MessagePosté le: Dim 26 Fév 2012 - 19:01    Sujet du message: Mon programme plante ?! Répondre en citant

pour utiliser un tableau comme un variable tu fait:
 
Code:
 menu = {
selection=.....
choix=....
}


apres tu fait menu.selection ou menu.choix pour accéder au variable  Okay


Revenir en haut
Visiter le site web du posteur
Sharkou


Hors ligne

Inscrit le: 22 Fév 2012
Messages: 84
Localisation: Bretagne

MessagePosté le: Dim 26 Fév 2012 - 20:39    Sujet du message: Mon programme plante ?! Répondre en citant

Ok merci Wink

Revenir en haut
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 03:17    Sujet du message: Mon programme plante ?!

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