[Ada][Warborg] un wargame avec GtkAda

un wargame avec GtkAda [Ada][Warborg] - Ada - Programmation

Marsh Posté le 21-08-2011 à 13:22:49    

Bonjour, bonjour à tous, merci de votre lecture.  :hello:  
 
Je manque d'inspiration pour implémenter mon programme.
 
C'est un système client/serveur qui partage une territoire où sont disposé des objets visibles et des objets invisible à la vue des autre utilisateurs.
 
L'objectif est de trouver les objets invisible en trouvant le minimum d'objets visibles.
 
La règles en gros.
  Tant que l'unité stratégique n'est pas détruite, on peu ajouter des armes et tirer dans la limite d'une charge maximum, si non la partie est perdu simplement.  
  Le point stratégique est un point invisible des joueurs alors que les armes le sont.
  Le point stratégique est placé au début de parti et on ne peut pas le déplacer, les armes sont déplaçable.
  Les armes restantes des unités stratégiques détruites sont ajouter à votre arsenal. On recherche les unités stratégique à la main ou à l'aide d'outils de recherches qu'il faudra gérer.  
 
Pour le moment, j'ai fait un bout de la fenêtre principale du client et j'attaque le flux informationnel.
 
Pour les information que j'ai à traiter j'ai défini quelque types dans le paquetage racine qui sera commun aux clients et au serveur.
 

Code :
  1. with Ada.Containers.Vectors;
  2.  
  3. Generic
  4.   Max_X_Coordonate : Float := 1024.0;
  5.   Max_y_Coordonate : Float := 768.0;
  6.   Index_Max        : positive := 1_000;
  7. package Warborg is
  8.  
  9.   subtype X_Coordonate_Type is Float range 0.0..Max_X_Coordonate;
  10.   subtype Y_Coordonate_Type is Float range 0.0..Max_Y_Coordonate;
  11.  
  12.   type Coordonates_Type is
  13.      record
  14.         X : X_Coordonate_Type := 0.0;
  15.         Y : Y_Coordonate_Type := 0.0;
  16.      end record;
  17.   Default_Coordonates : constant Coordonates_Type := (0.0, 0.0);
  18.  
  19.   subtype Charge_Type is Float range 0.0..1.0;
  20.  
  21.   type Missil_Attributes_Type is
  22.      record
  23.         Source : Coordonates_Type := Default_Coordonates;
  24.         Target : Coordonates_Type := Default_Coordonates;
  25.         Charge : Charge_type      := Charge_Type'First;
  26.      end record;
  27.  
  28.   type Missil_Type is
  29.      record
  30.         Missil_Attibutes : Missil_Attributes_Type;
  31.      end record;
  32.  
  33.   type Missil_Vector_Index_Type is new Natural range 1..Index_Max;
  34.  
  35.   package Missils_Vectors is
  36.      new Ada.Containers.Vectors(Missil_Vector_Index_Type, Missil_type, "=" );
  37.  
  38.   use Missils_Vectors;
  39.  
  40.   type Wopr_Attributes_Type is
  41.      record
  42.         Source : Coordonates_Type := Default_Coordonates;
  43.         Target : Coordonates_Type := Default_Coordonates;
  44.         Charge : Charge_type      := Charge_Type'Last;
  45.      end record;
  46.  
  47.   type Wopr_Type is
  48.      record
  49.         Wopr_Attributes : Wopr_Attributes_Type;
  50.         Missils         : Vector;
  51.      end record;
  52.  
  53. end Warborg;


 
Pour réaliser ce programme, je compte exploiter un système de gestion de base de donnée.  
 
Alors, j'ai fait la cette bd de trois tables pour le moment :

Code :
  1. CREATE TABLE `Users` (
  2.  `User_Id` int(11) NOT NULL AUTO_INCREMENT,
  3.  `Username` char(128) DEFAULT NULL,
  4.  `Date` date DEFAULT NULL,
  5.  `Password` char(32) DEFAULT NULL,
  6.  PRIMARY KEY  (`User_Id`)
  7. ) ENGINE=MyISAM DEFAULT CHARSET=latin1


