WarGames [Serveur & Client ]

WarGames [Serveur & Client ] - Divers - Programmation

Marsh Posté le 25-10-2010 à 11:15:39    

Bonjour,
j'ai passé ma journée d'hier à écrire un petit programme pour retrouver l'ambiance de WarGames.
 
Mon objectif est de programmer le serveur Wopr et un client de connexion si besoin.
Comme mes connaissances sont minimes en informatique, je viens vous demander comment vous procéderiez ?
Quel technique/technologie exploiter ? ... Etc.
Comment organiser mon projet ? ... Etc.
Je souhaite réaliser ce projet de manière réaliste.
Merci.
 
 
Le résultat d'hier :

                                    NORAD
      Nous sommes le 25/10/2010, il est 11 heures 14 minutes 20 secondes.
 
Alert Condition
 
DEFCON_1
DEFCON_2
DEFCON_3
DEFCON_4
DEFCON_5 <= Selected NO_EMERGENCY
 
--------------------------------------------------------------------------------
 
                         War Operation Plan Response
 
Geetings Professor Falken.


Ou F1..F5 permet de changer de niveau d'alerte.

Reply

Marsh Posté le 25-10-2010 à 11:15:39   

Reply

Marsh Posté le 25-10-2010 à 13:20:09    

Projet sympa ;)
Mais tu veux faire quoi après ? Gérer l'IA du WOPR sur une partie d'échec, faire jouer le wopr contre lui même au morpion, ...  
 

Reply

Marsh Posté le 25-10-2010 à 14:21:42    

antac a écrit :

