Sur ce programme j'ai deja réalisé une bonne partie du codage mais en parties séparées, j'aurais besoin de votre aide pour améliorer le code (vous penserez surement que le code est dégueu mais bon je débute) et m'aider à tous relier
1ere partie l'accueil + le menu et l'affichage des différents montages d'ampli
- Code: Tout sélectionner
platform.apilevel = '1.0'
screen = platform.window
W = screen:width()
H = screen:height()
function on.paint(gc) --j'affiche l'accueil
local titre = image.new(" ") --j'ai viré les images car trop de caractères (j'utilise le Ti-Nspire Scrpting Tool si vous avez une autre solution je suis preneur)
local imw = titre:width()
local imh = titre:height()
gc:drawImage(titre, (W - imw)/2, (H - imh)/2)
gc:setColorRGB(255, 255, 255)
gc:setFont("sansserif", "b", 20)
local sh2 = gc:getStringHeight("SI")
gc:drawString("SI", 5, 15+sh2/2)
gc:setFont("sansserif", "b", 15)
local sh1 = gc:getStringHeight("sciences de l'ingénieur")
gc:drawString("sciences de l'ingénieur", 5, 15+sh2/2+sh1/2)
end
function affichage(menuparent,option) --le menu
if option=="Comparateur" then
AOPco()
elseif option=="Ampli inverseur" then
AOPin()
elseif option=="Ampli non-inverseur" then
AOPnin()
elseif option=="Suiveur" then
AOPsu()
elseif option=="Trigger" then
AOPtr()
end
screen:invalidate()
end
Menu = {
{"AOP",
{"Comparateur",affichage},
{"Ampli inverseur",affichage},
{"Ampli non-inverseur",affichage},
{"Suiveur",affichage},
{"Trigger",affichage}
}
}
toolpalette.register(Menu)
function AOPco() --on affiche le comparateur
function on.paint(gc)
local imgco = image.new(" ") -pareil ici
local imw1 = imgco:width()
local imh1 = imgco:height()
gc:setColorRGB(150, 150, 150)
gc:fillRect(0, 0, W, H)
gc:drawImage(imgco, (W-imw1)/2, 15)
end
end
function AOPin()
function on.paint(gc)
local imgin = image.new(" ")
local imw2 = imgin:width()
local imh2 = imgin:height()
gc:setColorRGB(150, 150, 150)
gc:fillRect(0, 0, W, H)
gc:drawImage(imgin, (W-imw2)/2, 15)
end
end
function AOPnin()
function on.paint(gc)
local imgnin = image.new(" ")
local imw3 = imgnin:width()
local imh3 = imgnin:height()
gc:setColorRGB(150, 150, 150)
gc:fillRect(0, 0, W, H)
gc:drawImage(imgnin, (W-imw3)/2, 15)
end
end
function AOPsu()
function on.paint(gc)
local imgsu = image.new(" ")
local imw4 = imgsu:width()
local imh4 = imgsu:height()
gc:setColorRGB(150, 150, 150)
gc:fillRect(0, 0, W, H)
gc:drawImage(imgsu, (W-im4)/2, 15)
end
end
function AOPtr()
function on.paint(gc)
local imgtr = image.new(
local imw5 = imgtr:width()
local imh5 = imgtr:height()
gc:setColorRGB(150, 150, 150)
gc:fillRect(0, 0, W, H)
gc:drawImage(imgtr, (W-im5)/2, 15)
end
end
2eme partie est pour écrire un résultat
- Code: Tout sélectionner
screen = platform.window
input = "?" --on défini input
function on.paint(gc) --on défini le crayon puis on crée un string avec input
gc:setPen("medium", "smooth")
gc:setColorRGB(0, 0, 255)
gc:drawString("R1 = "..input.." R", 8, 10, "top")
end
function on.charIn(touche) --je lis la touche sur laquelle j'appui
if input == "?" then
input = touche --c'est pour enlever le ? au début, pour toute modif ceci n'est pas nécessaire tout comme celle qui redéfinie input = ? a la fin
screen:invalidate()
else
if touche == "k" then -- si la touche est k on multipli par 1000
input = input.."000"
elseif touche == "M" then -- si la touche est M on multipli par 1000000
input = input.."000000"
else
input = input..touche --sinon on allonge la string avec la touche sur laquelle on vient d'appuyer
end
screen:invalidate() --on raffraichi l'écran
end
end
function on.backspaceKey() --si on appui sur dell on efface
input = string.usub(input, 0, -2)
screen:invalidate()
if input == "" then -- si input est vide il vaut "?"
input = "?"
screen:invalidate()
end
end
3eme partie pour sélectionner la zone dans laquelle on va écrire
- Code: Tout sélectionner
screen = platform.window
valeur = 1 --valeur equivaut au numero du rectangle
noir = {0, 0, 0}
bleu = {240, 176, 1}
c1, c2, c3 = unpack(bleu), unpack(noir), unpack(noir) --juste pour définir les couleurs au debut sinon il crash
function on.paint(gc) --on dessine trois rectangle
gc:setPen("medium", "smooth")
gc:setColorRGB(c3)
gc:drawRect(15, 20, 70, 30)
gc:setColorRGB(c2)
gc:drawRect(15, 50, 70, 30)
gc:setColorRGB(c1)
gc:drawRect(15, 80, 70, 30)
gc:setColorRGB(unpack(noir))
gc:drawString("valeur = "..valeur, 250, 35) --j'écris la valeur du rectangle dans un coin pour moi (sera enlevé dans version finale)
end
function on.arrowKey(fleche) --je controle la selection avec les fleches
if fleche == "up" then
valeur = valeur+1
if valeur > 3 then
valeur = valeur-1 --le numero du rectangle ne peut pas dépasser 3
end
screen:invalidate()
selection()
elseif fleche == "down" then
valeur = valeur-1
if valeur < 1 then --le numero ne peut pas aller en dessous de 1
valer = valeur+1
end
screen:invalidate()
selection()
end
end
function selection() --a chaque valeur on defini les couleurs de chaque rectangle celui selectionné sera en bleu
if valeur == 1 then
c1, c2, c3 = unpack(bleu), unpack(noir), unpack(noir)
elseif valeur == 2 then
c1, c2, c3 = unpack(noir), unpack(bleu), unpack(noir)
elseif valeur == 3 then
c1, c2, c3 = unpack(noir), unpack(noir), unpack(bleu)
end
end
je vous remerci d'avance pour votre aide et si vous voulez lorsque je l'aurai fini je pourrais le mettre a disposition de tout le monde.