Code :
  1. CREATE TABLE `Missils` (
  2.  `Missil_Id` smallint(6) NOT NULL DEFAULT '0',
  3.  `Wopr_Id` int(11) NOT NULL,
  4.  `Lunched` tinyint(1) DEFAULT NULL,
  5.  `X_Coordonate` double NOT NULL,
  6.  `Y_Coordonate` double NOT NULL,
  7.  `X_Target` double NOT NULL,
  8.  `Y_Target` double NOT NULL,
  9.  `Charge` double DEFAULT NULL,
  10.  PRIMARY KEY  (`Missil_Id`,`Wopr_Id`),
  11.  KEY `Wopr_Id` (`Wopr_Id`)
  12. ) ENGINE=MyISAM DEFAULT CHARSET=latin1


 

Code :
  1. CREATE TABLE `Woprs` (
  2.  `Wopr_Id` int(11) NOT NULL AUTO_INCREMENT,
  3.  `User_Id` int(11) NOT NULL,
  4.  `X_Coordonate` double NOT NULL,
  5.  `Y_Coordonate` double NOT NULL,
  6.  `Total_Charge` double DEFAULT NULL,
  7.  `Charged` tinyint(1) DEFAULT '0',
  8.  PRIMARY KEY  (`Wopr_Id`),
  9.  KEY `User_Id` (`User_Id`)
  10. ) ENGINE=MyISAM DEFAULT CHARSET=latin1


Il manque les coordonnées de "target" dans la table Woprs
 
Je dois également réaliser un module de recherche automatique d'objet basé sur des algo de reche comme Ant Colony
Mon interface client est une carte du globe, et une liste cliquable de username pour afficher les objets visible par joueur.
 
http://hfr-rehost.net/thumb/self/pic/0fedbc271ee123bfc7029cba8bd46e5a83d07b07.jpeg
 
Pour le moment le zoom macrche pas, parce que je sais pas paramétrer un adjustment de Scroll_Window
Dans les menu :  
File -> Quit ;  
Zoom -> zoom_in, zoom_out
Canvas -> effacer
Search -> Ant_colony, Ant_Colony_Conf
Missils -> Launch_All, Launch_One, Create_One, Create_Group, Config_Group
 
On se log en entrant un hostname pour la connection au serveur.
 
Voila alors, selon votre inspiration, déjà, est-ce que j'ai bon ? :/
Que faire pour pas me planter ?
 
Sympa de participer à ce topic !  [:cend]  
 
Help !  [:le_coyote]

Reply

Marsh Posté le 21-08-2011 à 13:22:49   

Reply

Marsh Posté le 24-08-2011 à 17:31:04    

Bonjour,
Voici l'avancement du projet : Warborg-0.0.0c.tar.gz
J'ai un problème avec les item afficher dans le canevas, je souhaiterait pouvoir en déplacer certain et pas d'autre ou pas du tout. J'avais cru que Set_Auto_Layout permetait de fixer cette friture, mais là, ça marche pas. Bref, je partage les source au cas ou vous auriez envi de participer.
Reste pas mal de boulot. toute les requêtes SQL et les algo de recherche et encore un bout d'interface graphique.
Good luck.

Reply

Marsh Posté le 31-08-2011 à 18:50:51    

Bonjour, j'ai réussi à compiler sur Windows, mais le client ne fonctionne pas.
En effet, à l'ouverture de la fenêtre de création du du premier objet, Windows indique que le programme ne répond pas.
Voici les sources des programmes : Warborg-0.0.1b.tar.gz
Et les binaires pour Windows : Warborg_Winbin-0.0.1b.zip
 
Que j'ai compilé avec Gnat 2011 et GtkAda par la ligne de commande suivante :