Projet sympa ;)
Mais tu veux faire quoi après ? Gérer l'IA du WOPR sur une partie d'échec, faire jouer le wopr contre lui même au morpion, ...  
 


 
L'objectif est de développer une I.A. forte... Pourquoi ? ... J'ai rien d'autre à faire et puis, j'aimerais avoir l'avis un spécialiste sur le comportement à adopter par la concience en présence d'une telle intelligence, ... Quasi parfaite. (c'est pas simple ... Si ?)
 
Bref, WarGames est pour moi un passage pour apprendre à développer un environnement pour L'I.A et L'I.A elle même.
 
Soit, jouer au échec n'est pas exclue. Quant à faire jouer le Wopr contre lui même, ce ne sera que dans le but de lui enseigner que : "A strange game. The only winning move is not to play.".
 
Et faire avancer la science, c'est pas exclu non plus.
 
En espérant avoir répondu à la question.
 

Reply

Marsh Posté le 26-10-2010 à 20:40:48    

Hello !  :hello:  
 
Un screenshot pour introduire...

                                    NORAD
      Nous sommes le 26/10/2010, il est 20 heures 26 minutes 47 secondes.
 
Alert Condition
 
DEFCON_1
DEFCON_2
DEFCON_3
DEFCON_4
DEFCON_5 <= Selected NO_EMERGENCY
 
--------------------------------------------------------------------------------
               North American Aerospace Defense Command (NORAD)
                     Try 'Help' for more information.
                                  Help of NORAD
 
                     Command available :
                                          Help [ command name ]
                                          List [ class name ]
                                          Info [ class name ]
                                          Create [ class name ]
                                          Set [ object id ]
                                          get [ object id ]
 
              North American Aerospace Defense Command (NORAD)


 
 
Les specifications avec Ada :
Listes des fichiers :
src/lib/WarGames/wargames.ads
src/lib/WarGames/wargames-norad.ads
src/lib/WarGames/wargames-norad-console.ads
src/lib/WarGames/wargames-wopr.ads
 
Sources :

Code :
  1. package WarGames is
  2.   pragma Pure (WarGames);
  3. end WarGames;
  4. package WarGames.NORAD is
  5.  
  6.   type T_LertCon is (DEFCON_1,
  7.                      DEFCON_2,
  8.                      DEFCON_3,
  9.                      DEFCON_4,
  10.                      DEFCON_5,
  11.                      AD_EMERGENCY,
  12.                      D_EMERGENCY,
  13.                      NO_EMERGENCY);
  14.   subtype T_Defcon is T_LertCon range DEFCON_1..DEFCON_5;
  15.   subtype T_EmergCon is T_LertCon range AD_EMERGENCY..NO_EMERGENCY;
  16.   task LertCon_Ctrl is
  17.      entry DefSet(New_Condition : in T_DefCon);
  18.      entry DefGet(New_Condition : out T_DefCon);
  19.      entry EmergSet(New_Condition : in T_EmergCon);
  20.      entry EmergGet(New_Condition : out T_EmergCon);
  21.      entry Halt;
  22.   end LertCon_Ctrl;
  23. private
  24.   DefCon : T_DefCon := DEFCON_5;
  25.   EmergCon : T_EmergCon := NO_EMERGENCY;
  26. end WarGames.NORAD;
  27. package WarGames.NORAD.Console is
  28.   procedure Main;
  29. end WarGames.NORAD.Console;
  30.  
  31. package WarGames.WOPR is      
  32.   procedure Main;      
  33. end WarGames.WOPR;


 
Bon tout reste à faire, mais j'ai quand même pas mal hésité pour établir la dépendance des paquetages.
Alors justement, quelqu'un en pense quelque chose ?

Reply

Marsh Posté le 26-10-2010 à 20:52:17    

Ah, oui, alors, en fait, j'ai fait dépendre le WOPR du NORAD et non l'inverse.
Après j'ai fait une machine abstraite nommé Armament.Weapon. mais je l'ai pas intégré tout de suite.


Message édité par Profil supprimé le 26-10-2010 à 21:00:46
Reply

Marsh Posté le 27-10-2010 à 13:17:05    

ADA est un bon langage. Maintenant c'est pas le plus évident à appréhender, surtout en ce qui concerne le réseau...  
 
La gestion d'une IA sur une partie de morpion est assez simple. C'est nettement plus compliqué sur une partie d'échec, surtout en ce qui concerne le principe même du WOPR est l'apprentissage par renforcement.
 

Reply

Marsh Posté le 27-10-2010 à 17:15:57    

antac a écrit :

ADA est un bon langage. Maintenant c'est pas le plus évident à appréhender, surtout en ce qui concerne le réseau...  
 
La gestion d'une IA sur une partie de morpion est assez simple. C'est nettement plus compliqué sur une partie d'échec, surtout en ce qui concerne le principe même du WOPR est l'apprentissage par renforcement.
 


 
Je postais ce code plus pour le fun qu'autre chose.
 
Après j'ai aucune idée de solution pour le moment.

Reply

Marsh Posté le 28-10-2010 à 11:01:04    

Reply

Marsh Posté le 04-11-2010 à 17:19:47    

Bonjour, ...
J'ai un peu lu, mais, j'ai surtout beaucoup réfléchi.
Alors, je ne sais encore si je je vais résoudre le problème par le renforcement. C'est pas exclue.
 
Pour le moment, tout ce que j'ai, c'est "un joueur qui doit être en mesure de jouer seul à un ensemble de jeu". C'est ma formulation de mon premier problème.
En réalité comme ensemble de jeu, je pense au jeux combinatoire dont le tablier est de forme rectangulaire.
Avec ce qui suit j'espère pouvoir résoudre des jeux comme, les dames, les échecs, le morpion, et puissance 4. J'ai oublié "la bataille navale"
Pour faire ça j'ai commencé à spécifier les classes jeux et jeu respectivement dans les paquetage np-games et np.games-game.
Avec Ada ça donnes ça :
 

Code :
  1. package Np is
  2. end Np;


Code :
  1. package Np.Games is
  2.   type T_Player is (Left, Right);
  3.   type T_Piece is new Positive;
  4.   type Piece_Access is access all T_Piece;
  5.   type T_Apron is array (Positive range <>,
  6.                          Positive range <> ) of Piece_Access;
  7.   type T_Option is access procedure (Apron : in out T_Apron);
  8.   type T_Init_Procedure is access procedure (Apron : out T_Apron);
  9.   type T_Owner_function is access function (Piece : T_Piece) return T_Player;
  10.   type T_Games(Name : access String;
  11.                Piece : T_Piece;
  12.                Apron : access T_Apron;
  13.                Init  : T_Init_Procedure;
  14.                Owner : T_Owner_Function) is abstract tagged null record;
  15.   type Games_Access is access all T_Games'Class;
  16.   type T_Game_Set is array (Positive range <> ) of Games_Access;
  17. end Np.Games;


Code :
  1. generic
  2.   Name      : String;
  3.   Num_Piece : T_Piece;
  4.   Apron     : access T_Apron;  
  5.   Init      : T_Init_Procedure;
  6.   Owner     : T_Owner_Function;
  7. package Np.Games.Game is  
  8.   type T_Option_Set is array (T_Piece range 1..Num_Piece) of T_Option;
  9.   type T_Game(Options : access T_Option_Set) is
  10.     new T_Games(new String ' (Name),
  11.          Num_Piece,
  12.          Apron,
  13.          Init,
  14.          Owner) with null record;
  15. end Np.Games.Game;


 
 
 
Utilisation
 

Code :
  1. with Np.Games.Game;
  2. use Np.Games;
  3. package Np.Chess is
  4.   Chess_Apron : access T_Apron := new T_apron(1..8, 1..8);
  5.   procedure Chess_Init(Apron : out T_Apron);
  6.   function Chess_Owner(Piece : in T_Piece) return T_Player;
  7.   package Chess is new Game("Chess",
  8.                             12,
  9.                             Chess_Apron,
  10.                             Chess_Init'Access,
  11.                             Chess_Owner'access);
  12.  
  13.   use Chess;
  14.   Chess_Option_Set : access T_Option_Set:= new T_Option_Set;
  15. end Np.Chess;


(normalement l'utilisation de games-game ce fait dans le corp.) En fait non.
 
 
Main :

Code :
  1. with Np.Chess;
  2. use Np.Chess;
  3. procedure Main is
  4.   use Chess;
  5.   Chess : T_Game(Chess_Option_Set);
  6. begin
  7.  
  8.   null;
  9. end Main;


 
 
Donc, c'est pas gros, mais déjà là, j'espérais avoir confirmation que c'est en bonne voie.
Peut-on en juger ? Merci pour votre aide.


Message édité par Profil supprimé le 04-11-2010 à 18:05:04
Reply

Marsh Posté le 03-12-2011 à 19:44:40    

Bonjour,
 
Question du jour : Comment baser une partie de Global Thermonuclear War sur l'apprentissage par renforcement ?  :D  
 
Je prend toutes les idées ! [:dawa]

Reply

Marsh Posté le 03-12-2011 à 19:44:40   

Reply

Marsh Posté le 03-12-2011 à 22:43:18    

Question plus précise.... Bien que les idées générales soient intéressantes....
 
Je souhaite réaliser un jeu sur le thème de WarGames.
J'ai le concept principale : recherche de cible/défense de territoire.
Je dois gérer une partie en selon 5 phases itérative en boucle.
A l'image du DoD of US, je défini 5 niveau d'alertes (Defcon) conduisant à une action particulière.
J'ai déjà défini les 5 niveau comme suit :
Defcon 5 : maintien de la paix
Defcon 4 : detection et création de missiles.
Defcon 3 : detection des cibles ennemies et ciblage des missiles
Defcon 2 : detection de l'armement des missiles ennemis et armement des missiles.
Defcon 1 : tirs des missiles.
 
Avec ça, (j'ai pas plus), je dois élaborer un algorithme d'attaque et de défense.
Une attaque consisterais en une exploration automatique de territoires ennemis.
En Defcon 5, je devrais décider si j'attaque ou pas et passer en Defcon 4 automatiquement.
En Defcon 4, je devrais créer des missiles positionnés stratégiquement et passer en Defcon 3 automatiquement.
En defcon 3, je devrais définir les cibles de mes missiles; soit pour découvrir une zone du territoire, soit pour me défendre, et passer en Defcon 2 automatiquement.
En defcon 2 : je devrais décider de l'armement des missiles et passer en Defcon 1 automatiquement.
En defcon 1 : tirer les missile après une recherche de clef d'annulation ou de validation de procédure. Et repasser en Defcon 5.
Mais c'est pas simple. Enfin, je suis limité.  :D  
Voilà, si vous avez un avis sur la question...
Merci.
 
 

Reply

Marsh Posté le 03-12-2011 à 22:59:22    

Nan j'ai pas d'avis sur la question.
Je pense que ta barre il faut la mettre à gauche ou flottante.

Reply

Marsh Posté le 03-12-2011 à 23:10:22    

GrosBocdel a écrit :

Nan j'ai pas d'avis sur la question.
Je pense que ta barre il faut la mettre à gauche ou flottante.


 
A merci. Je la met en bas finalement. J'aimais bien à gauche, mais je préfère en bas, avec l'info sur Defcon à gauche quand même : http://www.jovalise.net/data/Xborg_2_2012.jpg

Reply

Marsh Posté le 04-12-2011 à 00:05:14    


Je préfère à gauche, mais c'est peut-etre parce que tes trucs sont vides.
Tu l'as trouvé où le defcon 12345? c'est joli

Reply

Marsh Posté le 04-12-2011 à 00:13:36    

Dans Wikipedia.

Reply

Marsh Posté le 04-12-2011 à 00:19:45    

Nan mais le widget avec les boutons en dégradé sur les bords

Reply

Marsh Posté le 04-12-2011 à 00:27:49    

GrosBocdel a écrit :

Nan mais le widget avec les boutons en dégradé sur les bords


 
Ben c'est une image que j'ai trouvé dans les liens Wikipedia sur Defcon !

Reply

Marsh Posté le 04-12-2011 à 01:09:22    

Je m'intéresse en premier lieu aux jeux où il y a autant de chance de gagner en tant qu'attaquant qu'en tant que défendant.
J'ai était tuyauté sur le jeu Pierre-Feuille-Ciseaux : http://fr.wikipedia.org/wiki/Pierre-feuille-ciseaux
Et je suis tombé sur Théorème du minimax de von Neumann : http://fr.wikipedia.org/wiki/Th%C3 [...] on_Neumann
Cependant, malgré l'effort que je fais pour comprendre j'y arraive pas, soit ces trop concis, soit c'est trop long.
 
Voici ce que je voudrais faire : je voudrais décider d'une stratégie parmi 3 (attaque, défense, nulle) selon si je gagne au jeu contre moi même, si je perd ou si il y a partie nulle. est-ce possible ?
Est-ce possible par l'apprentissage par renforcement ou autre (précision à faire) de faire en sorte d'apprendre à jouer une partie nulle grâce à des parties de jeu de pierre feuille ciseaux, ou un autre ?
 
Merci pour vos réponse.

Reply

Marsh Posté le 06-12-2011 à 16:58:35    

 

On va aller plus vite, je te file la solution : le gagnant est celui qui ne joue pas  [:gijar]

 

Oublie pas d'installer une backdoor qui s'ouvre avec le mot de passe "Joshua"  [:roger21:3]

 

edit : tiens, un peu de lecture : http://en.wikipedia.org/wiki/Zero%E2%80%93sum_game

Message cité 1 fois
Message édité par Tamahome le 06-12-2011 à 17:00:04
Reply

Marsh Posté le 06-12-2011 à 17:30:30    

Tamahome a écrit :


 
On va aller plus vite, je te file la solution : le gagnant est celui qui ne joue pas  [:gijar]  


Ben nan, si tu joues pas tu peux pas gagner. Enfin, il me semble.

Tamahome a écrit :


Oublie pas d'installer une backdoor qui s'ouvre avec le mot de passe "Joshua"  [:roger21:3]  


Je peux pas. J'écris pas joshua et je construis pas le Wopr, enfin presque pas.
J'ai déjà implémenté le rappel automatique.  :o  


 
Merci, un comment peut-être ?

Reply

Marsh Posté le 22-08-2013 à 13:36:53    

Bonjour, je cherche une bibliothèque qui me permettrait d'afficher la carte du monde en point par point en mode console sur Gnu/Linux.
Je doit pouvoir afficher du texte également, enfin, avoir une gestion complète de l'écran.
 
 
Pour avoir les même effet que dans WarGames.
 
Je reprends le projet.  :D

Reply

Marsh Posté le 22-08-2013 à 20:28:51    

Pour manipuler un terminal directement tu peux utiliser les séquences d'échappement vt100 ou vt220. Par exemple:

Code :
  1. printf("\x1B[H\x1B[1mHello world\x1B[0m\n" );


Pour imprimer "Hello world" en caractère gras.
 
Il y a une tétrachiée de séquences (c.f google "vt100 sequence" ). Tu peux utiliser la lib http://www.gnu.org/s/ncurses pour faire abstraction de tout ce bordel (en général déjà installé sur la plupart des distrib linux).
 
Si tu veux convertir une image bitmap en un truc affichable dans un terminal (anti-aliasing via ASCII-art + séquence vt100), tu peux utiliser:
http://caca.zoy.org/wiki/libcaca
 
(oui, le nom n'est pas un hasard, son auteur, Sam Hocevar, est un habitué de ce genre de jeux de mot pourri, mais cette lib fait plutôt un bon boulot). Si tu veux du vraiment du point par point, va falloir utiliser autre chose qu'un émulateur de terminal vt100/220.
 
Après tu peux toujours faire joujou avec les caractère unicodes du style :
http://en.wikipedia.org/wiki/Box_drawing_characters
http://en.wikipedia.org/wiki/Block_Elements
http://en.wikipedia.org/wiki/Unicode_Geometric_Shapes
 
Pour afficher autre chose que du texte.

Reply

Marsh Posté le 22-08-2013 à 20:54:04    

Merci tpierron, je regarderais la libcaca, je connais un peu ncurses, j'ai déjà fait des trucs avec?
 
Mon truc ça donne ça pour le moment Mais je crois que j'ai que du texte à afficher sur un terminal.
 

Excellent!  
United States                     Soviet Union
     /----------\                  /-----------\
    /            \                /             \
   /              \              /               \
  /                \            /                 \
 |                 |           |                   |
 |                 |           |               ____|
 |                 |           |              /
 \_________________/           \_____________/
WHICH SIDE DO YOU WANT?
 
 
1. UNITED STATES
2. SOVIET UNION
 
 
PLEASE CHOOSE ONE:


 
 
 
Merci en tout cas pour les liens.

Reply

Marsh Posté le 17-12-2020 à 16:41:04    

ca y est ? il est fini ? Comment on fait pour jouer dessus ?


---------------
Hobby eien /人◕ ‿‿ ◕人\
Reply

Marsh Posté le 18-12-2020 à 08:37:27    

Jovalise, c'est comme La Cinq, c'est fini. Il s'est ban à vie vu ses propos lors de son dernier retour il y a quelques jours sur le topic blabla prog.
 
Et puis si tu suis un peu les topics du bonhomme, tu sais qu'il ne termine jamais ses projets mais ça l'empêche pas d'en commencer des nouveaux, toujours plus obscures les uns que les autres :o


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 18-12-2020 à 09:14:23    

oui mais c'est comme Yoyo Tchikita, caÿ drole


---------------
Hobby eien /人◕ ‿‿ ◕人\
Reply

Marsh Posté le 20-12-2020 à 10:52:32    

rufo a écrit :

Jovalise, c'est comme La Cinq, c'est fini. Il s'est ban à vie vu ses propos lors de son dernier retour il y a quelques jours sur le topic blabla prog.


Oh il reviendra bien un jour où l'autre avec un nouveau pseudo :D


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 20-12-2020 à 11:37:20    

Peut-être mais tu feras quoi vu que t'as dit ban@life ? Parce que son style rédactionnel et les sujets de ses topics sont très caractéristiques. Du coup s'il revient avec un autre pseudo, il va te faire reconnaître direct. Vu la personnalité du bonhomme, c'est pas facile à cacher :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 20-12-2020 à 13:59:37    

C'est surtout le seul du forum qui fait de l'Ada ;-)

Reply

Marsh Posté le 20-12-2020 à 14:09:17    

Non, y'a eroge aussi :o
Ca a pas dû être facile d'avoir pour seul interlocuteur Jovalise sur ses topics :/


Message édité par rufo le 20-12-2020 à 14:09:58

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 20-12-2020 à 14:22:32    

rufo a écrit :

Peut-être mais tu feras quoi vu que t'as dit ban@life ? Parce que son style rédactionnel et les sujets de ses topics sont très caractéristiques. Du coup s'il revient avec un autre pseudo, il va te faire reconnaître direct. Vu la personnalité du bonhomme, c'est pas facile à cacher :/


On verra quelle sera sa nouvelle personnalité... S'il est aussi agressif et con que ces derniers mois, il repartira. S'il est un peu plus sympa, je ferai un effort :D


Message édité par Harkonnen le 20-12-2020 à 14:23:14

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 20-12-2020 à 14:25:41    

C'est bon Jovalise, tu peux revenir  :hello:


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 20-12-2020 à 14:34:12    

Jovalise, le vrai, le pseudo "vanilla" était sympa. Perché mais sympa.
J'ai l'impression que chaque nouveau pseudo a marqué une étape dans sa descente :/


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 20-12-2020 à 16:50:26    

Je pense avoir connu qu'à partir de Jovalise. Vanilla, ça me dit rien, comme ça.
A chaque changement de pseudo, l'image associée au profil changeait aussi. Si la dernière image, une photo d'un homme, était lui, effectivement, ça a été une sacrée descente. La photo faisait limite peur :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 20-12-2020 à 20:47:48    

rufo a écrit :

Je pense avoir connu qu'à partir de Jovalise. Vanilla, ça me dit rien, comme ça.
A chaque changement de pseudo, l'image associée au profil changeait aussi. Si la dernière image, une photo d'un homme, était lui, effectivement, ça a été une sacrée descente. La photo faisait limite peur :/


Non mais j'utilise le terme vanilla pour désigner le jovalise legacy, le pseudo "jovalise" quoi :D


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 21-12-2020 à 19:46:41    

Oui après à chaque fork on a baissé en qualité

Reply

Marsh Posté le 22-12-2020 à 11:35:51    

C'est clair... Jovalise, c'est comme les virus : à chaque nouvelle mutation, il devient plus chiant :/


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 22-12-2020 à 11:47:35    

QUi sait, peut-être que dans quelques siècles, son travail sera reconnu et passera pour un génie et les gens de cette époques se diront à propos de nous : "mais quelle bande de cons de ne pas avoir compris un génie pareil !..."  :pfff: .................. Non, je déconne, aucune chance ! :D


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 22-12-2020 à 13:58:41    

Jovalise c'est quand même l'homme le plus proche de passer avec succès le test de Turing, on ne sait plus si on échange avec une machine ou un homme à la fin. :o  
 
Attendez, ce n'est pas dans ce sens que fonctionne le test ? :(


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

Marsh Posté le 22-12-2020 à 14:28:35    

Perso, sur la fin, j'en étais à me demander si je causais pas à un programme qui choisissait des mots random dans le dico et les alignait pour tenter de faire des phrases :/ Je le comprenais de moins en moins.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed