Communauté

LUA / LOVE2D - Comm...
 
Notifications
Retirer tout

LUA / LOVE2D - Comment réaliser un menu classique ?

5 Posts
2 Utilisateurs
0 Likes
54 Vu
0
Début du sujet

Bonjour,

Je cherche à créer un menu comme on en a en haut d'une fenêtre, du genre "fichier - édition - etc. - à propos".

Avec la gestion de fichiers, donc ouverture des popups ouvrir ou sauvegarder un fichier...

Pour le contexte, j'ai réalisé le parcours "Programmer une Dungeon Crawler Old School", durant lequel j'ai largement enrichi le concept de base, avec tout un tas de fonctionnalités (calcul d'affichage, de distance, d'éclairage, etc...). De fait, je compte produire un dungeon crawler avec monogame (ou autre), mais rester sur LUA, pour l'éditeur complet de niveau.

Et pas uniquement pour le chargement ou la sauvegarde des cartes, j'ai besoin de charger des sets de textures également.

Je vous l'ai dit, j'ai enrichi le bousin. Mais la version final du jeu utilisera des textures, pas des polygones (ce qui est bien plus simple, au final). D'ailleurs, je me demande si je vais pas tenter de pondre une version Amiga 🙂

5 Réponses
0

@buissonolivier  bonjour  a toi. Je ne sais pas si tu as trouve une solution pour ton editeur. 

Juste une petite idee : je decouperai l'ecran en 2 le haut pour le menu "Fichier Edition..." pour les options des menus j'utiliserai un canvas qui contiendrai l'ensemble des options de chaque menu. Et un canvas pour l'editeur. il me semble que c'est canvas en lua apres je ne sais pas pour d'autre language.

peut-etre que d'autre personnes te proposeront d'autre solution

bonne journee a toi et bon code

0

@buissonolivier voici un exemple apres a toi de completer le code pour repondre a tes besoins

local canvasEditor
local canvasMenu
local isFile=false
locat isEdit=false
local posCanvasMenuX=0
function love.load()
    canvasEditor=love.graphics.newCanvas(800,600)
    canvasMenu=love.graphics.newCanvas(60,100)
    love.graphics.setCanvas(canvasMenu)
    love.graphics.setColor(1,1,1)
    love.graphics.rectangle("fill",0,14,100,100)
    love.graphics.setCanvas()
    love.graphics.setCanvas(canvasEditor)
    love.graphics.setColor(0.2,1,1)
    love.graphics.rectangle("fill",0,0,800,550)
    love.graphics.setCanvas()
end
function love.update(dt)
end
function love.draw()
    love.graphics.setColor(1,1,1)
    love.graphics.print("Fichier",0,0)
    love.graphics.print("Edition",70,0)
    love.graphics.draw(canvasEditor,0,15)
    if isFile then
        love.graphics.draw(canvasMenu,posCanvasMenuX,5)
    end
    if isEdit then
        love.graphics.draw(canvasMenu,posCanvasMenuX,5)
    end
end
function love.keypressed(key)
    if key=="f" then
        isFile=not isFile
        posCanvasMenuX=0
        if isEdit then
            isEdit=not isEdit
        end
    end
    if key=="e" then
        isEdit=not isEdit
        posCanvasMenuX=70
        if isFile then
            isFile=not isFile
        end
    end
end
0
Début du sujet

Merci beaucoup à toi, @ngadidier !

J'en étais arrivé aux mêmes conclusions, avec le canvas et le découpage de mon écran. J'utilise d'ailleurs majoritairement des canvas, car j'ai besoin de réaliser des affichages indépendants les uns des autres et qui ne doivent pas dépasser de leur cadre.

Et je te remercie pour ton exemple. La partie concernant les éléments du menu vont m'aider. Le reste correspond à ce que j'ai déjà réalisé, on est sur la même longueur d'onde 😀

0

bonjour a toi Rey,

Attention au canvas car d'apres la doc de love2d tu auras une chute en fps

bonne journee a toi et bon code

 

0
Début du sujet

On parle d'un éditeur de carte, pas d'un jeu compliqué. C'est quasiment statique.

Et même si c'était pour un dungeon crawler (terme que certains médias fr actuels commencent à utiliser à tort - comme d'habitude - pour désigner les Hack'n Slash à la Diablo ou Gauntlet), ce serait des déplacement en case par case, donc rien de transcendant.

En tous cas, merci de l'avertissement. Ça me sera toujours utile pour des jeux plus gourmands.

Répondre
Share:

Dialoguez avec les autres membres de la gamecodeur school.

Accédez maintenant à notre serveur Discord privé : Entraide, Game Jams, Partage de projets, etc.

Vous devez être membre de la Gamecodeur School Premium pour être autorisé à accéder au serveur.