gnatmake src\warborg_client.adb -aIsrc/lib/Warborg -aIc:/GtkAda/include/gtkada -aOc:/GtkAda/include/gtkada -largs -Lc:/GtkAda/include/gtkada -Lc:/GtkAda/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -limm32 -lshell32 -lole32 -latk-1.0 -lgdk_pixbuf-2.0 -ljpeg -lpng -lpangocairo-1.0 -lgio-2.0 -lcairo -lpangowin32-1.0 -lgdi32 -lpango-1.0 -lm -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lintl


 
Voilà, je cherche le moyen de faire fonctionner mon programme sur Windows, alors que sur Gnu/Linux, ça fonctionne.
Merci pour votre aide.

Reply

Marsh Posté le 04-09-2011 à 22:04:34    

ça marche pas
ça affiche pas la carte
Si je laisse latitude -90 et longitude -180 ça freeze
au mieux ça peut afficher Wopr dans un carré rouge mais après ça plante.
 
Je peux pas t'aider en Ada  [:spamafote]  

Reply

Marsh Posté le 04-09-2011 à 22:23:32    

GrosBocdel a écrit :


 
Je peux pas t'aider en Ada  [:spamafote]  


 
Je viens de m'apercevoir que je n'ai réviser que la moitié du code dans la dernière version et bien que je ne sache pas pourquoi ça plante, je peux encore apporter une amélioration.
 
Merci d'avoir testé et du retour.

Reply

Marsh Posté le 05-09-2011 à 01:07:38    

Voilà, ça rejoue avec Warborg-0.0.2d.zip sur MS Windows et Gnu/Linux, des bug tout de même à l'autodestruction de missilles, entre autre probablement.


Message édité par Profil supprimé le 05-09-2011 à 01:35:26
Reply

Marsh Posté le 05-09-2011 à 02:14:11    

OOlalah, il manque encore la charge dans la saisie d'un missile.  :o

Reply

Marsh Posté le 05-09-2011 à 02:55:50    

Sources Warborg-0.0.2e.tar.gz
 
Image
http://hfr-rehost.net/preview/self/pic/ece7fe425361e5de6d32cbf3fd40ed81f9a8bc5f.jpeg
 
 

Reply

Marsh Posté le 05-09-2011 à 12:00:40    

Pour l'image de fond qui n'est pas affichée, j'ai regardé pourquoi
Dans ton source, tu utilises "./background4" donc si on lance tes binaires en étant pas dans le répertoire où il y a ton background c'est cuit.
Avec Qt on a une variable qui s'appelle applicationDirPath() c'est magique
 
Passé ce problème, après login et choix de latitude et longitude, ça fait wizzzzz
Pango:ERROR:/build/buildd-pango1.0_1.28.3-1+squeeze2-i386-T6e3dv/pango1.0-1.28.3/pango/pango-layout.c:3739:pango_layout_check_lines: assertion failed: (!layout->log_attrs)
Abandon

Reply

Marsh Posté le 05-09-2011 à 17:54:55    

GrosBocdel a écrit :

Pour l'image de fond qui n'est pas affichée, j'ai regardé pourquoi
Dans ton source, tu utilises "./background4" donc si on lance tes binaires en étant pas dans le répertoire où il y a ton background c'est cuit.
Avec Qt on a une variable qui s'appelle applicationDirPath() c'est magique
 
Passé ce problème, après login et choix de latitude et longitude, ça fait wizzzzz
Pango:ERROR:/build/buildd-pango1.0_1.28.3-1+squeeze2-i386-T6e3dv/pango1.0-1.28.3/pango/pango-layout.c:3739:pango_layout_check_lines: assertion failed: (!layout->log_attrs)
Abandon


 
Tu peux me dire quelles version de sources tu as utilisé ?

Reply

Marsh Posté le 05-09-2011 à 17:54:55   

Reply

Marsh Posté le 05-09-2011 à 18:05:28    

Warborg-0.0.2g

Reply

Marsh Posté le 05-09-2011 à 18:14:59    

GrosBocdel a écrit :

Warborg-0.0.2g


Ok, alors, chez moi ça fonctionne, peut-être as- tu un processeur plus rapide que le mien et que Gtk ne digère pas la fréquence de rafraîchissement. il faudrait peut-être placer un court délai d'attente entre la ligne 2093 et 2094 et peut-être un également entre la ligne 2095 et 2096 avec l'instruction Ada suivante :

