| | Concours #05 - Stupid language | |
|
+9Chlorodatafile red-error arthuro glcraft [TheDarkTiger] hyper Craki -Coco- onilink_ 13 participants | |
Auteur | Message |
---|
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Concours #05 - Stupid language Mar 6 Jan 2015 - 14:19 | |
| Concours #05 - Stupid language Stupid language>,[>,]<[.<] | Bienvenue dans ce 5ième concours. Cette fois, je vous propose d'écrire un langage de programmation simple mais ésotérique. Pour commencer, voici quelques exemples de langages ésotériques plus ou moins connus.
Le Brainfuck, surement le plus connus: hello world - Code:
-
++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++ ..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+. Le Ook! Afficher Hello - Code:
-
Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook! Ook. Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook. Ook. Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook! Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook. Ook. Ook? Ook. Ook? Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Piet, un langage ou on écris du code en dessinant sur une image Hello World en piet
Befunge, le langage de programmation a deux dimensions (vraiment excellent, je vous conseille de l'essayer avec un bon IDE comme fungus) Calcul du factoriel en befunge - Code:
-
0&>:1-:v v *_$.@ ^ _$>\:^ Whitespace, ou le langage le plus transparent qui soit Exemple de code whitespace
Pour ce qui est de la conception d'un langage ésotérique, il y a pas mal de doc et ressources sur le net (déjà tous les langages ésotériques ont des interpréteurs open source), mais je vais vous fournir quelques exemples/liens ici: -SimpleAsm bytecode compiler and interpreter (un petit compilateur d'asm très simplifié) -Little brainfuck interpreter -Kaleidoscope toy language (un petit langage fonctionnel)
Pour le dernier lien, ne prenez pas peur, inutile de faire un langage vraiment compilable ni même aussi complexe, mais pour tout langage "avancé", la conception est la même, donc si y en a que ça interesse... Il vous faudra créer un Abstract Syntaxical Tree, ou AST (arbre de syntaxe abstraite), qui permet de représenter votre langage dans une forme plus primitive. Faire un parseur, qui permettra de transformer votre code source en AST. Et enfin faire un interpreteur ou compilateur, qui utilise votre AST pour soit générer du code (Bytecode, Asm, ou C, ou C++, ou autre), soit directement l'executer.
Pour ceux qui n'arriveraient pas a écrire un compilateur/interpréteur, mais qui ont une idée précise d'un langage cool: -envoyez moi les spécifications du langage, avec documentation technique, syntaxe précise etc... -écrivez quelques codes d'exemples Cela sera compté comme une participation.
Important Le langage doit posséder un flux d'entrée, et un flux de sortie. Pas obligatoirement la console, mais il faut pouvoir interagir avec un programme écris dans votre langage.
| Contraintes
| | | Taille finale | Ne doit pas dépasser les 32Mio d'espace disque. Si vous faites un compilateur/interpréteur qui en nécessite un autre, il suffit de l'indiquer (et non pas l'inclure). | | | Durée | Vous avez jusqu’à mi février pour rendre votre concept/interpreteur/compilateur. Vous pouvez me l'envoyer par MP ou le poster ici. | | | Règlement | Doit être une création originale. Vous ne pouvez pas participer avec la création d'une autre personne ou que vous avez conçu antérieurement, sauf si vous apportez des modifications majeures. Si vous reprenez un concept peu connu citez la source. | Récompenses
| | Le gagnant recevra une clé pour Explodemon, ainsi qu'une coupe d'or virtuelle. | | | Les 3 personnes sur le podium obtiendrons une coupe virtuelle. | | | Tous les autres participants obtiendrons un ruban virtuel de participation. |
|
| | | -Coco- Utilisateur confirmé: Rang ***
Messages : 545 Localisation : Grenoble - Montpellier Projet Actuel : Orion VII - 0%
| Sujet: Re: Concours #05 - Stupid language Mar 6 Jan 2015 - 17:07 | |
| J'adore le concept !! Je vais essayer de participer du mieux que je peux, j'ai un début d'année assez occupé (vivent les partiels), mais j'aurai toujours du temps pour ce genre de choses ^^
Par contre j'ai quelques doutes sur l'accessibilité du concours en question, faut quand même avoir de sacrées bonnes bases en programmation dure, je vois mal faire ça sous GM ^^' _________________ Oh, snap.
|
| | | onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Concours #05 - Stupid language Mar 6 Jan 2015 - 18:22 | |
| Je sais pas, chaque langage a ses cotés pratique. En gml, si t'as une version avec execute_string, suffit de faire un transcodeur et ensuite interpréter le code avec la petite fonction magique. Après y a tellement de possibilités de langages, c'est surtout l'idée qui compte. Par exemple coder un interpréteur brainfuck, c'est vraiment pas la mort, quelque soit le langage ça reste très basique. Donc bon, suffit de connaître ses limites, et adapter en fonction de ça :p
Pis bon, comme expliqué plus haut, faut pas forcément faire un interpréteur. On peut très bien convertir le langage en un langage existant pour qu'il soit ensuite testable. Ce qui généralement n'est pas super sorcier (mais ça dépend encore une fois de ce que tu veux faire). |
| | | Craki Utilisateur confirmé: Rang ****
Messages : 1496 Localisation : Dans l’univers de métamatière
| Sujet: Re: Concours #05 - Stupid language Mar 6 Jan 2015 - 19:59 | |
| Rohlàlà, t’as même pas pensé à mettre en exigence le fait que le langage soit turing-complet (sans ça on a même pas de langage ). _________________ |
| | | -Coco- Utilisateur confirmé: Rang ***
Messages : 545 Localisation : Grenoble - Montpellier Projet Actuel : Orion VII - 0%
| Sujet: Re: Concours #05 - Stupid language Mar 6 Jan 2015 - 21:44 | |
| Quoique, sous GM je vois bien le truc où on pose des objets dans la room, et en fonction de la position des objets ou de leur type ça fait un truc différent x) (et pourquoi pas un flow graphe like ?) Bon, j'ai terminé mon interpréteur super stylé, j'écris le manuel (ça va être long) et j'envoie ça ! (Ben ouais, j'adore l'efficacité ) _________________ Oh, snap.
|
| | | hyper Utilisateur confirmé: Rang ****
Messages : 1457 Localisation : près de Nantes Projet Actuel : Super Note Aventure
| Sujet: Re: Concours #05 - Stupid language Mar 6 Jan 2015 - 21:51 | |
| J'essaierai de faire un truc, si j'arrive pas à créer le langage sous GM je posterai le concept quand même _________________ côt.
|
| | | onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Concours #05 - Stupid language Mar 6 Jan 2015 - 22:04 | |
| Hey cool -Coco- Sinon la nan osef qu'il soit turing complet. Le but est surtout d'avoir un truc fun (pis bon va prouver qu'un langage est turing complet aussi...). |
| | | [TheDarkTiger] Modérateur
Messages : 7420 Localisation : Essonne
| Sujet: Re: Concours #05 - Stupid language Mar 6 Jan 2015 - 23:07 | |
| Yes ! yes yes yes yes yes !
Bon, Où vais-je caler ça dans mon emploi du temps ... _________________ Bonne chance pour vos projets actuels ! Prêt à aider ceux qui en ont besoin ^^ l'antiqueBienvenue au 2629eme utilisateur : Mike Jones ! |
| | | -Coco- Utilisateur confirmé: Rang ***
Messages : 545 Localisation : Grenoble - Montpellier Projet Actuel : Orion VII - 0%
| Sujet: Re: Concours #05 - Stupid language Mer 7 Jan 2015 - 1:02 | |
| Hop là ! http://simpleupload.fr/?c=A07PZDc!k5hLC95cDonc voilà, j'ai fait un espèce d'interpréteur d'assembleur atroce ^^ Désolé d'avoir mis autant de temps à le poster, de fait je suis en train de faire un jeu du plus ou moins avec mon assembleur, mais c'est un peu la galère. Vous vous contenterez des exemples simples fournis pour le moment ^^ Attention, je renverrai probablement des trucs ! Tout d'abord, ce programme (c++) a été compilé pour LINUX (eh oui windows marche plus sur mon pc), donc la version windows arrivera plus tard. En attendant vous pouvez vous amuser à le recompiler je vous ai mis la source avec ^^ Et en fait c'est tout, à part ça l'interpréteur marche très bien. J'enverrai des programmes si j'arrive à les faire ^^ Bon courage pour réussir à coder un truc avec ça PS : lisez le manuel _________________ Oh, snap.
|
| | | onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Concours #05 - Stupid language Ven 9 Jan 2015 - 10:38 | |
| J'ai compilé sous windows sans trop encore faire attention a la source, y a quelques erreurs bizarres quand on execute tes programmes. Sinon il est sympa tout langage, j'aime bien sa sale gueule ahah :p |
| | | glcraft Utilisateur confirmé: Rang *****
Messages : 1698 Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P Projet Actuel : Jeu de survie avancé
||--------
| Sujet: Re: Concours #05 - Stupid language Sam 10 Jan 2015 - 2:59 | |
| j'ai compilé sous windows, les seul warning que j'ai eu c'est qu'il faut mettre unsigned int au lieu de int lorsqu'on compare des vector::size() (type size_t = unsigned int)
Sinon le langage est sympa. j'ai eu une erreur sur le plus ou moins. il a instant crash apres la premier sequence. |
| | | -Coco- Utilisateur confirmé: Rang ***
Messages : 545 Localisation : Grenoble - Montpellier Projet Actuel : Orion VII - 0%
| Sujet: Re: Concours #05 - Stupid language Sam 10 Jan 2015 - 11:47 | |
| J'ai vraiment envoyé le plus ou moins ? Je l'avais pas terminé et il buggait ^^ Après je sais pas trop d'où viennent certains bugs, y'a peut être des problèmes dans l'interpréteur. En tout cas pas d'inquiétude si le plus ou moins ne marche pas ^^ Et je vais probablement rajouter quelques fonctionnalités au langage aussi, pour pouvoir faire plus de trucs (en fait juste une pile pour stocker la position du pointeur data, ça permettrait de faire beaucoup plus de choses !) _________________ Oh, snap.
|
| | | arthuro Utilisateur confirmé: Rang ****
Messages : 1482 Localisation : Paris Projet Actuel : Diagon https://arthursonzogni.com/Diagon
| Sujet: Re: Concours #05 - Stupid language Lun 12 Jan 2015 - 20:42 | |
| Très bon thème cette compétition. Je pense pouvoir dire que je participe.
Ce sera en javascript. Ainsi vous pourrez tester en ouvrant une page web.
J'ai essayé quelques générateurs de parser en javascript mais rien que ne ma convaincue. Du coup j'en ai fait un à la main. Ça fait du bien de remettre en pratique (Il sont très très très loin les cours de théorie des langages)
Lexer : OK Parser : OK Analyse Contextuelle / Décoration : ... Executeur de programme : ...
J'aimerais bien arriver à faire des petites épreuves comme réaliser une certaine fonction avec ce langage. (Mais il faut voir ma motivation après ces dernière étapes. |
| | | glcraft Utilisateur confirmé: Rang *****
Messages : 1698 Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P Projet Actuel : Jeu de survie avancé
||--------
| Sujet: Re: Concours #05 - Stupid language Lun 12 Jan 2015 - 20:55 | |
| c'est cool si c'est en JS, ca changera un peu de d'habitude, ce'st open source et je suis en apprentissage du JS ^^. Si ca te dérange pas arthuro, je pourrais regarder le code après ? |
| | | onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Concours #05 - Stupid language Lun 12 Jan 2015 - 21:12 | |
| Bah le code t'y auras forcément accès pour tester le programme :p (faut juste lui demander de pas l'obfusquer quoi ) Content que tu participes Arthuro en tout cas Je vais essayer de prendre un peu de mon temps aussi, reste a trouver une idée de langage |
| | | arthuro Utilisateur confirmé: Rang ****
Messages : 1482 Localisation : Paris Projet Actuel : Diagon https://arthursonzogni.com/Diagon
| Sujet: Re: Concours #05 - Stupid language Lun 12 Jan 2015 - 21:56 | |
| - glcraft a écrit:
c'est cool si c'est en JS, ca changera un peu de d'habitude, ce'st open source et je suis en apprentissage du JS ^^. Si ca te dérange pas arthuro, je pourrais regarder le code après ?
Oui pas de soucis. - onilink a écrit:
Je vais essayer de prendre un peu de mon temps aussi, reste a trouver une idée de langage Razz
Une idée que je n'ai pas essayé mais que j'aurais souhaité faire, si cela peu te donner des idée, c'est un langage qui évalue des expressions récursives (langage sous-contexte) et produisant des figure géométrique 3D. L'idéal serait qu'il soit en javascript, il faut donc faire le visualiseur (WebGL three.js) Une sorte de L-système en faite. Exemple : ARBRE(n) = [ T1 ARBRE(n-1)] [ T2 ARBRE(n-1)] TIGE TIGE = CUBE T1 = translation(0.0,1.0,0.0) rotation((-0.5,-0.5,0.0),(0.0,0.0,-0.66)) T2 = translation(0.0,1.0,0.0) rotation((-0.5,-0.5,0.0),(0.0,0.0,+0.66)) (Je ne sais pas si vous pouvez voir l'arbre ^^) Je trouvais cela sympa. Je pense que tu trouvera une idée qui étonnera. |
| | | red-error Utilisateur confirmé: Rang ****
Messages : 1015 Projet Actuel :
| Sujet: Re: Concours #05 - Stupid language Mar 13 Jan 2015 - 16:08 | |
| Marrant comme concours. J'ai trouvé une idée mais comme je suis en exams je pense pas que je vais participer en code. L'idée serait un animateur avec un draw basé sur le clavier azerty pour les coordonnées. (donc lié à un écran ~3*10 points avec la dernière ligne comprenant ,;:! (fr) ou ,;:= (be) (équivalant)) Chaque lettre bougerai le curseur à sa position sur le clavier. (a est en haut à gauche, p à droite...) Première idée (pas encore très complet) - Spoiler:
L'écran est donc constitué de 10*3 cases : - Code:
-
azertyuiop qsdfghjklm wxcvbn,;:! Dessiner un rectangle : "draw"ap!wa les actions sont entre "" les temps d'attente (en secondes) sont en chiffres et font des transitions pour move et draw chaque ligne est un objet les actions sont lues dans l'ordre d'apparition les parenthèses marquent une profondeur, les parenthèses de même profondeur sont lues en même temps des actions peuvent être entre parenthèses En gros on lit tout jusqu'à rencontrer une pause. Une parenthèse créé un "thread" parallèle qui lira le contenu (on saute son contenu) Quelques actions : "draw" dessine sur l'objet actuel les points donnés reliés par une ligne "move" bouge l'objet actuel (le premier point dessiné étant l'origine ou (a) sinon) aux coordonnées données, avec glissement si un temps d'attente est spécifié "go" bouge comme move mais sans glissement "dot" dessine sur l'objet actuel un point sur la lettre donnée "remove" efface l'objet actuel 1"draw"awqdec"move"(2t1j1p"remove") Attend une seconde, puis "draw" un H (immédiatement) puis "move" le tout pendant 4 secondes puis le remove une fois qu'il a finit "draw"(w1a)"draw"(q1d)"draw"(e1c)"draw"(g1b)1"dot"t ou "draw"(w1a)(q1d)(e1c)(g1b)1"dot"t Ecrit (Hi) en dessinant les lignes en même temps durant 1 seconde, puis affiche le point sur le i - Code:
-
║z║r■yuiop ╠═╣f║hjklm ║x║v║n,;! Ce serai bien d'avoir une police monospace sur le forum Je sais qu'il y a des problèmes avec par exemple deux move en même temps, ou un draw durant un move. "draw"a1p("move"a1w)1a1p ou encore "draw"a1p(1a1p)("move"a1w) Ceci affichera un Z, move mets à jours les coordonnées en cascade en fin de course (move finit prioritairement) ("draw"a1p1a1p)("move"a1w) Ceci affichera un _, car le move n'est pas dans le même () que le draw (chaque () retient ses coordonnées) Des moves qui ne disent pas la même chose mais qui s'exécutent en parallèle s'additionnent visuellement Entrées utilisateur (pour coller avec l'énoncé XD) "draw"("read") "read" renvoie les entrées utilisateur en dessin azerty et remplace l'input dans le code une fois validé par enter Ceci le dessine en temps réel Pour le dessiner une fois finit seulement "draw"["read"] Les [] sont comme () mais [] attendent que les actions à l'intérieur se finissent "valeur"=["read"] Stocke les points pour plus tard [note pour moi-même : Il manque (quand j'ai le temps) : -boucles conditionnelles -[] pour attendre la fin de l'exécution de ce tout qu'il y a dedans -des labels pour les lignes d'objets pour les réutiliser plus tard et en temps que fonctions -déplacements relatifs et non absolus -rotations, couleurs et autre folies -fill une case -peut-être inverser les "mots" et les mots normaux, ça fait juste bizarre d'avoir des noms de variables en "variable"] Il reste des trucs à spécifier, et d'autres fonctionnalités à ajouter, mais voilà l'idée en gros.
|
| | | onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Concours #05 - Stupid language Mer 14 Jan 2015 - 12:42 | |
| L'idée est vraiment cool, par contre je suis pas très fan des mots clés ajoutés a la syntaxe, on perd un peu le coté ésotérique (alors que l'idée colle parfaitement) Sinon arthuro ouai j'y ai déjà pensé, mais ça existe déjà, j'avais vu ça dans un soft de génération de fractales, c'était bien fun (mais pas tellement ésotérique finalement :b) Perso je verrais bien un langage conçu pour synthétiser de l'audio procéduralement, donc vais surement partir sur ça :b |
| | | Chlorodatafile Utilisateur confirmé: Rang *****
Messages : 2929 Localisation : Belfort Projet Actuel :
Paralights
| Sujet: Re: Concours #05 - Stupid language Mer 14 Jan 2015 - 19:38 | |
| J'avais créé un interpréteur XML -> LUA l'autre fois, je vais voir à tet faire un truc rapidement, en java cette fois car j'utilise ce que j'ai sous la main, désolé. Sinon c'est en Lua, fin bon. |
| | | -Coco- Utilisateur confirmé: Rang ***
Messages : 545 Localisation : Grenoble - Montpellier Projet Actuel : Orion VII - 0%
| Sujet: Re: Concours #05 - Stupid language Sam 17 Jan 2015 - 10:41 | |
| (N'oubliez pas que ce post a été édité et regardez la fin, c'est le plus important!) Hey hey hey ! J'ai rajouté quelques opérandes à mon langage, maintenant il a un peu plus de flexibilité (tout en restant peu pratique (ça reste de l'assembleur dégueulasse), mais on peut faire plus de choses). Pour vous hyper un peu en attendant que je fasse une compil' windows, voici le code parfaitement fonctionnel d'un Morpion 2 joueurs avec détection de victoire : - Code:
-
s$0$fd#isnc$9$kqsgfds$1$fds$3$fdsxis$4$fdsyisgmsxc1k$11$vddmsxc2k$11$vddmsxc3k$11$s$5$fdji#$11$vmsyc1k$12$vbbmsyc2k$12$vbbmsyc3k$12$ s$6$fdji#$12$vmc k$22$s$7$fdji#$22$s$2$ggggggc1k$13$j$14$#$13$w2vwXsn+j$41$ji#$14$w1vwOsn+j$41$ji#qsgfds$8$fdq#g | | $10$ -----$10$ | | $10$ -----$10$ | | $10$$10$@ #$41$sgmcX!k$42$ddcX!k$42$ddcX!k$42$j$40$#$42$vmbbcX!k$43$ddcX!k$43$ddcX!k$43$j$40$#$43$vmbbbbcX!k$44$ddcX!k$44$ddcX!k$44$j$40$#$44$ vmcX!k$45$bbcX!k$45$bbcX!k$45$j$40$#$45$vmddcX!k$46$bbcX!k$46$bbcX!k$46$j$40$#$46$vmddddcX!k$47$bbcX!k$47$bbcX!k$47$j$40$#$47$ vmcX!k$48$bbddcX!k$48$bbddcX!k$48$j$40$#$48$vmddddddcX!k$49$bbggcX!k$49$bbggcX!k$49$j$40$#$49$j$51$#$40$s$200$fdjq#$51$sgm cO!k$52$ddcO!k$52$ddcO!k$52$j$50$#$52$vmbbcO!k$53$ddcO!k$53$ddcO!k$53$j$50$#$53$vmbbbbcO!k$54$ddcO!k$54$ddcO!k$54$j$50$ #$54$vmcO!k$55$bbcO!k$55$bbcO!k$55$j$50$#$55$vmddcO!k$56$bbcO!k$56$bbcO!k$56$j$50$#$56$vmddddcO!k$57$bbcO!k$57$bbcO!k$57$j$50$ #$57$vmcO!k$58$bbddcO!k$58$bbddcO!k$58$j$50$#$58$vmddddddcO!k$59$bbggcO!k$59$bbggcO!k$59$j$50$#$59$ji#$50$s$201$fdjq #$0$Bienvenue au jeu sophistiqué de Morpion !$10$Vous devez aligner 3 pions.$10$Se joue en joueur contre joueur.$10$$10$@ #$1$Au tour du joueur 1.$10$@#$2$#$3$Coordonnée X : @#$4$Coordonnée Y : @#x*#y*#n$0$#$5$Erreur : Coordonnée x invalide (1<=x<=3)$10$@ #$6$Erreur : Coordonnée y invalide (1<=y<=3)$10$@#$7$Erreur : un pion a déjà été joué à cet endroit.$10$@#$8$Fin de partie !$10$@ #$200$Victoire du joueur 1 !$10$@#$201$Victoire du joueur 2 !$10$@#dadc@kejd#er (attention, j'ai rajouté 3 opérations (fort utiles) depuis le dernier build, donc ça ne marchera pas !) J'ai également corrigé le bug des fonctions qui ne reprenaient pas tout à fait au bon endroit ! (C'est à noter que j'ai volontairement enlevé les commentaires de ce code pour le rendre le plus compact possible, la vraie version est bien plus verbeuse ! (sinon c'est pas possible à coder)) Bref, maitenant que j'ai mon petit ordi pourri mais avec windows dessus je pourrai vous le compiler, mais pas tout de suite (c'est relou, faut redémarrer et tout ) Je vais en plus faire quelques programmes dessus, et je pense rajouter un moyen de faire des appels récursifs (utiliser une pile pour les appels de fonctions plutôt qu'une simple variable, pour le moment on ne peut pas appeler une fonction dans une fonction) Bon allez sur ce, amusez-vous bien ! ----------------------------------------------------------------------------------------------------- (Gros et sale EDIT, j'ai vu qu'on pouvait pas faire de double post. Du coup mon effet est ruiné, mais tant pis, je laisse. Considérez cette partie du message comme un nouveau post !) ParticipationAvec le hype du double post ! J'ai enfin totalement terminé mon interpréteur ! Je peux donc vous présenter ((assez)fièrement) : Le Charssembleur.Télécharger le programmeQu'est ce que le Charssembleur ? Le charssembleur est un langage entre l'assembleur et le brainfuck : il contient les inconvénients des deux ! En voici les caractéristiques principales : -chaque instruction, étiquette, variable, etc. est codée avec un seul caractère ! Ainsi, ça nous permet d'obtenir un code super compact (et super illisible) (se référer au post précédent pour voir la tronche du morpion) -il est entièrement auto-contenu : chaque caractère présent dans le fichier du code est également présent dans la RAM. Il n'y a ni plus ni moins de RAM dans le programme : on peut donc lire et écrire sur chaque caractère du fichier programme, ainsi que se déplacer librement dedans ! -il est interprété à la volée. Le point précédent a du vous faire vous poser la question : mais est ce que je peux modifier le code de mon programme en direct ? La réponse est : OUI ! D'ailleurs, il est même conseillé de le faire (voir l'exemple plusoumoins.prog, ou j'écris du code à l'exécution pour permettre de faire des comparaisons de 2 variabes.) -il est turing-complet. Ben ouais maggle ! Là dessus, voilà un beau petit Hello World en charssembleur : - Code:
-
sc#dadc$0$!kdq#cHello World !$10$$0$ La version avec de commentaires pour comprendre : - Code:
-
sc; data -> c : data pointe sur le 'H' #d; etiquette de début de boucle a; afficher le caractère en cours d; se déplacer vers la droite (caractère suivant) c$0$; test : est-ce que je pointe sur le caractère de valeur 0 ? !; si ce n'est pas le cas : kd; sauter à l'étiquette d q; sinon quitter (fin du programme) #c; étiquette c : pointeur sur la chaîne. Hello World !$10$$0$; La chaîne. $10$ est le caractère de retour à la ligne. $0$ est celui de fin de chaîne, choisi arbitrairement. J'aurai tout aussi bien pu lui dire @ (à également modifier après le c de test du coup)
(Note : le retours à la ligne n'affectent pas l'exécution. Elle permettent juste une meilleure organisation, ainsi que de profiter des fonctions de déplacement du pointeur data en 2 dimensions dans le programme (secondaire mais utile).) L'archive comprend : -Le code source -un executable windows -un executable linux -des programmes d'exemple, et d'autres plus sérieux (comme un morpion et un plus ou moins !) A noter : Les programmes fournis ont été créés et testés sous linux, là où ils fonctionnent parfaitement. Sous windows, l'exécution est bonne cependant la console windows, contrairement à celle de linux, ne gère pas les accents ! Du coup si vous exécutez un de mes codes sous windows, ben les accents seront tout moches. Sur ce, bonne nuit, et bon courage aux autres participants, j'attends avec impatience de voir ce qui va sortir de ce concours PS : maintenant que l'interpréteur est totalement terminé, je pourrai vous fournir des codes de programmes directement sur le cbna entre les balises code, vous aurez juste à le copier-coller dans un fichier texte pour qu'il fonctionne ! PPS : Vous avez des questions ? J'ai des réponses ! N'hésitez pas à les poster ! _________________ Oh, snap.
|
| | | -Coco- Utilisateur confirmé: Rang ***
Messages : 545 Localisation : Grenoble - Montpellier Projet Actuel : Orion VII - 0%
| Sujet: Re: Concours #05 - Stupid language Mar 20 Jan 2015 - 2:17 | |
| Bon je double poste histoire de faire remonter un peu le topic. Et aussi parce que si j'édite mon post précédent je dépasse la limite de caractères autorisés ! (Et puis, ça me ferait plaisir un peu de feedback ! Je passe des heures à faire des programmes et personne me répond ) Donc voilà, dans ma grande motivation lors des voyages en train, j'ai programmé un magnifique DEMINEUR en charssembleur, dont voici le code : - Code:
-
s$0$fds$7$fdij$180$#bffs$8$fdsiicdk>cgk<chk^cbkVcqkqcukucfkP#sjb#qq #>sx+c$17$!ksw$1$js#<sx-c$0$!ksw$16$js#^sy-c$0$!ksw$10$js#Vsy+c$11$!ksw$1$js#g LLLLLLLLLLLLLLLLLL L$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$L L$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$L L$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$L L$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$L L$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$L L$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$L L$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$L L$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$L L$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$L L$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$LX LLLLLLLLLLLLLLLLLL#x$8$#y$5$#i*#o$160$#$0$Le demineur par -Coco-$10$Gameplay :$10$Entrez 'd' pour vous déplacer d'une case vers la droite$10$ 'g' pour une case vers la gauche$10$'h' pour une case vers le haut$10$'b' pour une case vers le bas$10$'f' pour poser/enlever un drapeau$10$ 'x' pour découvrir la case$10$'q' pour quitter la partie$10$$10$@#dadc@!kdr#$1$$10$#$2$X#$3$ 12345678*#$4$P#$5$<#$6$^#$7$Entrez une lettre pour commencer la partie : @#$8$$10$$10$Input => @#$253$$10$Yay, vous avez gagné ! :)$10$@#$252$$10$Oh noes, vous avez perdu ! :($10$@ #fs$1$asylscdesiw$1$sgbd#$20$mcLk$21$c$0$k$23$c$1$k$23$c$2$k$23$c$3$k$23$c$4$k$23$c$5$k$23$c$6$k$23$c$7$k$23$c$8$k$23$c$9$k$23$ j$24$#$21$sifc!k$211$s$5$a#$211$si+s$1$avdcXk$22$dj$20$#$22$sxlscdesiw$1$#$220$sifck$221$si+s$3$aj$220$#$221$s$6$ar#$23$s$2$avdj$20$ #$24$c$10$s$3$k$241$vmc$11$s$3$dk$241$vmc$12$s$3$ddk$241$vmc$13$s$3$dddk$241$vmc$14$s$3$ddddk$241$vmc$15$s$3$dddddk$241$vm c$16$s$3$ddddddk$241$vmc$17$s$3$dddddddk$241$vmc$18$s$3$ddddddddk$241$vmc$19$s$3$dddddddddk$241$vms$4$j$241$#$241$avdj$20$ #Psxlscdesgdbmsiw$1$#$150$sifck$151$+vdmj$150$#$151$siw$1$sylscdevm#$152$sifck$153$+vbmj$152$#$153$vc$10$kbc$11$kbc$12$kbc$13$kbc$14$kbc $15$kbc$16$kbc$17$kbc$18$kbc$20$k$154$c$21$k$154$c$22$k$154$c$23$k$154$c$24$k$154$c$25$k$154$c$26$k$154$c$27$k$154$c$28$k$154$c$29$k$154$ ++++++++++++++++++++jb#$154$--------------------jb#usxlscdesgdbmsiw$1$#$160$sifck$161$+vdmj$160$#$161$siw$1$sylscdevm#$162$sifck$163$+vbm j$162$#$163$vfXjb#Xc$0$kYc$10$kZc$11$kZc$12$kZc$13$kZc$14$kZc$15$kZc$16$kZc$17$kZc$18$kZc$19$kZc$20$kZc$21$kZc$22$kZc$23$kZc$24$kZc $25$kZc$26$kZc$27$kZc$28$kZc$29$kZcLkZ++++++++++c$19$k$255$so-c$0$k$254$r#Ym++++++++++so-c$0$k$254$vmhgfXvmhfXvmhdfXvmgfXvmdfXvm bgfXvmbfXvmbdfXvmv#Zr#$180$soc$140$kbsi?fmsgdbm#$181$sic$0$k$182$-vbmj$181$#$182$si?fM#$183$sic$0$k$184$-vdmj$183$#$184$ vc$9$k$180$m#$188$so-vw$9$hgf$189$df$189$df$189$bf$189$bf$189$gf$189$gf$189$hf$189$j$180$#$189$c$9$krcLkr+r#cc*r@#m c$0$krc$1$krc$2$krc$3$krc$4$krc$5$krc$6$krc$7$krc$8$krc$9$kr++++++++++jm#Mc$0$krc$1$krc$2$krc$3$krc$4$krc$5$krc$6$krc$7$krc$8$k rc$9$krc$10$krc$11$krc$12$krc$13$krc$14$krc$15$kr++++++++++++++++jM#rr#$255$ffs$252$fdq#$254$ffs$253$fdq Et si vous ne vous sentez pas l'âme d'un guerrier, voici le code avec des commentaires : - Code:
-
s$0$fd; afficher l'intro s$7$fdi; afficher entrez lettre, input. (remplace l'@ de fin) j$180$; aller au placement de mines #b; boucle principale ff; afficher la grille s$8$fdsii; afficher Input, i:=input; cdk>cgk<chk^cbkV; check d,g,h,b, jump e,g,h,b cqkq; si q on quitte cuku; si u on découvre cfkP; si f on flagge
#s; suite jb; retour boucle principale #q; q;
#>; déplacement droite sx+c$17$!ksw$1$js; x:=x+1. si x!=17 on continue, sinon x:=1 et on continue (suite) #<; deplacement gauche sx-c$0$!ksw$16$js; #^; déplacement haut sy-c$0$!ksw$10$js; #V; deplacement bas sy+c$11$!ksw$1$js;
#g; grille de 16x10 entourée de L LLLLLLLLLLLLLLLLLL L$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$L L$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$L L$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$L L$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$L L$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$L L$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$L L$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$L L$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$L L$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$L L$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$$0$LX LLLLLLLLLLLLLLLLLL
#x$8$#y$5$#i*; x : position x. y : position y. i : variable multiusage #o$160$; le nombre de cases à découvrir pour gagner
#$0$Le demineur par -Coco-$10$ Gameplay :$10$ Entrez 'd' pour vous déplacer d'une case vers la droite$10$ 'g' pour une case vers la gauche$10$ 'h' pour une case vers le haut$10$ 'b' pour une case vers le bas$10$ 'f' pour poser/enlever un drapeau$10$ 'x' pour découvrir la case$10$ 'q' pour quitter la partie$10$$10$@
#dadc@!kdr; affichage de chaînes terminées par @ #$1$$10$; un saut à la ligne classico #$2$X; un X : pour l'affichage #$3$ 12345678*; les nombres à afficher #$4$P; un P : pour l'affichage (drapeaux) #$5$<; les signaux de position #$6$^; #$7$Entrez une lettre pour commencer la partie : @ #$8$$10$$10$Input => @ #$253$$10$Yay, vous avez gagné ! :)$10$@ #$252$$10$Oh noes, vous avez perdu ! :($10$@
#f; affichage de la grille s$1$a; affiche retour chariot sylscde; on met la valeur de y dans le compare universel siw$1$; i:=1 sgbd; en g, début grille #$20$; boucle m; on mémorise cLk$21$; L : retour à la ligne c$0$k$23$c$1$k$23$c$2$k$23$c$3$k$23$c$4$k$23$c$5$k$23$c$6$k$23$c$7$k$23$c$8$k$23$c$9$k$23$; 0,1,2,3,4,5,6,7,8,9 : on saute en 23 (affiche X) j$24$; on tente d'afficher le numéro #$21$; etiquette retour ligne sifc!; si i!=y (compare univ) k$211$; on affiche retour direct s$5$a; on affiche < #$211$si+s$1$avdcXk$22$dj$20$; i:=i+1, on affiche un retour, on retourne sur la grille et on se déplace à droite 1 fois, on regarde si c'est la fin, sinon on se redécale, puis on boucle
#$22$; instruction arrêt, affichage de ^ sxlscde; on met la valeur de x dans le compare universel siw$1$; i:=1 #$220$ sifc; si i=y k$221$; on saute en 221 si+; sinon i:=i+1 s$3$aj$220$; on affiche espace et on boucle #$221$ s$6$ar; on affiche ^, on dépile, et on s'arrête
#$23$s$2$avdj$20$; on affiche X, on retourne sur la grille et on se déplace à droite #$24$c$10$s$3$k$241$vm; si c'est 10 on affiche espace (3), puis retour à la grille c$11$s$3$dk$241$vm; si c'est 11, etc.. c$12$s$3$ddk$241$vm; c$13$s$3$dddk$241$vm; c$14$s$3$ddddk$241$vm; c$15$s$3$dddddk$241$vm; c$16$s$3$ddddddk$241$vm; c$17$s$3$dddddddk$241$vm; c$18$s$3$ddddddddk$241$vm; c$19$s$3$dddddddddk$241$vm; jusqu'à 19 s$4$j$241$; si c'est rien de tout ça alors c'est un drapeau, on l'affiche via 241 #$241$avdj$20$; on affiche, blabla
#P; fonction drapeau sxlscde; x dans comparateur universel sgdbm; on va en g (début grille), on retient siw$1$; i:=1 #$150$ si; fck$151$+vdmj$150$; si i=x alors jump 151 sinon i:=i+1, on se déplace à droite, boucler #$151$ siw$1$; i:=1 sylscde; y => comparateur universel vm; retour position dans g #$152$ si; fck$153$+vbmj$152$; si i=y alors jump 153 sinon i:=i+1, on se déplace en bas, boucler #$153$; à ce stade, s est sur la bonne case v; on se déplace au bon endroit et on dépile c$10$kbc$11$kbc$12$kbc$13$kbc$14$kbc$15$kbc$16$kbc$17$kbc$18$kb; si c'est découvert on retourne à la principale c$20$k$154$c$21$k$154$c$22$k$154$c$23$k$154$c$24$k$154$c$25$k$154$c$26$k$154$c$27$k$154$c$28$k$154$c$29$k$154$; si y'a déjà un drapeau on l'enleve ++++++++++++++++++++; (+20) jb; retour boucle principale #$154$ --------------------; (-20) jb; retour boucle principale
#u; sxlscde; x dans comparateur universel sgdbm; on va en g (début grille), on retient siw$1$; i:=1 #$160$ si; fck$161$+vdmj$160$; si i=x alors jump 161 sinon i:=i+1, on se déplace à droite, boucler #$161$ siw$1$; i:=1 sylscde; y => comparateur universel vm; retour position dans g #$162$ si; fck$163$+vbmj$162$; si i=y alors jump 163 sinon i:=i+1, on se déplace en bas, boucler #$163$; à ce stade, s est sur la bonne case v; on dépile et on va au bon endroit fX; on appelle la fonction X (découvrir récursif) jb; retour boucle
#X; fonction récursive de découvrage c$0$kY; si c'est un 0 on balance du récursif c$10$kZc$11$kZc$12$kZc$13$kZc$14$kZc$15$kZc$16$kZc$17$kZc$18$kZc$19$kZ; c$20$kZc$21$kZc$22$kZc$23$kZc$24$kZc$25$kZc$26$kZc$27$kZc$28$kZc$29$kZ; si y'a un drapeau ou une case découverte on Z cLkZ; Si c'est un L (bord de la grille) on s'arrête (Z=stop) ++++++++++c$19$k$255$so-c$0$k$254$r; sinon on découvre la case et stahp, si o--=0 go 254 ; si c'est 19 (mine découverte) on va en 255 (perdu) #Y m ++++++++++so-c$0$k$254$vm; si o--=0 go 254 hgfXvmhfXvmhdfXvm; récursif sur le haut gfXvmdfXvm; récursif sur le milieu bgfXvmbfXvmbdfXvmv; récursif sur le bas, retour au milieu, dépile ;hfXv; #Z r;
#$180$; début de la boucle de placement de mines soc$140$kb; si mines placées = 20, stahp si?fm; sgdbm; #$181$ sic$0$k$182$-vbmj$181$; si i=0 next, sinon i--, on va vers le bas #$182$ si?fM #$183$ sic$0$k$184$-vdmj$183$ #$184$ v c$9$k$180$m; check si ya dja une mine #$188$ so-v w$9$; point=9 hgf$189$df$189$df$189$bf$189$bf$189$gf$189$gf$189$hf$189$; +1 tout autour ;jb j$180$
#$189$ c$9$krcLkr+r;
#cc*r@; fonction compare universelle. Remplacer l'* par ce que vous voulez
#m; modulo 10 c$0$krc$1$krc$2$krc$3$krc$4$krc$5$krc$6$krc$7$krc$8$krc$9$kr ++++++++++jm; #M; modulo 16 c$0$krc$1$krc$2$krc$3$krc$4$krc$5$krc$6$krc$7$krc$8$krc$9$krc$10$krc$11$krc$12$krc$13$krc$14$krc$15$kr ++++++++++++++++jM;
#rr #$255$ ffs$252$fdq; #$254$ ffs$253$fdq; (Il suffit de copier ce code dans un fichier texte et de le mettre en paramètre du programme charssembleur (cf post précédent)) Ca m'a permis de faire une application directe de la récursivité en charssembleur ! (En effet, découvrir une case vide va découvrir récursivement toutes les cases vides autour). Y'a de la détection de victoire et de défaites. Compte tenu de la structure de la chose, j'ai opté pour un nombre fixe de cases et de mines, mais si vous comprenez quelque chose vous pouvez le modifier (Bon par contre pour le gameplay j'ai fait ce que j'ai pu, h,b,g,d pour haut bas gauche droite, u pour découvrir une case, f pour mettre un drapeau. Par contre ça devient rigolo quad on s'aperçoit qu'on peut rentrer plusieurs caractères à la suite genre chaîne, et qu'ils seront exécutés 1 par 1 ! (par ex "dudududu" va aller à droite et découvrir les cases plusieurs fois d'affilée)) (Ah et aussi, j'ai eu vraiment la flemme de faire en sorte qu'on commence sur une case vide, donc tous les placements sont aléatoires. Faut avoir un peu de chance au début !) _________________ Oh, snap.
|
| | | [TheDarkTiger] Modérateur
Messages : 7420 Localisation : Essonne
| Sujet: Re: Concours #05 - Stupid language Lun 26 Jan 2015 - 1:24 | |
| ça à l'air sympa ça ! Je testerais dès que j'aurais un peu de temps...
EDIT : ça me fait penser que je gâte trop l'utilisateur, je vais virrer les floats et les strings du langage... Ou alors, je fait des chaines C like, et des "float" sur deux octets en virgule fixe... Hum... tasty. _________________ Bonne chance pour vos projets actuels ! Prêt à aider ceux qui en ont besoin ^^ l'antiqueBienvenue au 2629eme utilisateur : Mike Jones ! |
| | | onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Concours #05 - Stupid language Lun 26 Jan 2015 - 12:19 | |
| Vraiment cool ton langage Coco, il correspond bien a ce que j'attendais, en plus y a le manuel et tout :p Tout a l'air de bien fonctionner chez moi en tout cas, ça va être serré pour faire mieux |
| | | -Coco- Utilisateur confirmé: Rang ***
Messages : 545 Localisation : Grenoble - Montpellier Projet Actuel : Orion VII - 0%
| Sujet: Re: Concours #05 - Stupid language Lun 26 Jan 2015 - 17:49 | |
| J'aime faire les choses bien ! Allez je suis joueur, avec un pote on avait eu une idée pas mal pour un langage bien atroce, mais comme j'ai trop la flemme de créer un interpréteur (je me réserve pour le projet Génie Logiciel de la 2A de l'imag ), je partage l'idée avec vous si vous êtes chauds mais en manque d'inspiration. Ce serait de faire un langage plutôt C-like, mais qui de fait ne fait pas ce que tu veux : genre tu switches tous les mots clés. Par exemple, mettre void au lieu de return, (int) au lieu de +, return au lieu de {, + au lieu de (, etc. (mention spéciale si c'est pas une permutation logique !) Je pense que ça serait assez terrible comme langage ^^ Par contre là ça demande du haut level en interprétation, j'ai ni la foi ni le temps de me lancer là dedans _________________ Oh, snap.
|
| | | onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Concours #05 - Stupid language Lun 26 Jan 2015 - 18:04 | |
| Suffit de faire un transcodeur sinon, tu génères du C et tu compiles avec gcc :p
Perso j'aurais bien aimé faire un langage basé sur l'aléatoire. Genre tu lui dis de faire une instruction, il a X% de chances de la faire, mais aussi N% de chance de faire autre chose (qui a plus ou moins un rapport avec l'instruction).
Du coup, la difficulté serait de réussir a faire un algo qui fonctionne tout le temps! x)
|
| | | hyper Utilisateur confirmé: Rang ****
Messages : 1457 Localisation : près de Nantes Projet Actuel : Super Note Aventure
| Sujet: Re: Concours #05 - Stupid language Lun 9 Fév 2015 - 15:23 | |
| Alors ce concours ? Je pourrais peut-être aider à faire des reviews pour le prochain concours si le thème ne m'inspire pas. (tiens aussi, je viens de remarquer qu'il n'a pas été post-ité) _________________ côt.
|
| | | onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Concours #05 - Stupid language Lun 9 Fév 2015 - 16:13 | |
| Ben on est pas encore mis février Dans tous les cas je le laisserais peut être plus longtemps mais je débuterais un nouveau concours la semaine prochaine. J'ai déjà un thème donc c'est bon a ce niveau. |
| | | hyper Utilisateur confirmé: Rang ****
Messages : 1457 Localisation : près de Nantes Projet Actuel : Super Note Aventure
| Sujet: Re: Concours #05 - Stupid language Lun 9 Fév 2015 - 16:26 | |
| C'est quand même inquiétant d'avoir moins d'une page sur un concours qui date de plus d'un mois, surtout d'oni _________________ côt.
|
| | | onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Concours #05 - Stupid language Lun 9 Fév 2015 - 16:32 | |
| Ah ben le public visé était assez restreint de base, mais bon y a déjà une participation complète c'est pas mal :p
|
| | | hyper Utilisateur confirmé: Rang ****
Messages : 1457 Localisation : près de Nantes Projet Actuel : Super Note Aventure
| Sujet: Re: Concours #05 - Stupid language Lun 9 Fév 2015 - 16:34 | |
| Héhé, je viens de penser que si personne d'autre ne rend de participation, je finirai obligatoirement avec un trophée de bronze Edit: ah oui mince il doit y avoir 3-4 concepts de postés ici _________________ côt.
|
| | | Contenu sponsorisé
| Sujet: Re: Concours #05 - Stupid language | |
| |
| | | | Concours #05 - Stupid language | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |