Programmer avec le langage Linotte
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

Programmer avec le langage LinotteConnexion

Besoin d'un conseil sur la programmation en Linotte ?

-15%
Le deal à ne pas rater :
(Adhérents Fnac) LEGO® Star Wars™ 75367 Le croiseur d’assaut de ...
552.49 € 649.99 €
Voir le deal

description[complexe] [résolu] montre digitale Empty[complexe] [résolu] montre digitale

more_horiz
bonjour,

le but de ce défi est de mimer l'affichage 7 segments d'une montre digitale.

pour ceux qui ne le sauraient pas, voici ce qu'est un afficheur 7 segments :
( vous m'excuserez, mais c'est pas facile de faire de l'ascii-art avec une police qui n'est pas à chasse fixe <!-- s;
) -->:;
): <!-- s;
) --> )
 
_____________________________________
|      _                __    __                  __       |
|     |  |    |   o    __|  __|   o   |__|   |__|      |
|     |_|    |   o   |__   __|   o        |   |__|      |
|____________________________________ |


(pour ceux qui trouvent que mon dessin est moche, vous pouvez aussi vous rendre sur <!-- m --><a class="postlink" href="http://fr.wikipedia.org/wiki/Afficheur_7_segments">http://fr.wikipedia.org/wiki/Afficheur_7_segments</a><!-- m --> )



vous devrez donc re-créer cet affichage sur la toile et l'actualiser à chaque seconde pour qu'il affiche la bonne heure.
vous pouvez vous inspirer de l'exemple "horloge.liv"


bon courage !

description[complexe] [résolu] montre digitale Empty[complexe] montre digitale

more_horiz
Bonsoir !

Voici ma proposition :

Code:

Horloge Digitale :

("Spécification 1.
2.
1")
("http:
//langagelinotte.
free.
fr/punbb/viewtopic.
php?pid=1944")
Grands rôles :

lumière douce est un texte valant "oscuro"
lumière clair est un texte valant "menthe à l'eau"
décallage est un nombre valant -95
élément v est un polygone, couleur vaut lumière douce, plein vaut "oui", x vaut 0, y vaut 0, .
.
.

dx1 vaut 10 ,dy1 vaut -10, dx2 vaut 20 ,dy2 vaut 0, .
.
.

dx3 vaut 20 ,dy3 vaut 40, dx4 vaut 10 ,dy4 vaut 50, .
.
.

dx5 vaut 0 ,dy5 vaut 40
élément h est un polygone, couleur vaut lumière douce, plein vaut "oui", x vaut 0, y vaut 0, .
.
.

dx1 vaut 10 ,dy1 vaut -10, dx2 vaut 38 ,dy2 vaut -10, .
.
.

dx3 vaut 48 ,dy3 vaut 0, dx4 vaut 38 ,dy4 vaut 10, .
.
.

dx5 vaut 10 ,dy5 vaut 10
chiffre1 est un casier de polygone vide
chiffre2 est un casier de polygone vide
chiffre3 est un casier de polygone vide
chiffre4 est un casier de polygone vide
chiffre5 est un casier de polygone vide
chiffre6 est un casier de polygone vide
rond1 est un cercle, couleur vaut lumière douce, x vaut 285 + décallage, y vaut 230, rayon vaut 20, plein vaut "oui"
rond2 est un cercle, couleur vaut lumière douce, x vaut 285 + décallage, y vaut 290, rayon vaut 20, plein vaut "oui"
rond3 est un cercle, couleur vaut lumière douce, x vaut 506 + décallage, y vaut 230, rayon vaut 20, plein vaut "oui"
rond4 est un cercle, couleur vaut lumière douce, x vaut 506 + décallage, y vaut 290, rayon vaut 20, plein vaut "oui"
vitre est une toile, couleur vaut "noir", hauteur vaut 500
patron0 est un casier de nombre valant 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1
patron1 est un casier de nombre valant 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1
patron2 est un casier de nombre valant 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0
patron3 est un casier de nombre valant 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1
patron4 est un casier de nombre valant 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1
patron5 est un casier de nombre valant 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1
patron6 est un casier de nombre valant 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1
patron7 est un casier de nombre valant 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1
patron8 est un casier de nombre valant 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
patron9 est un casier de nombre valant 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1
nombres est un casier de casier valant patron0, patron1, patron2, .
.
.

patron3, patron4, patron5, patron6, patron7, patron8, patron9

Principal :

Rôles :

chiffre 0 est un nombre valant 0 + décallage
chiffre 1 est un nombre valant 80 + décallage
chiffre 2 est un nombre valant 220 + décallage
chiffre 3 est un nombre valant 300 + décallage
chiffre 4 est un nombre valant 440 + décallage
chiffre 5 est un nombre valant 520 + décallage
h est un nombre
m est un nombre
s est un nombre
Actions :

efface la toile
projette la vitre
projette rond1 & rond2 & rond3 & rond4
parcours init avec chiffre 0, chiffre1
parcours init avec chiffre 1, chiffre2
parcours init avec chiffre 2, chiffre3
parcours init avec chiffre 3, chiffre4
parcours init avec chiffre 4, chiffre5
parcours init avec chiffre 5, chiffre6
tant que 1 est différent de 2, lis
h vaut heure
m vaut minute
s vaut seconde
parcours analyse avec h, chiffre1, chiffre2
parcours analyse avec m, chiffre3, chiffre4
parcours analyse avec s, chiffre5, chiffre6
si s mod 2 est égal à 0 alors lis
couleur@rond1 & couleur@rond2 & couleur@rond3 & couleur@rond4 vaut lumière clair
ferme
sinon, lis
couleur@rond1 & couleur@rond2 & couleur@rond3 & couleur@rond4 vaut lumière douce
ferme
attends 1 seconde
ferme
termine

Init :

Rôles :

* d est un nombre
* c est un casier de polygone
Actions :

parcours affiche avec #élément h, 111 + d, 139, c
parcours affiche avec #élément h, 111 + d, 261, c
parcours affiche avec #élément h, 111 + d, 383, c
parcours affiche avec #élément v, 100 + d, 150, c
parcours affiche avec #élément v, 100 + d, 210, c
parcours affiche avec #élément v, 100 + d, 272, c
parcours affiche avec #élément v, 100 + d, 332, c
parcours affiche avec #élément v, 150 + d, 150, c
parcours affiche avec #élément v, 150 + d, 210, c
parcours affiche avec #élément v, 150 + d, 272, c
parcours affiche avec #élément v, 150 + d, 332, c
Reviens

Analyse :

Rôles :

* n est un nombre
* c1 est un casier de polygone
* c2 est un casier de polygone
Actions :

parcours colorise avec nombres{entier(n/10)}, c1
parcours colorise avec nombres{décimal(n/10)*10}, c2
Reviens

Affiche :

Rôles :

*temporaire est un polygone
*x est un nombre
*y est un nombre
*casier est un casier de polygone
Actions :

x@temporaire vaut x
y@temporaire vaut y
projette temporaire
ajoute temporaire dans casier
reviens

Colorise :

Rôles :

* modèle est un casier de nombre
* chiffre est un casier de polygone
§ position est un nombre valant 0
Actions :

pour chaque modèle, lis
si joker est égal à 1 alors couleur@(chiffre{position}) vaut lumière clair
sinon, couleur@(chiffre{position}) vaut lumière douce
position vaut position + 1
ferme
reviens

description[complexe] [résolu] montre digitale Empty[complexe] montre digitale

more_horiz
Voici une nouvelle version de l'horloge qui permet de montrer en même temps la puissance du nouveau noyau Linotte ! Si vous essayez avec la version 1.2, le livre est super lent et avec la beta 1.2.1, le livre est fluide.

Code:

Horloge Digitale :

("Spécification 1.
2.
1")
("http:
//langagelinotte.
free.
fr/punbb/viewtopic.
php?id=311")
Grands rôles :

lumière douce est un texte valant "20 20 20"
lumière clair est un texte valant "255 255 255"
décallage est un nombre valant -95
élément v est un polygone, couleur vaut lumière douce, plein vaut "oui", x vaut 0, y vaut 0, .
.
.

dx1 vaut 10 ,dy1 vaut -10, dx2 vaut 20 ,dy2 vaut 0, .
.
.

dx3 vaut 20 ,dy3 vaut 40, dx4 vaut 10 ,dy4 vaut 50, .
.
.

dx5 vaut 0 ,dy5 vaut 40
élément h est un polygone, couleur vaut lumière douce, plein vaut "oui", x vaut 0, y vaut 0, .
.
.

dx1 vaut 10 ,dy1 vaut -10, dx2 vaut 38 ,dy2 vaut -10, .
.
.

dx3 vaut 48 ,dy3 vaut 0, dx4 vaut 38 ,dy4 vaut 10, .
.
.

dx5 vaut 10 ,dy5 vaut 10
chiffre1 est un casier de polygone vide
chiffre2 est un casier de polygone vide
chiffre3 est un casier de polygone vide
chiffre4 est un casier de polygone vide
chiffre5 est un casier de polygone vide
chiffre6 est un casier de polygone vide
rond1 est un cercle, couleur vaut lumière douce, x vaut 285 + décallage, y vaut 230, rayon vaut 20, plein vaut "oui"
rond2 est un cercle, couleur vaut lumière douce, x vaut 285 + décallage, y vaut 290, rayon vaut 20, plein vaut "oui"
rond3 est un cercle, couleur vaut lumière douce, x vaut 506 + décallage, y vaut 230, rayon vaut 20, plein vaut "oui"
rond4 est un cercle, couleur vaut lumière douce, x vaut 506 + décallage, y vaut 290, rayon vaut 20, plein vaut "oui"
vitre est une toile, couleur vaut "noir" (", bordure vaut "non", hauteur vaut 500")
patron0 est un casier de nombre valant 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1
patron1 est un casier de nombre valant 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1
patron2 est un casier de nombre valant 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0
patron3 est un casier de nombre valant 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1
patron4 est un casier de nombre valant 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1
patron5 est un casier de nombre valant 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1
patron6 est un casier de nombre valant 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1
patron7 est un casier de nombre valant 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1
patron8 est un casier de nombre valant 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
patron9 est un casier de nombre valant 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1
nombres est un casier de casier valant patron0, patron1, patron2, .
.
.

patron3, patron4, patron5, patron6, patron7, patron8, patron9

Principal :

Rôles :

position 1 est un nombre valant 0 + décallage
position 2 est un nombre valant 80 + décallage
position 3 est un nombre valant 220 + décallage
position 4 est un nombre valant 300 + décallage
position 5 est un nombre valant 440 + décallage
position 6 est un nombre valant 520 + décallage
h & m & s est un nombre
Actions :

efface la toile
projette la vitre
projette rond1 & rond2 & rond3 & rond4
parcours init avec position 1, chiffre1
parcours init avec position 2, chiffre2
parcours init avec position 3, chiffre3
parcours init avec position 4, chiffre4
parcours init avec position 5, chiffre5
parcours init avec position 6, chiffre6
tant que 1 est différent de 2, lis
h vaut heure
m vaut minute
s vaut seconde
parcours analyse avec h, chiffre1, chiffre2
parcours analyse avec m, chiffre3, chiffre4
parcours analyse avec s, chiffre5, chiffre6
si s mod 2 est égal à 0 alors lis
appelle On Rond avec rond1
appelle On Rond avec rond2
appelle On Rond avec rond3
appelle On Rond avec rond4
ferme
sinon, lis
appelle Off Rond avec rond1
appelle Off Rond avec rond2
appelle Off Rond avec rond3
appelle Off Rond avec rond4
ferme
attends 1 seconde
ferme
termine

Init :

Rôles :

* d est un nombre
* c est un casier de polygone
Actions :

parcours affiche avec #élément h, 111 + d, 139, c
parcours affiche avec #élément h, 111 + d, 261, c
parcours affiche avec #élément h, 111 + d, 383, c
parcours affiche avec #élément v, 100 + d, 150, c
parcours affiche avec #élément v, 100 + d, 210, c
parcours affiche avec #élément v, 100 + d, 272, c
parcours affiche avec #élément v, 100 + d, 332, c
parcours affiche avec #élément v, 150 + d, 150, c
parcours affiche avec #élément v, 150 + d, 210, c
parcours affiche avec #élément v, 150 + d, 272, c
parcours affiche avec #élément v, 150 + d, 332, c
Reviens

Analyse :

Rôles :

* n est un nombre
* c1 est un casier de polygone
* c2 est un casier de polygone
Actions :

parcours colorise avec nombres{entier(n/10)}, c1
parcours colorise avec nombres{décimal(n/10)*10}, c2
Reviens

Affiche :

Rôles :

*temporaire est un polygone
*x est un nombre
*y est un nombre
*casier est un casier de polygone
Actions :

x@temporaire vaut x
y@temporaire vaut y
projette temporaire
ajoute temporaire dans casier
reviens

Colorise :

Rôles :

* modèle est un casier de nombre
* chiffre est un casier de polygone
§ position est un nombre valant 0
Actions :

pour chaque modèle, lis
si joker est égal à 1 alors appelle on avec chiffre{position}
sinon, appelle off avec chiffre{position}
position vaut position + 1
ferme
reviens

On :

Rôles :

* élément est un polygone
Actions :

si couleur@élément est égal à lumière clair alors reviens
De 20 à 255, lis
couleur@élément vaut joker + " " + joker + " " + joker
Attends 1 millisecondes
Ferme
reviens

Off :

Rôles :

* élément est un polygone
Actions :

si couleur@élément est égal à lumière douce alors reviens
De 255 à 20, lis
couleur@élément vaut joker + " " + joker + " " + joker
Attends 2 millisecondes
Ferme
reviens

On Rond:

Rôles :

* élément est un cercle
Actions :

si couleur@élément est égal à lumière clair alors reviens
De 20 à 255, lis
couleur@élément vaut joker + " " + joker + " " + joker
Attends 2 millisecondes
Ferme
reviens

Off Rond:

Rôles :

* élément est un cercle
Actions :

si couleur@élément est égal à lumière douce alors reviens
De 255 à 20, lis
couleur@élément vaut joker + " " + joker + " " + joker
Attends 2 millisecondes
Ferme
reviens

description[complexe] [résolu] montre digitale Empty[complexe] montre digitale

more_horiz
Un petit animation pour afficher l'horloge, c'est plus sympathique...

Code:

Horloge Digitale :

("Spécification 1.
2.
1")
("http:
//langagelinotte.
free.
fr/punbb/viewtopic.
php?id=311")
Grands rôles :

lumière douce est un texte valant "20 20 20"
lumière clair est un texte valant "255 255 255"
décallage est un nombre valant -95
élément v est un polygone, couleur vaut lumière douce, plein vaut "oui", x vaut 0, y vaut 0, .
.
.

dx1 vaut 10 ,dy1 vaut -10, dx2 vaut 20 ,dy2 vaut 0, .
.
.

dx3 vaut 20 ,dy3 vaut 40, dx4 vaut 10 ,dy4 vaut 50, .
.
.

dx5 vaut 0 ,dy5 vaut 40
élément h est un polygone, couleur vaut lumière douce, plein vaut "oui", x vaut 0, y vaut 0, .
.
.

dx1 vaut 10 ,dy1 vaut -10, dx2 vaut 38 ,dy2 vaut -10, .
.
.

dx3 vaut 48 ,dy3 vaut 0, dx4 vaut 38 ,dy4 vaut 10, .
.
.

dx5 vaut 10 ,dy5 vaut 10
chiffre1 est un casier de polygone vide
chiffre2 est un casier de polygone vide
chiffre3 est un casier de polygone vide
chiffre4 est un casier de polygone vide
chiffre5 est un casier de polygone vide
chiffre6 est un casier de polygone vide
rond1 est un cercle, couleur vaut lumière douce, x vaut 285 + décallage, y vaut 230, rayon vaut 20, plein vaut "oui"
rond2 est un cercle, couleur vaut lumière douce, x vaut 285 + décallage, y vaut 290, rayon vaut 20, plein vaut "oui"
rond3 est un cercle, couleur vaut lumière douce, x vaut 506 + décallage, y vaut 230, rayon vaut 20, plein vaut "oui"
rond4 est un cercle, couleur vaut lumière douce, x vaut 506 + décallage, y vaut 290, rayon vaut 20, plein vaut "oui"
vitre est une toile, couleur vaut "noir" (", bordure vaut "non", hauteur vaut 500")
patron0 est un casier de nombre valant 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1
patron1 est un casier de nombre valant 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1
patron2 est un casier de nombre valant 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0
patron3 est un casier de nombre valant 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1
patron4 est un casier de nombre valant 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1
patron5 est un casier de nombre valant 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1
patron6 est un casier de nombre valant 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1
patron7 est un casier de nombre valant 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1
patron8 est un casier de nombre valant 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
patron9 est un casier de nombre valant 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1
nombres est un casier de casier valant patron0, patron1, patron2, .
.
.

patron3, patron4, patron5, patron6, patron7, patron8, patron9

Principal :

Rôles :

position 1 est un nombre valant 0 + décallage
position 2 est un nombre valant 80 + décallage
position 3 est un nombre valant 220 + décallage
position 4 est un nombre valant 300 + décallage
position 5 est un nombre valant 440 + décallage
position 6 est un nombre valant 520 + décallage
h & m & s est un nombre
Actions :

efface la toile
projette la vitre
projette rond1 & rond2 & rond3 & rond4
parcours init avec position 1, chiffre1
parcours init avec position 2, chiffre2
parcours init avec position 3, chiffre3
parcours init avec position 4, chiffre4
parcours init avec position 5, chiffre5
parcours init avec position 6, chiffre6
tant que 1 est différent de 2, lis
h vaut heure
m vaut minute
s vaut seconde
parcours analyse avec h, chiffre1, chiffre2
parcours analyse avec m, chiffre3, chiffre4
parcours analyse avec s, chiffre5, chiffre6
si s mod 2 est égal à 0 alors lis
appelle On Rond avec rond1
appelle On Rond avec rond2
appelle On Rond avec rond3
appelle On Rond avec rond4
ferme
sinon, lis
appelle Off Rond avec rond1
appelle Off Rond avec rond2
appelle Off Rond avec rond3
appelle Off Rond avec rond4
ferme
attends 1 seconde
ferme
termine

Init :

Rôles :

* d est un nombre
* c est un casier de polygone
Actions :

parcours affiche avec #élément h, 111 + d, 139, c
parcours affiche avec #élément h, 111 + d, 261, c
parcours affiche avec #élément h, 111 + d, 383, c
parcours affiche avec #élément v, 100 + d, 150, c
parcours affiche avec #élément v, 100 + d, 210, c
parcours affiche avec #élément v, 100 + d, 272, c
parcours affiche avec #élément v, 100 + d, 332, c
parcours affiche avec #élément v, 150 + d, 150, c
parcours affiche avec #élément v, 150 + d, 210, c
parcours affiche avec #élément v, 150 + d, 272, c
parcours affiche avec #élément v, 150 + d, 332, c
Reviens

Analyse :

Rôles :

* n est un nombre
* c1 est un casier de polygone
* c2 est un casier de polygone
Actions :

parcours colorise avec nombres{entier(n/10)}, c1
parcours colorise avec nombres{décimal(n/10)*10}, c2
Reviens

Affiche :

Rôles :

*temporaire est un polygone
*x est un nombre
*y est un nombre
*casier est un casier de polygone
Actions :

projette temporaire
ajoute temporaire dans casier
appelle animation avec temporaire, x, y
reviens

Animation :

Rôles :

*temporaire est un polygone
*x est un nombre
*y est un nombre
§flag est un drapeau valant faux
§aléatoire est un nombre valant 15
Actions :

mélange aléatoire
aléatoire vaut aléatoire + 5
tant que flag est faux, lis
si x@temporaire est différent de x alors x@temporaire vaut x@temporaire + 1
si y@temporaire est différent de y alors y@temporaire vaut y@temporaire + 1
si x@temporaire est égal à x alors lis
si y@temporaire est égal à y alors flag vaut vrai
ferme
attends aléatoire millisecondes
tourne à droite temporaire de 1
ferme
tant que angle@temporaire est différent de 0 , lis
tourne à droite temporaire de 1
attends aléatoire millisecondes
ferme
reviens

Colorise :

Rôles :

* modèle est un casier de nombre
* chiffre est un casier de polygone
§ position est un nombre valant 0
Actions :

pour chaque modèle, lis
si joker est égal à 1 alors appelle on avec chiffre{position}
sinon, appelle off avec chiffre{position}
position vaut position + 1
ferme
reviens

On :

Rôles :

* élément est un polygone
Actions :

si couleur@élément est égal à lumière clair alors reviens
De 20 à 255, lis
couleur@élément vaut joker + " " + joker + " " + joker
Attends 1 millisecondes
Ferme
reviens

Off :

Rôles :

* élément est un polygone
Actions :

si couleur@élément est égal à lumière douce alors reviens
De 255 à 20, lis
couleur@élément vaut joker + " " + joker + " " + joker
Attends 2 millisecondes
Ferme
reviens

On Rond:

Rôles :

* élément est un cercle
Actions :

si couleur@élément est égal à lumière clair alors reviens
De 20 à 255, lis
couleur@élément vaut joker + " " + joker + " " + joker
Attends 2 millisecondes
Ferme
reviens

Off Rond:

Rôles :

* élément est un cercle
Actions :

si couleur@élément est égal à lumière douce alors reviens
De 255 à 20, lis
couleur@élément vaut joker + " " + joker + " " + joker
Attends 2 millisecondes
Ferme
reviens

description[complexe] [résolu] montre digitale Empty[complexe] montre digitale

more_horiz
waw! magnifique! Surprised

par contre, chez moi, le dernier livre ne fonctionne pas avec l'ancien moteur de Linotte. l'atelier ne répond plus: impossible d'arreter le livre ou de fermer l'atelier normalement..
mais aucun problème avec la version beta.

en tout cas, le livre est impressionant! bravo !


je déclare officielement le défi résolu. <img src=" title="Smile" />

description[complexe] [résolu] montre digitale EmptyRe: [complexe] [résolu] montre digitale

more_horiz
privacy_tip Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
power_settings_newSe connecter pour répondre