Code :
  1. delay 0.1;


 
Tu peux tester ça pour moi ?


Message édité par Profil supprimé le 05-09-2011 à 18:15:52
Reply

Marsh Posté le 05-09-2011 à 18:22:31    

Dans le fichier src/lib/Warborg/warborg-xborg.adb
 
Pardon.


Message édité par Profil supprimé le 05-09-2011 à 18:22:45
Reply

Marsh Posté le 05-09-2011 à 18:33:09    

ok ça a l'air de passer pour cette partie là. toujours le freeze avec latitude -90 et longitude -180
Mais heuuu. ton pc c'est un boulier? Parce que ma bécane a quand même un bon 5-6 ans

Message cité 1 fois
Message édité par GrosBocdel le 05-09-2011 à 18:34:01
Reply

Marsh Posté le 05-09-2011 à 18:40:15    

GrosBocdel a écrit :

ok ça a l'air de passer pour cette partie là. toujours le freeze avec latitude -90 et longitude -180


Ah ça c'est pas normal, je vais regarder.

GrosBocdel a écrit :


 
Mais heuuu. ton pc c'est un boulier? Parce que ma bécane a quand même un bon 5-6 ans


10 ans le miens.  :jap:

Reply

Marsh Posté le 05-09-2011 à 19:35:09    


 
Fixé dans la version 0.0.2h
 
Merci GrosBoc  :jap:


Message édité par Profil supprimé le 05-09-2011 à 19:35:59
Reply

Marsh Posté le 05-09-2011 à 19:38:44    

J'ai oublié de mettre un ou deux délay là ou ça en aurait besoin.

Reply

Marsh Posté le 05-09-2011 à 19:57:54    

warborg_server.adb:16:06: file "warborg.ads" not found dans la 0.0.2h
 
il y a un problème de droit avec les répertoires

Message cité 1 fois
Message édité par GrosBocdel le 05-09-2011 à 20:07:23
Reply

Marsh Posté le 06-09-2011 à 09:42:44    

GrosBocdel a écrit :

warborg_server.adb:16:06: file "warborg.ads" not found dans la 0.0.2h
 
il y a un problème de droit avec les répertoires


 
Merci GrosBoc, je suis un âne.
Y a pas que ça comme erreur dans la version 0.0.2h,, il y a une erreur dans warborg-database.adb également.
J'ai uploader la version 0.0.2i sur Sourceforge.
 
Merci encore GrosBoc, vraiment désolé.

Reply

Marsh Posté le 06-09-2011 à 14:11:39    

Bonjour, c'est encore moi. [:dawa]
Vous allez bien ?
 
 
J'ai uploadé, la version 0.0.0j donc qui recorrige les la correction du bug à l'affichage des item à la position par défaut, de la version 0.0.2h ; J'avais tronqué les coordonnée vers zéro, à "la position absolue". Dans la version 0.0.2i la troncation est faite à l'affichage. Ce qui permet de conserver la précision du facteur de détection lié à la charge, que vous pouvez modifier dans les entrées Launch_One, et Launch_All de SGBD dans warborg-database.adb, qui est actuellement fixé à 2.5.
 
Voilà, je cherche un avis sur l'évolution du jeu, la conception, les information pertinente, l'utilité d'une fonction auto-matique d'exploration de crate.
 
Merci pour vos retours.
 
Ne vous attaché pas trop au code, je vais tout réécrire d'ici la fin de l'année.

Reply

Marsh Posté le 06-09-2011 à 17:33:01    


 
Idéalement dans un langage pratiqué par plus de 0.00000000001% de la population, ça aiderait pour participer ...

Reply

Marsh Posté le 06-09-2011 à 17:44:18    

GrosBocdel a écrit :


 
Idéalement dans un langage pratiqué par plus de 0.00000000001% de la population, ça aiderait pour participer ...


 
Non.

Reply

Marsh Posté le 06-09-2011 à 17:45:01    

