Rechercher
Résultats par :
Recherche avancée
Mots-clés

taille  caractères  convertir  vider  

Qui est en ligne ?
Il y a en tout 4 utilisateurs en ligne :: 0 Enregistré, 0 Invisible et 4 Invités

Aucun

Voir toute la liste


Partagez
Voir le sujet précédentAller en basVoir le sujet suivant
Posting Freak
Messages : 1188
Date d'inscription : 2004-12-09
Voir le profil de l'utilisateurhttp://langagelinotte.free.fr/

Prochaine version : destination Linotte 1.3

le Fri 7 Jan - 10:02
Bonjour,

Pour ceux qui ne suivent pas le blog de Linotte, j'ai en ce moment mon PC réquisitionné pour une autre tâche...
Je m'étale pas sur le sujet mais la conséquence est que je ne peux pas travailler sur Linotte pendant quelques jours.

Ce n'est pas bien embêtant, ça permet de se poser et de réfléchir !

Voici un autre exemple de ce que l'on pourra faire dans la prochaine version. J'espère que cet exemple est plus parlant que le précédent ! <img src=" title="Smile" />

Pour information, "entité" sera une nouvelle espèce vide qui sera utilisée pour créer des nouvelles espèces.

Code:
L'attaque des clones :

("Spécification :
1.
3")

Espèces :

énergie est un nombre valant 10000
nom est un texte
l'espèce stormtrooper hérite de entité et contient une énergie
l'espèce jedi hérite de entité et contient une énergie, un nom

Principal :

Rôles :

prototype est un stormtrooper
yoda est un jedi, nom vaut "Yoda"
armée est un casier de stormtrooper
taille armée est un nombre valant 100
vivants est un nombre valant taille armée ("Nombre de stormtroopers encore vivants")
Actions :

("Construction des espèces :
")
attache attaquer à prototype
attache perdre énergie à prototype
attache vivant à prototype
attache frapper à yoda
attache respire encore à yoda
attache prendre coup à yoda

("On ajoute les clones du prototype dans l'armée :
")
pour chaque taille armée, ajoute #prototype dans armée

("àààà l'attaaaqueeee !")
tant que vivants est plus grand que 0 alors lis
§i est un nombre
pour i de 0 à taille armée - 1, lis
si (armée{i})%vivant() alors lis
§dégât est un nombre
"-->
Attaque du stormtrooper n° + " + i + " :
" !
dégât vaut (armée{i})%attaque()
" Il vient de faire une attaque de " + dégât + " points.
" !
" Il lui reste " + énergie@(armée{i}) + " points d'énergie.
" !
" Il reste " + yoda%prendre coup(dégât) + " énergie à " + nom@yoda !
" " + nom@yoda + " répond en attaquant.
.
.
" !
dégât vaut yoda%frappe(armée{i})
" .
.
.
il vient de faire un attaque de " + dégât + " points.
" !
si négatif((armée{i})%vivant()) alors lis
" Le stormtrooper n° + " + i + " est mort !" !
décrémente vivants
ferme
sinon, lis
si négatif(yoda%respire encore()) alors lis
" " + nom@yoda + " est mort.
" !
"****L'alliance a perdu !" !
termine
ferme
ferme
ferme
ferme
ferme
" L'armée des clones est décimée !" !
"****L'alliance a gagné !" !

("*******************************************")
("Méthodes fonctionnelles d'un stormtrooper :
")
("*******************************************")

Attaquer :

("Le stormtrooper perd de l'energie quand il attaque")
Rôles :

*moi est un stormtrooper
§force est un nombre valant 100
Actions :

mélange force
énergie@moi vaut énergie@moi - force * 10
retourne force

Perdre énergie :

Rôles :

*moi est un stormtrooper
*point est un nombre
Actions :

énergie@moi vaut énergie@moi - point
retourne énergie@moi

Vivant :

Rôles :

*moi est un stormtrooper
Actions :

si énergie@moi est plus grand que 0 alors retourne vrai
sinon, retourne faux

("***********************************")
("Méthodes fonctionnelles d'un jedi :
")
("***********************************")

Frapper :

Rôles :

*moi est un jedi
*ennemi est un stormtrooper
§force est un nombre valant 500
Actions :

mélange force
évoque ennemi%perdre énergie(force)
retourne force

Prendre coup :

Rôles :

*moi est un jedi
*point est un nombre
Actions :

énergie@moi vaut énergie@moi - point
retourne énergie@moi

Respire encore :

Rôles :

*moi est un jedi
Actions :

si énergie@moi est plus grand que 0 alors retourne vrai
sinon, retourne faux
Posting Freak
Messages : 1188
Date d'inscription : 2004-12-09
Voir le profil de l'utilisateurhttp://langagelinotte.free.fr/

Prochaine version : destination Linotte 1.3

le Mon 10 Jan - 10:13
Tel un blog, je raconte ma vie sur ce fil....

J'ai un petit avancé ce we :
http://code.google.com/p/langagelinotte ... tail?r=229

Le parseur reconnait maintenant la syntaxe 1.3 mais il ne sait pas encore l'exécuter. Le but était de savoir si j'étais capable de modifier le parseur pour prendre en compte les nouvelles formes de la syntaxe.

J'ai profité de corriger le bogue remonté par Pat à propos du livre fonction récursive.

Voici une nouvelle version du livre l'attaque des clones compatibles avec le nouveau parseur :

Code:
L'attaque des clones :

("Spécification :
1.
3")
Espèces :

énergie est un nombre valant 10000
nom est un texte
l'espèce stormtrooper hérite de entité et contient une énergie
l'espèce jedi hérite de entité et contient une énergie, un nom

Principal :

Rôles :

prototype est un stormtrooper
yoda est un jedi, nom vaut "Yoda"
armée est un casier de stormtrooper
taille armée est un nombre valant 100
vivants est un nombre valant taille armée ("Nombre de stormtroopers encore vivants")
Actions :

("Construction des espèces :
")
attache attaquer à prototype
attache perdre énergie à prototype
attache vivant à prototype
attache frapper à yoda
attache respire encore à yoda
attache prendre coup à yoda

("On ajoute les clones du prototype dans l'armée :
")
pour chaque taille armée, ajoute #prototype dans armée

("àààà l'attaaaqueeee !")
tant que vivants est plus grand que 0, lis
§i est un nombre
pour i de 0 à taille armée - 1, lis
si (armée{i})%vivant() est vrai alors lis
§dégât est un nombre
"-->
Attaque du stormtrooper n° + " + i + " :
" !
dégât vaut (armée{i})%attaque()
" Il vient de faire une attaque de " + dégât + " points.
" !
" Il lui reste " + énergie@(armée{i}) + " points d'énergie.
" !
" Il reste " + yoda%prendre coup(dégât) + " énergie à " + nom@yoda !
" " + nom@yoda + " répond en attaquant.
.
.
" !
dégât vaut yoda%frappe(armée{i})
" .
.
.
il vient de faire un attaque de " + dégât + " points.
" !
si négatif((armée{i})%vivant()) est vrai alors lis
" Le stormtrooper n° + " + i + " est mort !" !
décrémente vivants
ferme
sinon, lis
si négatif(yoda%respire encore()) est vrai alors lis
" " + nom@yoda + " est mort.
" !
"****L'alliance a perdu !" !
termine
ferme
ferme
ferme
ferme
ferme
" L'armée des clones est décimée !" !
"****L'alliance a gagné !" !

("*******************************************")
("Méthodes fonctionnelles d'un stormtrooper :
")
("*******************************************")

Attaquer :

("Le stormtrooper perd de l'energie quand il attaque")
Rôles :

*moi est un stormtrooper
§force est un nombre valant 100
Actions :

mélange force
énergie@moi vaut énergie@moi - force * 10
retourne force

Perdre énergie :

Rôles :

*moi est un stormtrooper
*point est un nombre
Actions :

énergie@moi vaut énergie@moi - point
retourne énergie@moi

Vivant :

Rôles :

*moi est un stormtrooper
Actions :

si énergie@moi est plus grand que 0 alors retourne vrai
sinon, retourne faux

("***********************************")
("Méthodes fonctionnelles d'un jedi :
")
("***********************************")

Frapper :

Rôles :

*moi est un jedi
*ennemi est un stormtrooper
§force est un nombre valant 500
Actions :

mélange force
évoque ennemi%perdre énergie(force)
retourne force

Prendre coup :

Rôles :

*moi est un jedi
*point est un nombre
Actions :

énergie@moi vaut énergie@moi - point
retourne énergie@moi

Respire encore :

Rôles :

*moi est un jedi
Actions :

si énergie@moi est plus grand que 0 alors retourne vrai
sinon, retourne faux
Senior Member
Messages : 340
Date d'inscription : 2010-08-31
Voir le profil de l'utilisateurhttp://zamirhlinotte.monsite-orange.fr/

Prochaine version : destination Linotte 1.3

le Tue 11 Jan - 3:22
Groumph j'arrive toujours pas à comprendre, ce serait peut-être plus facile si tu remplaçait % par un mot ? (pis ça ferait plus linottien)
Posting Freak
Messages : 1188
Date d'inscription : 2004-12-09
Voir le profil de l'utilisateurhttp://langagelinotte.free.fr/

Prochaine version : destination Linotte 1.3

le Tue 11 Jan - 9:45
[quote=zamirh]Groumph j'arrive toujours pas à comprendre, ce serait peut-être plus facile si tu remplaçait % par un mot ? (pis ça ferait plus linottien)[/quote]
Trés bonne idée de remplacer le % par un mot. C'est un peu comme le @ et "de".

Des idées ???
Posting Freak
Messages : 1188
Date d'inscription : 2004-12-09
Voir le profil de l'utilisateurhttp://langagelinotte.free.fr/

Prochaine version : destination Linotte 1.3

le Tue 11 Jan - 10:48
Format condensé :

Code:
dégât vaut yoda % frappe(armée{i})
Autre forme :

Code:
dégât vaut yoda hale frappe(armée{i})
http://fr.wiktionary.org/wiki/haler


Code:
dégât vaut yoda héle frappe(armée{i})
http://fr.wiktionary.org/wiki/héler

mais je trouve que ce n'est pas très beau....
Senior Member
Messages : 340
Date d'inscription : 2010-08-31
Voir le profil de l'utilisateurhttp://zamirhlinotte.monsite-orange.fr/

Prochaine version : destination Linotte 1.3

le Tue 11 Jan - 11:11
Oui c'est très laid !!!
Senior Member
Messages : 497
Date d'inscription : 2008-09-21
Voir le profil de l'utilisateur

Prochaine version : destination Linotte 1.3

le Tue 11 Jan - 12:07
Bonjour,

Pour ma part, je trouve que la syntaxe est un peu lourde, et je ne vois pas bien l’avantage d’employer celle-ci, plutôt que de passer par les fonctions par exemple ?

:;
):
Posting Freak
Messages : 1188
Date d'inscription : 2004-12-09
Voir le profil de l'utilisateurhttp://langagelinotte.free.fr/

Prochaine version : destination Linotte 1.3

le Tue 11 Jan - 13:53
Le but est de s'approcher de plus en plus de la programmation objet.

Dans mon jeu l'attaque des clones, un jedi en tant que guerrier doit attaquer.
Il est interessant de ce dire que seul le jedi sait comment il frappe.
Pour celà, il faut un couplage fort entre le jedi et l'action de frapper.
On attache ainsi l'action de frapper au jedi.

Voici une explication très simple : http://sebsauvage.net/comprendre/objet/index.html

Sinon, je propose cette syntaxe plus proche des autres langages de programmation :

Code:
dégât vaut yoda.
frappe(armée{i})
ou sinon :
Code:
dégât vaut yoda~frappe(armée{i})
Code:
dégât vaut yoda|frappe(armée{i})
Senior Member
Messages : 497
Date d'inscription : 2008-09-21
Voir le profil de l'utilisateur

Prochaine version : destination Linotte 1.3

le Tue 11 Jan - 20:02
Mouais... l'avantage reste flou pour moi, je crois que je suis allergique à ce paradigme :;
):
Posting Freak
Messages : 1188
Date d'inscription : 2004-12-09
Voir le profil de l'utilisateurhttp://langagelinotte.free.fr/

Prochaine version : destination Linotte 1.3

le Fri 5 Nov - 15:14
La version 1.2.4 étant en phase de stabilisation, concentrons-nous sur la prochaine version.

Voici les premières évolutions que je compte y intégrer suite à vos retours :

Juin 2011 : version 1.3

** Atelier **
- fonction Chercher / Remplacer dans Atelier

** IHM avec les composants Swing **
- Barre d'état (Swing)
- Composant pour rechercher des fichiers sur le disque (Swing)
- copier/coller dans les composants (Swing)
- Composant Toile dans interface utilisateur (Swing)

** Webonotte **
- gestion des sessions avec le Webonotte
- gestion des cookies avec le Webonotte

** Coeur du langage **
- gestion des fichiers améliorés
- Amélioration du réseau
- Amélioration du SQL
- Amélioration du verbe jouer (modification de la durée du note, etc...)
- Simplification de la syntaxe : "x:nombre" au lieu de "x est un nombre"
- Utilisation du <
, >
, <
= et >
= dans les conditions
Senior Member
Messages : 340
Date d'inscription : 2010-08-31
Voir le profil de l'utilisateurhttp://zamirhlinotte.monsite-orange.fr/

Prochaine version : destination Linotte 1.3

le Fri 5 Nov - 17:22
J'ai hâte x)
Member
Messages : 121
Date d'inscription : 2010-05-15
Voir le profil de l'utilisateur

Prochaine version : destination Linotte 1.3

le Fri 5 Nov - 19:54
Tout m'a l'air bien sympa (mêle si je ne sais pas ce qu'est l'<
<
** IHM avec les composants Swing **>
>
).

Sinon, pour la refonte du tutoriel, c'en est où <img src=" title="Smile" /> ?
Senior Member
Messages : 497
Date d'inscription : 2008-09-21
Voir le profil de l'utilisateur

Prochaine version : destination Linotte 1.3

le Tue 9 Nov - 21:10
Bonsoir,

Je propose :

- Avec l’audit, pourvoir connaître la taille occupée en mémoire par un livre, avant, pendant, après son exécution,

- Avec l’instruction «questionne sur », et « affiche » pouvoir donner ou non le focus à la boite de dialogue, (dans mon cas lors de l'utilisation avec l'applet).
Posting Freak
Messages : 1188
Date d'inscription : 2004-12-09
Voir le profil de l'utilisateurhttp://langagelinotte.free.fr/

Prochaine version : destination Linotte 1.3

le Sat 18 Dec - 19:39
Bonsoir,

Voici de nouveau Linotte 1.3 alpha 1 !
Code:
* vitesse :
gain de 30%
* ajout des acteurs locaux aux sous-paragraphes
Voici un exemple pour le dernier point :
Code:
Livre :
acteurs locaux à un sous-paragraphe
("Spécification :
1.
3")

Paragraphe :
principal
Rôles :

mon casier est un casier de nombre vide
Actions :

pour chaque 10, lis
§ b est un nombre valant 15
mélange b
ajoute b dans mon casier
ferme
affiche mon casier
Vous pouvez télécharger cette version ici :

http://langagelinotte.free.fr/wordpress/?page_id=142
Posting Freak
Messages : 1188
Date d'inscription : 2004-12-09
Voir le profil de l'utilisateurhttp://langagelinotte.free.fr/

Prochaine version : destination Linotte 1.3

le Thu 23 Dec - 10:53
Bonjour,

Voici probablement mon dernier message de l'année ;
j'en profite pour vous donner quelques infos sur la suite du langage.
Il y a quelques temps, j'ai découvert un pseudo langage de programmation nommé Tangara. Rien de bien nouveau car ce langage est du java déguisé.
Mais, s'appuyant sur le Java, les développeurs peuvent proposer des composants graphiques très sympathiques.
Linotte, de part son langage très simple et proche du français, aujourd'hui, il ne peut proposer, sans être dénaturé ou être complexifié, de telles fonctionnalités (vidéo, fichiers, etc.)

Mais après quelques mois de réflexion, j'ai (je pense) trouvé une solution !

Je me suis inspiré de l'approche "prototype" des langages de programmation (Programmation orientée prototype). Il se trouve que Linotte est naturellement proche de ce paradigme.

Les objets en Linotte (les espèces) vont ainsi devenir dynamiques (on peut les modifier en cours d'exécution d'un livre) : on va pouvoir attacher des méthodes fonctionnelles à ces objets.

Par méthode fonctionnelle, il faut comprendre "attacher à mon espèce des traitements qu'il peut lui même réaliser".

Ainsi, imaginons une espèce voiture à qui on "attache" le traitement "démarrer".

En Linotte, sur l'espèce voiture, on devrait pouvoir faire :
Code:
retour vaut voiture % démarrer ()
(le symbole % indique que l'on exécute la méthode fonctionnelle "démarrer" de l'espèce voiture)

Le traitement "démarrer" va initialiser des valeurs (par exemple commencer une animation).

Vous arrivez toujours à suivre ? <img src=" title="Smile" />

L'ajout de méthodes fonctionnelles pourra se faire de deux façons :

1 - Avec les greffons (c'est la façon la plus souple pour ajouter de nouvelles fonctionnalités au langage Linotte).

Le code source Java du greffon doit contenir la méthode suivante :
Code:
public ObjetLinotte démarrer() throws GreffonException {
2 : En utilisant le verbe "Attacher".
Code:
attache démarrer à voiture
Et dans le livre, on a définit le paragraphe suivant :
Code:
démarrer :

rôles:

*object est une voiture
actions :

("on fait le traitement et on retourne un résultat :
")
retourne 1
Le verbe "Attacher" ajoute dynamiquement une méthode fonctionnelle à un objet.

Regardez bien l'exemple suivant.
Il applique les principes que je viens de vous décrire sur une espece projecteur.
On va ajouter à l'acteur cinéma (qui est un projecteur) dynamiquement une méthode fonctionnelle 'projection' mais aussi la caractéristique 'nbprojection'

L'espèce projecteur est un greffon, elle contient déjà les méthodes fonctionnelles : ouvrir, jouer, arrêter.

Code:
Prototypes 1.
3 :


Scéance :

Rôles :

("projecteur est un greffon graphique permettant d'afficher des vidéos sur la toile")
cinéma est un projecteur, x vaut 50 , y vaut 100
retour est un nombre
nbprojection est un nombre valant 0
Actions :

efface la toile
projette cinéma

("Evolution méthodes fonctionnelles liées au greffon")

retour vaut cinéma%ouvrir("/home/cpc/monfichier.
mpg")
retour vaut cinéma%jouer()
attends 10 secondes
retour vaut cinéma%arrêter()

("Evolution prototype 1")
attache nbprojection à cinéma
affiche nbprojection@cinéma

("Evolution prototype 2 ")
("Ajout d'une méthode fonctionnelle à un acteur")
attache incrémenterprojection à cinéma
"Voici le nombre de projection calculé :
" + cinéma%incrémenterprojection(1) !
"Voici la nombre de projection de l'acteur cinéma :
" + nbprojection@cinéma !

termine


incrémenterprojection :

Rôles :

*object est un cinéma
*x est un nombre
Actions :

nbprojection@object vaut nbprojection@object + x
retourne nbprojection@object
Tout ça sera implémenté dans la prochaine version alpha 1.3.

Bonne fêtes... et à l'année prochaine !

Senior Member
Messages : 340
Date d'inscription : 2010-08-31
Voir le profil de l'utilisateurhttp://zamirhlinotte.monsite-orange.fr/

Prochaine version : destination Linotte 1.3

le Thu 23 Dec - 12:19
j'ai rien compris, mais je sens que ça va être bien x) BONNES FETES
Posting Freak
Messages : 1188
Date d'inscription : 2004-12-09
Voir le profil de l'utilisateurhttp://langagelinotte.free.fr/

Prochaine version : destination Linotte 1.3

le Thu 23 Dec - 12:27
[quote=zamirh]j'ai rien compris, mais je sens que ça va être bien x) BONNES FETES[/quote]
Merci !

Ok, il faut que je trouve un exemple plus parlant !
Contenu sponsorisé

Re: Prochaine version : destination Linotte 1.3

Voir le sujet précédentRevenir en hautVoir le sujet suivant
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum