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 ?

Le deal à ne pas rater :
Cartes Pokémon Japon : le display Pokémon Go de retour en stock sur ...
Voir le deal

descriptionConcours de programmation sur le site du zéro EmptyConcours de programmation sur le site du zéro

more_horiz
je cherche les coups ! <img src=" title="Big Grin" />

J'ai proposé un exemple en linotte !

http://www.siteduzero.com/forum/sujet/a ... e-invaders

descriptionConcours de programmation sur le site du zéro EmptyRE: Concours de programmation sur le site du zéro

more_horiz
Voici la version courte que j'ai posté !!
http://www.siteduzero.com/forum/sujet/a ... e-84276241

[php]
b:
x&y<
-hasard 500
b::rectangle,largeur=8,hauteur=8,plein="oui",couleur=couleurs{x/2}
début
projette b
pour chaque {2,4,8,9,10,11,12,15,17,19,22,24,26,28,29,30,31,32,33,34,35,37,39,41},lis
x@b=x+joker mod 7*9;
y@(#b)=y+entier(joker/7)*9
ferme
couleur@b=0;
x@b=x+18;
y@(#b)=y+(2+x mod 2)*9;
x@b=x+36;
y@b=y+(2+y mod 2)*9
attends 1 seconde;
efface toile
va vers b
[/php]

En un coup d’œil, il est très difficile de comprendre ce que fait ce programme !

descriptionConcours de programmation sur le site du zéro EmptyRE: Concours de programmation sur le site du zéro

more_horiz
J'avoue, c'est coton de comprendre ce code ^^

descriptionConcours de programmation sur le site du zéro EmptyRE: Concours de programmation sur le site du zéro

more_horiz
Et dire que Linotte fut un langage simple et lisible… paix à son âme :;
):

descriptionConcours de programmation sur le site du zéro EmptyRE: Concours de programmation sur le site du zéro

more_horiz
Bonsoir Pat !
J'ai proposé une version simple à comprendre :
[php]
space invaders :
bloc :: rectangle, largeur vaut 10, hauteur vaut 10, plein vaut "oui"
début
tant que vrai, lis
x & y <
- hasard(500)
couleur@bloc vaut couleurs{hasard(x/2)}
pour chaque {2,4,8,9,10,11,12,15,17,19,22,24,26,28,29,30,31,32,33,34,35,37,39,41}, lis
x@bloc vaut x + joker mod 7*11
y@bloc vaut y + entier(joker/7)*11
projette clone(bloc)
ferme
couleur@bloc vaut "noir"
x@bloc vaut x + 2 * 11
y@bloc vaut y + (2 + x mod 2) * 11
projette clone(bloc)
x@bloc vaut x + 4 * 11
y@bloc vaut y + (2 + y mod 2) * 11
projette clone(bloc)
attends 1 seconde
efface toile
ferme[/php]

descriptionConcours de programmation sur le site du zéro EmptyRE: Concours de programmation sur le site du zéro

more_horiz
D'ailleurs, n'hésitez pas à proposer votre solution sur ce forum à cet Atelier du siteduzero !
L’exercice est très intéressant !

descriptionConcours de programmation sur le site du zéro EmptyRE: Concours de programmation sur le site du zéro

more_horiz
Moi j'ai triché :p

J'ai dessiné mon space invader dans mon logiciel de création de niveaux, écrit en Linotte :

[attachment=129]

J'ai alors repris le code de Cpc, en le modifiant un peu :

[php]
globale
taille_largeur_case :: nombre
taille_hauteur_case :: nombre
nombre_case_largeur :: nombre
nombre_case_hauteur :: nombre
space_invaders :: casier de nombres

Ouvrir :
c :: conduit
casier :: casier de nombres
mémo :: texte
num :: nombre
i :: nombre
début
évoque c.sélectionneretouvrir()

casier vaut c.chargecasiernombres(4)
taille_largeur_case = casier{0}
taille_hauteur_case = casier{1}
nombre_case_largeur = casier{2}
nombre_case_hauteur = casier{3}

Pour chaque nombre_case_hauteur, lis
Pour chaque nombre_case_largeur, lis
mémo vaut c.nlire(3)
Convertis mémo en num
Si num != 0, ajoute #i dans space_invaders
incrémente i
ferme
mémo vaut c.nlire(2)
ferme

évoque c.fermer()

Va vers Afficher

Afficher :
bloc :: rectangle, largeur vaut taille_largeur_case, hauteur vaut taille_hauteur_case, plein vaut "oui"
début
tant que vrai, lis
x & y <
- hasard(500)
couleur@bloc vaut couleurs{hasard(x/2)}
pour chaque space_invaders, lis
x@bloc vaut x + joker mod nombre_case_largeur*(taille_largeur_case + 1)
y@bloc vaut y + entier(joker/nombre_case_largeur)*(taille_hauteur_case + 1)
projette clone(bloc)
ferme
couleur@bloc vaut "noir"
x@bloc vaut x + 2 * (taille_largeur_case + 1)
y@bloc vaut y + (2 + x mod 2) * (taille_hauteur_case + 1)
projette clone(bloc)
x@bloc vaut x + 4 * (taille_largeur_case + 1)
y@bloc vaut y + (2 + y mod 2) * (taille_hauteur_case + 1)
projette clone(bloc)
attends 1 seconde
efface toile
ferme
[/php]

Dans ma fonction Ouvrir, je charge alors ma sauvegarde dans un casier et dans ma fonction Afficher, je remplace la ligne suivante :

[php]
pour chaque {2,4,8,9,10,11,12,15,17,19,22,24,26,28,29,30,31,32,33,34,35,37,39,41}, lis
[/php]

par celle_ci :

[php]
pour chaque space_invaders, lis
[/php]

Ainsi, plus besoin d'entrer moi-même tous les chiffres du tableau, c'est ma sauvegarde qui s'en charge...

Et voici le résultat :

[attachment=132]

Voici ma sauvegarde :

[attachment=131]

descriptionConcours de programmation sur le site du zéro EmptyRE: Concours de programmation sur le site du zéro

more_horiz
pas mal :-)
Ton éditeur est un outil puissant !

descriptionConcours de programmation sur le site du zéro EmptyRE: Concours de programmation sur le site du zéro

more_horiz
Merci.
Mais mon éditeur reste très limité.
En effet, il ne peut utiliser qu'un seul tileset.
De même, je voudrais pouvoir afficher les tilesets dans des fenêtres séparées, plutôt que dans la colonne à gauche, afin de pouvoir conserver leur apparence initiale.
Enfin, pouvoir afficher plusieurs tilesets, me permettrais d'inclure des "calques" et donc, de pouvoir superposer plusieurs tiles dans mon quadrillage...
Mais pour ça, il faudrait que les IHM disposent d'une espèce "toile" spécifique, permettant à chaque fenêtre d'afficher des éléments graphiques...

descriptionConcours de programmation sur le site du zéro EmptyRe: Concours de programmation sur le site du zéro

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