Reply

Marsh Posté le 06-09-2011 à 17:46:52    

Je vais uploader la version 0.0.2k, parce que j'ai fait une bêtise encore.

Reply

Marsh Posté le 06-09-2011 à 17:47:36    


 :lol: Non. C'est non, j'écris avec Ada.

Reply

Marsh Posté le 06-09-2011 à 17:48:18    

Moi je me dis que ça pourrait être bien comme jeu, mais j'ai toujours pas réussi à l'utiliser  [:cosmoschtroumpf]  
Pis alors je vais te dire, je vais pas apprendre Ada
On en trouve où de l'Ada d'ailleurs?

Message cité 1 fois
Message édité par GrosBocdel le 06-09-2011 à 17:51:34
Reply

Marsh Posté le 06-09-2011 à 17:52:58    

GrosBocdel a écrit :

Moi je me dis que ça pourrait être bien comme jeu, mais j'ai toujours pas réussi à l'utiliser  [:cosmoschtroumpf]  


Je comprend, je viens de corriger une erreur importante avec la version 0.0.2k  

GrosBocdel a écrit :


Pis alors je vais te dire, je vais pas apprendre Ada


Je l'apprend pour toi.

Reply

Marsh Posté le 06-09-2011 à 17:54:23    

Citation :

On en trouve où de l'Ada d'ailleurs?


Dans ariane 5. Le TGV, je sais pas où encore, mais à plein d'endroit.

Reply

Marsh Posté le 08-09-2011 à 20:27:20    

Salut,
 
Le programme fonctionne sur Gnu/Linux, mais j'ai grave des problème sur Windows.

Reply

Marsh Posté le 09-09-2011 à 18:29:15    

Je pensais avoir compris le jeu (une sorte de démineur) mais en fait non, j'ai pas compris.
 
 
Sinon, en cliquant sur le nom d'un autre joueur, crash total:
Gdk:ERROR:/build/buildd-gtk+2.0_2.20.1-2-i386-TNeM25/gtk+2.0-2.20.1/gdk/gdkregion-generic.c:1112:miUnionNonO: assertion failed: (r->x1 < r->x2)
Abandon
 

Reply

Marsh Posté le 10-09-2011 à 11:24:10    

GrosBocdel a écrit :

Je pensais avoir compris le jeu (une sorte de démineur) mais en fait non, j'ai pas compris.
 


Le but est d'explorer une carte à la recherche des bases stratégiques des autres joueur. Ca va pas plus loin.
 

GrosBocdel a écrit :


Sinon, en cliquant sur le nom d'un autre joueur, crash total:
Gdk:ERROR:/build/buildd-gtk+2.0_2.20.1-2-i386-TNeM25/gtk+2.0-2.20.1/gdk/gdkregion-generic.c:1112:miUnionNonO: assertion failed: (r->x1 < r->x2)
Abandon
 


Sur Gnu/Linux, avec la version 0.1.1e, j'ai pas cette erreur.
Donc pas la peine de s'acharner.
Par contre j'ai écris une autre version "extra", si tu veux tester pour voir si ça fonctionne mieux.
Moi, mon problème n'a pas disparu sur Windows même avec cette version dont voici les sources : Warborg-extra.tar.gz
 
Merci en tout cas GrosBoc.  :jap:  

Reply

Marsh Posté le 10-09-2011 à 11:44:31    

J'ai tout de même uploadé sur sourceforge la version classique 0.1.3a qui apporte une ou deux correction.
 
Merci à tous.

Reply

Marsh Posté le 10-09-2011 à 14:37:50    


 
C'est ce que j'utilise.

Reply

Marsh Posté le 10-09-2011 à 16:46:31    

Utilise la 0.2.x.
C'est la version extra corrigé, fonctionnant sur GNU/LInux, et pas sur MS Windows  
 
D'ailleurs je me demande comment on fait un soft pareil en réalité.
Gtk me casse les bonbon.

Reply

Marsh Posté le 12-09-2011 à 12:45:41    

Salutations,
 
J'ai trouvé comment faire pour que le programme fonctionne sur MS Windows autant que sur Gnu/Linux.
Donc, on reprend les source de la version 0.1.x et on colle quelques instructions magique dans warborg_client.
 
Voilà, good luck !

Reply

Marsh Posté le 13-09-2011 à 15:54:41    

Re, comme je sais que vous êtes nobreux à vous intéresser à ce projet, je viens rapidement vous informer que le jeu ne fonctionne toujours pas sur MS Window... Je ne sais que faire de plus pour que ça fonctionne.
 
Merci pour votre patience.

Reply

Marsh Posté le 25-09-2011 à 22:28:20    

LA dernière version de Warborg est dispo sur Sourceforge. dans ma signature.
Et vous pouvez vous connecter : ici
 
Si vous souhaitez démarrer un serveur vous même
 
Usage : ./uniborg Xborg "un nom" train.txt
 
train txt est un fichier d'initialization du réseau de neurone de traitement du langage naturel.
En suite il faux attendre que l'apprentissage se termine, consulter l'utilisation CPU.
 
Pour Xborg, par défaut d'argument, Xborg affiche l'usage.
 
edit, le programme utilise les port 5874 à 5878 inclus.


Message édité par Profil supprimé le 25-09-2011 à 22:38:14
Reply

Marsh Posté le 07-12-2011 à 19:07:13    

Salutations les meilleurs.
 
Je m'aperçois six moi plus tard que ce que je souhaite réaliser ne l'est pas, a priori, avec Gtk.
Du coup, je pense laisser tomber l'interface graphique pour me tourner vers une solution en mode text.
Et si vous avez un avis sur la question, je serait heureux d'en discuter.
Aussi, si vous souhaitez participer, n'hésitez pas à m'écrire.
Merci de l'intérêt que vous portez à ce sujet.


Message édité par Profil supprimé le 07-12-2011 à 19:07:30
Reply

Marsh Posté le 11-12-2011 à 15:37:38    

Bonjour, salutations.
 
Finalement, j'allais dire, mais non, je dis pas que c'est terminé mais, j'ai persévéré avec GtkAda et pour le moment, je tiens le coup.
 
Donc à présent nous en sommes à la version 2012-1.0.5a ; On utilise plus que 2 port, enfin, le 5872 pour le client-serveur et 5873 pour le call back mais il faut mettre votre machine en DMZ sur votre routeur. Mais de façon, j'ai pas fournis le binaire ad'hoc. Donc un port 5872.
 
J'ai produit deux paquet un pour Windows et un pour Gnu/Linux, dispo sur mon site (en signature) et le serveur de test est en marche sur le même nom de domaine.
 
Good Luck, enfin, je suis pas loin.

Reply

Marsh Posté le 27-08-2013 à 16:02:09    

Bonjour, Enjoy !
 
Un nouvelle journée nous amène à une nouvelle production, vous trouverez sur Sourceforge la dernière version de Warborg  ici : https://sourceforge.net/projects/warborg/.
 
Je n'ai pas pu compiler sur Gnu/Linux donc, vous avez les source qui compile avec Gtkada 2.14.
 
J'ai introduit la chose différemment avec Joshua, je vous laisse découvrir.
J'ai aussi augmenter la capacité en missiles ennemis recevable.
J'ai modifier la procédure d'acquisition des ennemis pour que l'ensemble des missiles reçus ne soit pas ciblé uniquement sur les premier loggé au serveur.
C'est mélangé quoi. Enfin toute la doc nécessaire à votre amusement dans le paquet Warborg_win_src+bin_2013-1.1.16a.zip
 
Registered Fritures :

Citation :


  •    Wopr LOGON
  •    Joshua introduction
  •    Speach with Joshua
  •    Select your Side
  •    Placing you Wopr
  •    Choose you defensive/attack strategy
  •    Enterring Launch code to get alternative world
  •    Reborg recall you while you are Win
  •    Say Game Over else.



 
 
Good luck.


Message édité par Profil supprimé le 27-08-2013 à 16:07:12
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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