tag:blogger.com,1999:blog-39568037267033261812024-03-13T23:02:57.804-07:00Un monde à part , celui du dev ...Visual Studio,DevC++, EasyPHP,XAMPP,WAMP,SQLserver C,C++,C#, JAVA,ASP,PHP,HTML,Javascript,DHTML,.NET (Photoshop,Blend,Flash,...) ... et tout ce qui va avec ^^!ahmed_shttp://www.blogger.com/profile/14667096543240265456noreply@blogger.comBlogger16125tag:blogger.com,1999:blog-3956803726703326181.post-25898122457317764502010-08-21T10:56:00.001-07:002010-08-21T11:48:09.212-07:00Silicode Valley, la ou ça parle de startups, de géo-localisation, d'événements et de conférences Hi-Tech mondiales...<a href="http://www.silicodevalley.com/"><img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 373px; DISPLAY: block; HEIGHT: 60px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5507934211563055858" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjz6qUZCulbtuk9VDtViRjoK0b2tRmlw2ZkFhUoPRCiZSiY_M6iBa82si97qdQASOV0hzP1LaMpL_e7ieRRXANVE4mdnU40wGBSmSrpS93h_8JrVtEmS2-HBEVmMExEtUja_Wvws9_vxQE/s200/silicodevalley.png" /></a> Je me suis lancé il n'y a pas si longtemps de cela dans la création d'une nouvelle vitrine sur le net. Je me souviens avoir trouvé le nom alors que je je faisais le pont entre ma cuisine et mon laptop ! il fallait d'un coté surveiller la casserole que j'avais mis sur le feu pour éviter que ça ne crame et d'un autre coté suivre et être au taquet sur ce qui se déroulait du coté de San Francisco à l'occasion de la f8 conférence de facebook ^^ ! Je me souviens avoir trouvé le nom assez original pour ce que je voulais créer ! <div></div><div><br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-p2Y9hwD4Q8y8PJbXxw2u_fK-6kW4kWeeDKm0YB-GqDl10y_l7TBV2K76ZcuTSP4nxA5FktnUGKJy9CrFjvjVdpOTUh2gJFw7HWY6HFxaNAw_gXhZPe7dxZ3zEIexF086FiZo9nzX6LM/s1600/1.jpg"><img style="MARGIN: 0px 10px 10px 0px; WIDTH: 381px; FLOAT: left; HEIGHT: 41px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5507934780582265602" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-p2Y9hwD4Q8y8PJbXxw2u_fK-6kW4kWeeDKm0YB-GqDl10y_l7TBV2K76ZcuTSP4nxA5FktnUGKJy9CrFjvjVdpOTUh2gJFw7HWY6HFxaNAw_gXhZPe7dxZ3zEIexF086FiZo9nzX6LM/s200/1.jpg" /></a><br /></div><div></div><div>Au départ en créant <a href="http://www.silicodevalley.com/">silicode valley </a>je pensais mettre en place un site à travers lequel je pouvais facilement véhiculer des news , des news sur tout ce qui touche au monde des startups , du « branding » (comme aime l'appelé nos amis US) en parlant de tout ce qui se prépare dans le monde comme événements et conférences à grande échelle. Je m’intéressais particulièrement à ce qui se préparait de l'autre coté de l'atlantique, et plus précisément sur la cote Ouest Americaine. Tout cela avait donné naissance à la rubrique "<a href="http://www.silicodevalley.com/?cat=1">News</a>". Mais vu que je reste aussi un gros geek (Je l'assume parfaitement en tout cas ^^) je bossais sur pas mal de projet web, je trouvais toujours du plaisir à expérimenter toutes les nouvelles APIs mise en lignes, tout ce qui touche le web 2.0, le real time web, le geo-localization m'intéressais fortement . je prenais énormément de plaisir à coder, tester, mettre en place de nouvelles technos/ techniques et cela m'a en quelques sorte fait réfléchir sur tout ce que silicode valley pouvait bien contenir.<br /></div><div><br />Je trouvais que le fait de se limiter seulement aux news me faisait jouer un rôle qui n'était pas le mien celui de journaliste, blogueur alors qu'avant toute chose c'était surtout la technique qui me passionnait vraiment, j'ai vite compris alors que <a href="http://www.silicodevalley.com/">silicode valley</a> devait aussi contenir du code et tout ce que je réalisais au cours de chacun de ces folie qui me prenait à chaque fois que je lisais un tweet ou des articles sur la sortie d’une nouvelle techno.<br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitobFdvWMwRfeZwEOs9On_OKrZJSSNNet6EPDABfF8fhsGtnQuNTTtCGOIX1Nt3E3Z5wA-xpt-F48WAo-VbGQ264qdE2cgMFH6EInhktJfmthelLOq1SH2NUWMLefuCG3LZ5KYYoHW6nI/s1600/2.jpg"><img style="MARGIN: 0px 10px 10px 0px; WIDTH: 139px; FLOAT: left; HEIGHT: 200px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5507934876012676194" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitobFdvWMwRfeZwEOs9On_OKrZJSSNNet6EPDABfF8fhsGtnQuNTTtCGOIX1Nt3E3Z5wA-xpt-F48WAo-VbGQ264qdE2cgMFH6EInhktJfmthelLOq1SH2NUWMLefuCG3LZ5KYYoHW6nI/s200/2.jpg" /></a><br />Oula, je vois que je blablate toujours autant, je vais m'arrêter la et je vous propose d'apprécier les articles qui ont été mis en ligne depuis la création de SilicodeValley, ça parle de Géo-Localisation avec la sortie de <a href="http://code.google.com/intl/fr-FR/apis/maps/documentation/javascript/">la dernière version de Google Map API</a>, la version 3 , du <a href="http://www.symfony-project.org/">framework symfony</a>, auquel je m'intéresse particulièrement, d'événements web, le dernier article explicite en détail la démarche à suivre pour s'en sortir dans tout ce qui est authentification web 2.0. Vous y trouverez des exemples complet sur l’utilisation des deux APIs facebook et twitter. je vous laisse donc apprécier tout ça ...<br /></div><div><br />Il faut savoir aussi que je ne blogue plus en français depuis un certain temps et que les articles sur silicodeValley sont exclusivement en Anglais ...<br /><br />Je vous propose les articles sous formes de tweet , ceux qui ne sont pas trop twitter devront juste comprendre que le titre de l'article est suivie par un lien qui vous redirigera automatiquement vers l'article , suivie lui aussi par des mots clefs tous précédé de hashtag "#"<br /></div><p><br />- [Silicode-Valley] Oauth open protocol, all about web 2.0 authentications ... <a href="http://bit.ly/d5udOT">http://bit.ly/d5udOT</a>#oauth #facebook #twitter #authentication </p><p><br />- [Silicode-Valley] Real Time localization notifications using GMapAPIv3, Ajax & Symfony … <a href="http://bit.ly/bISjeg">http://bit.ly/bISjeg</a> #symfony #gouglemapsapi #ajax<br /><br />- [Silicode-valley] Hi-Tech & Web upcoming large scale events ! <a href="http://bit.ly/axbTVi">http://bit.ly/axbTVi</a>#linuxcon #leweb #brighttalks<br /><br />- [Silicode-Valley] Location-based social networks:new Emerging startups <a href="http://bit.ly/8Znv30">http://bit.ly/8Znv30</a>#startup #plyce #foursquare #nomao #localization<br /><br />- [Silicode-Valley] Symfony rocks!! Streets Localization using Symfony & GMap API … <a href="http://bit.ly/9uDYjS">http://bit.ly/9uDYjS</a> #syfmony #googlemapsapi #localization<br /><br />- [Silicode-Valley] San Francisco : The 3rd f8 conference ! A new web era announced ! <a href="http://bit.ly/dDmBAF">http://bit.ly/dDmBAF</a> #facebook #f8 #SF<br /></p><div>Si vous avez déja bosser sur de la geo-loco, symfony, de l'authentification,si tout ce qui est web2.0 et real time web vous interesse n'hesitez surtout pas à partager vos experiences sur le site ...<br /><br /> <br /><br /> <br /><br /> <br /><br /> </div>ahmed_shttp://www.blogger.com/profile/14667096543240265456noreply@blogger.com3tag:blogger.com,1999:blog-3956803726703326181.post-43722209895197642332010-05-24T14:43:00.001-07:002010-08-21T10:31:57.786-07:00Moteur de recherche, Lémmatisation , pretraitement ...<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqwNkxc7herBvBhj9I8Gl9mzQN4nE6zAE0GhmFW546jl4ZOcSsxSOAVqbZfoJgffyu2aBpJOWExLjLeMAoQuT6CxVGEx54S6Kkep2UjHdV_tevqSki2ktIgkHdGmFHZsWjC5gheyx0iHc/s1600/classification.jpg"><img style="MARGIN: 0px 10px 10px 0px; WIDTH: 84px; FLOAT: left; HEIGHT: 126px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5507916086811133906" border="0" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqwNkxc7herBvBhj9I8Gl9mzQN4nE6zAE0GhmFW546jl4ZOcSsxSOAVqbZfoJgffyu2aBpJOWExLjLeMAoQuT6CxVGEx54S6Kkep2UjHdV_tevqSki2ktIgkHdGmFHZsWjC5gheyx0iHc/s200/classification.jpg" /></a><br /><div>J'ai bossé ces deux derniers jours sur un nouvel outil fonctionnel en C, j'ai finalement réussi à ecrire une mini-librairie qui se charge de pré-traiter des articles, si je vous parle de pré-traitement c'est qu'il y aura forcement du traitement derrière, avant d'introduire cette librairie parlons d'abord un peu du context dans lequel ce travail a été effectué ...<br /><br />Nous nous sommes interessés dans le cadre d'un projet à l'INSA à l'élaboration d'un module de traitement et de classification de textes. Quand je parle de classification, je fais allusion à tout ce qui utilise une base de donnnée d'articles, de templates, de models dans un but bien précis, celui par exemple d'identifier l'appartenance d'un article à une catégorie ... Nous travaillons à plusieurs sur ce projet, et la repartition des tẽches a voulu que je travaille sur la partie la plus générique, celle du pré-traitement,<br /><br /><strong>En quoi consiste ce prétraitement ou encore en quoi consiste cette généricité?<br /></strong><br />Les moteurs de recherches actuels se base sur des algorithmes sémantiques qui parsent tout type de contenu disponible sur le web, principalement du texte, quand je dis texte, ça peut aussi bien aller du contenu réel d'un site que de méthadonnées decrivants le contenu du site. Quelque soit le type de traitement qu'on devra effectuer sur un contenu, ce dernier devra forcement subir auparavant un filtrage.<br /><br />Avant de parler plus en detail de ce filtrage, je reviens sur le concept de généricité dont j'ai parlé un petit peu plus haut.<br />Quelque soit le type de traitement qu'on veut effectuer : recherche de mots clefs, classification et catégorisation de données (sites ou documents par exemples), ou autre chose<br />le pré-traitement effectué reste le mẽme, on s'interesse d'abord à ne prendre en considération que le contenu utile au traitement. Si on parle de contenu utile là ,c'est qu'il existe des mots inutiles, je vous donne un exemple. Lorsqu'un parseur d'un SearchEngine ^^ (désolé pour le franglais) parse un contenu ecrit en anglais, il tombera sur des mots qui ne lui seront pas d'une grand utilité, encore plus qui faussent l'operation, pour la recherche de mots clefs par exemple, on commencera par chercher les mots les plus redondants en prenant aussi en considération les synonymes. Le moteur tombera forcement sur des determinants, des pronoms qui se repetent très souvent dans n'importe quel contenu, une premiere operation de pré-traitement consistera à filtrer tout le contenu et à ne garder que l'information utile.<br /><br />Dans notre cas, nous disposions d'une base de données d'articles (au format XML), provenant d'hyperGéo, en deux langues, francais et anglais, nous avions tout d'abord pensé à referencer tout ce qui peut constituer un terme inutile dans les deux langues, technologiquement parlant et vu que je disposais à la base d'article au format xml, j'ai préféré travailler sur le meme format : (lien vers les fichiers)<br /><br />Aussi j'avais parlé au debut de mini-librairie, mini; car car elle se base elle aussi sur d'autres libraries, libXml2 utilisée pour parser, lire et modifier tout contenue au format xml et StemmerLibrary http://snowball.tartarus.org/texts/stemmersoverview.html qui comme son nom l'indique effectue toute opération de lémmatisation plus que necessaire, pour que notre moteur puisse detecter et reperer des relations entre plusieurs termes appartenant à des contenus differents. Il ne devra prendre en considaration que le lemme de ces termes sinon, vous modifiez juste le temps auquel le verbe est comjugé ou tout simplement en mettant un mot au pluriel et il ne considerera plus le mot comme le mẽme.<br /><br />voilà, donc en gros, et puisqu'on bosse toujours dessus, j'arrive pour l'instant à l'aide de cette nouvelle librarie (celle sur laquelle je bosse) à effectuer des différentes operations, il ne nous reste plus qu'à synchroniser toutes ces operations en vue de lancer une chaine d'operations de pre-traitements pour alimenter une base ou constituer une requẽte qui sera traitée par notre moteur.<br /><br />Structuration de la librarie :<br /><br />-<a href="http://www.xmlsoft.org/">libXmlIO</a><br />-<a href="http://snowball.tartarus.org/algorithms/french/stemmer.html">libClean_</a><br /><br />80% du travail a déja été effectuer, si vous lancez le script principal d'execution vous pourrez déja palper un exemple fonctionnel de traitement d'un contenu provenant d<a href="http://www.hypergeo.eu/">'HyperGeo</a>.<br />N'hesitez surtout pas à aller voir sur le site officiel de libxml2 pour adapter ces portions de codes à vos propres traitements. je vous conseille aussi de commmencer à tester dès maitenant la deuxieme librarie, elle est très riche, juste pour vous donner des chiffres; elle gere pas moins de 15 langues et son utilisation reste très simple: ne vous prenez pas trop la tẽte à essayer de dechiffrer tout le code source, jettez juste un petit coup d'oeil sur libstemmer.h et impregnez vous des méthodes proposées, et utilisez les boites noires proposées, "don't reinvent the weel" :)<br /><br />Il nous reste maintenant à completer notre algorithme principal pour qu'il soit capable de lancer deux operations, la constitution d'une requẽte, c'est à dire prendre en consideration un et un seul contenu de telle sorte à pouvoir soit le classer, l'identifier par suite, ou bien encore lancer ce qu'on n'appelle la phase d'apprentissage pour tout ce qui concerne la classification de contenus.<br /><br />Je vous re-donne donc rendez-vous dans une semaine sur ce mẽme article pour une librarie totalement autonome et fonctionnelle<br /></div><div>PS : Le projet est actuellement terminé. Les fichiers sources sont maintenant dispo ICI .</div><div><br />Voila, si vous bossez sur un projet pareil ou si jamais vous avez déja bossé sur du sémantique n'hesitez surtout pas à partager votre experience :)</div>ahmed_shttp://www.blogger.com/profile/14667096543240265456noreply@blogger.com1tag:blogger.com,1999:blog-3956803726703326181.post-49838666406392558922010-02-26T12:44:00.000-08:002010-02-26T13:04:02.150-08:00Oracle 11g : Prise en main & Administration<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXz7u4ADuhTXAwUHH2znH8JPfYnj_KbGx9Wsd3LMNvofIl5a97mrVQDonXNThSdYZlsEacdif60DcUcbG_Wx508qCfBi0DVnqeWBQEqalb5yRRo0IOA8KSyA9j1_kibKHoHlA-IOoguko/s1600-h/oracle-11g-database-standard-edition-one-named-user-license-300x300.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 200px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXz7u4ADuhTXAwUHH2znH8JPfYnj_KbGx9Wsd3LMNvofIl5a97mrVQDonXNThSdYZlsEacdif60DcUcbG_Wx508qCfBi0DVnqeWBQEqalb5yRRo0IOA8KSyA9j1_kibKHoHlA-IOoguko/s200/oracle-11g-database-standard-edition-one-named-user-license-300x300.jpg" alt="" id="BLOGGER_PHOTO_ID_5442656916573889458" border="0" /></a>
<br /> <meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"> <title></title> <meta name="GENERATOR" content="OpenOffice.org 3.1 (Linux)"> <style type="text/css"> <!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } A:link { so-language: zxx } --> </style> <p style="margin-bottom: 0cm;"> Oracle, administration & prise en main , autant de notions, autant de concepts à détailler, certains me diront surement qu'un livre tout entier ne suffira pas, j'ai pourtant essayé de résumer sur cet article en détails les points les plus critique quand à l'administration et à la prise en main d'oracle 11g .</p> <p style="margin-bottom: 0cm;">Je tiens avant toute chose à vous signalez que je dispose d'un GNU/Linux Ubuntu 9_10 comme OS.</p> <p style="margin-bottom: 0cm;">Et que les scripts fournis dans cet articles ont tous été testé avec succès sur cette distribution :)</p> <p style="margin-bottom: 0cm;"> Je décrirai au départ l'architecture générale d'Oracle 11g, on s'interessera juste apres à l'administration d'une telle structure et on terminera sur quelques exemples de création et de gestion d'une base de données sous Oracle 11g.</p> <p style="margin-bottom: 0cm;"> <span style="font-weight: bold;">Instances & Base de données !</span></p><p style="margin-bottom: 0cm;">Voila pour mieux comprendre ces deux concepts je vous invite à lire ces quelques notes ...<span style="font-weight: bold;">
<br /></span></p> <p style="margin-bottom: 0cm;"><span style="font-weight: bold;"> </span>La base de données est constituée de plusieurs fichiers de données , de fichiers de controls et de fichiers de journalisation .</p> <p style="margin-bottom: 0cm;"> L'instance est constituée d'une zone de mémoire partagée (SGA), d'un ensemble de processus background et d'un ensemble de processus serveur.</p> <p style="margin-bottom: 0cm;">La mémoire partagées SGA est répartie sur plusieurs structures (le Shared pool, le
<br /></p> <p style="margin-bottom: 0cm;">database buffer cache, redo log buffer et autres processus d'arrière plan) </p> <p style="margin-bottom: 0cm;">Les processus d'arriere plan servent à synchroniser et à interragier avec es données alors que les processus serveur ne s'interessent qu'aux traitement des requetes utilisateurs.</p> <p style="margin-bottom: 0cm;">Pour plus d'information sur l'architecture du gestionnaire de BD Oracle je vous conseille d'aller jetter un petit coup d'oeil <a href="http://www.commentcamarche.net/contents/oracle/oracarchi.php3">ICI</a> .</p><span style="text-decoration: underline;">
<br /> </span>Ce qui important à savoir jusqu'ici c'est que la gestion de la mémoire partagée peut aussi bien se faire en automatique qu'en manuel . Meme chose pour la gestion mutuelle de la mémoire , je dis bien mutuelle car l'instance aussi dispose d'une mémoire appellée (PGA) (dites aussi mémoire de processus) <p style="margin-bottom: 0cm;">L'Administration d'une base oracle passe déjà par l'installation du produit , la création et le démarrage de la base, la gestion de l'espace de stockage , la gestion des utilisateurs , la restauration et la sauvegarde ainsi que l'administration des fichiers de contrôles et de journalisation.
<br /></p> <p style="margin-bottom: 0cm;">
<br /></p> <p style="margin-bottom: 0cm; font-weight: bold;">Installation, pré-requis et testes …</p> <p style="margin-bottom: 0cm;">On tachera lors de l'installation de respecter l'<a href="http://www.supinfo-projects.com/fr/2003/oracle9i_install_reso/1/">Optimal Flexible Architecture</a></p> <p style="margin-bottom: 0cm;"> Avant de commencer, parlons un peu de pré-requis , ben , déja … en matière de paquets vous aurez besoins d'installer les paquets suivants :</p> <p style="margin-bottom: 0cm;"></p><blockquote><p style="margin-bottom: 0cm;">build-essential libaio1 gawk ksh libmotif3 alien libtool lsb-rpm odbcunix</p> <p style="margin-bottom: 0cm;"></p></blockquote><p style="margin-bottom: 0cm;">un petit apt-get install et le tour est joué.</p> <p style="margin-bottom: 0cm;">Par contre , les exigences matérielles ne sont pas trop discutables. Vous aurez besoin d'1Go de mémoire physique , un : free -m vous permettra de vous situez par rapport à ça.</p> <p style="margin-bottom: 0cm;">Votre noyaux devra aussi etre configurer , je vous propose alors d'aller jeter un coup d'oeil sur la section '<a href="http://www.supinfo-projects.com/fr/2003/oracle9i_install_reso/1/">mise à jour de la configuration du systeme</a>' sur comment ça marche. Vous y trouvrez les modifs à apporter aussi bien au parametres du noyaux que pour definir les limites du shell du compte utilisateur (oracle dans notre cas.</p><p style="margin-bottom: 0cm;">Passons sans plus tarder à la création du compte oracle et aux repertoires de bases .</p> <p style="margin-bottom: 0cm;">Le script suivant se charge de la création du groupe dba , du groupe propriétaire des inventaires Oracle et du compte utilisateur Oracle .</p> <p style="margin-bottom: 0cm;"></p><blockquote><p style="margin-bottom: 0cm;">
<br /></p> <p style="margin-bottom: 0cm;">groupadd oinstall</p> <p style="margin-bottom: 0cm;">groupadd dba</p> <p style="margin-bottom: 0cm;">useradd -g oinstall -G dba oracle</p> <p style="margin-bottom: 0cm;">passwd oracle</p> <p style="margin-bottom: 0cm;"></p></blockquote><p style="margin-bottom: 0cm;">
<br /></p> <p style="margin-bottom: 0cm;">pour ce qui est de la création des répértoires de base …</p> <p style="margin-bottom: 0cm;"></p><blockquote><p style="margin-bottom: 0cm;">
<br /></p> <p style="margin-bottom: 0cm;">mkdir -p /u01/app</p> <p style="margin-bottom: 0cm;">chown -R oinstall:oracle /u01/app</p> <p style="margin-bottom: 0cm;">chmod -R 750 /u01/app</p> <p style="margin-bottom: 0cm;"></p></blockquote><p style="margin-bottom: 0cm;">
<br /></p> <p style="margin-bottom: 0cm;">Telecharger ensuite l'universal Installer d'Oracle <a href="http://www.oracle.com/technology/software/products/database/oracle11g/111060_linuxsoft.html">ICI</a></p><p style="margin-bottom: 0cm;">Lancez le serveur graphique , ça se pourrai que vous aillez des problémes à le lancer , relancer votre session en changant d'utilisateur, en vous connectant sous le compte oracle et lancer l'universal installer en exécutant le script ./runInstaller</p> <p style="margin-bottom: 0cm;"> La suite est assez easy, Je vous propose quand meme ce petit Tutoriel sur les étapes à suivre sous Oracle Universal Installer jusqu'à l'installation finale du produit.</p> <p style="margin-bottom: 0cm;"><a href="http://jaouad.developpez.com/oracle-11G/">http://jaouad.developpez.com/oracle-11G/</a></p> <p style="margin-bottom: 0cm;">Quand vous aurez terminer, vous aurez à fixer les variables d'environnement :</p><blockquote><p style="margin-bottom: 0cm;"></p> <p style="margin-bottom: 0cm;">ORACLE_HOME</p> <p style="margin-bottom: 0cm;">ORACLE_BASE</p> <p style="margin-bottom: 0cm;">ORACLE_SID</p> <p style="margin-bottom: 0cm;">PATH</p></blockquote><p style="margin-bottom: 0cm;"></p> <p style="margin-bottom: 0cm;">pour cela ,n'hestiez surtout pas à aller rajouter quelques lignes ans votre bashrc ;)
<br /></p><p style="margin-bottom: 0cm;">vous disposez sous Oracle de script vous permettant de changer dynamiquement ses variables ,</p> <p style="margin-bottom: 0cm;"></p><blockquote><p style="margin-bottom: 0cm;">/user/local/bin/oraenv </p> <p style="margin-bottom: 0cm;"></p></blockquote><p style="margin-bottom: 0cm;">Notion importante apres l'installation d'Oracle , l'installation et la configuration d'Oracle Net, c'est à travers Oracle Net que des connections peuvent s'établir entre differentes machines.</p> <p style="margin-bottom: 0cm;">Sur le serveur vous aurez donc à définie un service d'écoute. Le parametrage de ce processus d'écoute se fait à travers le fichier listener.ora présent dans le repertoire </p><blockquote><p style="margin-bottom: 0cm;">$ORACLE_HOME/network/admin</p> <p style="margin-bottom: 0cm;"></p></blockquote><p style="margin-bottom: 0cm;">Je prepare une seconde partie sur l'exploitation du SGBD oracle (création d'une base, gestion des utilisateurs, gestion des fichiers des ressources, dump et restauration des bases et tout ce qui va avec ) j'espere au moins que cette petit intro vous à été utile :) ...la suite juste après le week end ;)
<br /></p> <p style="margin-bottom: 0cm;">
<br /></p> ahmed_shttp://www.blogger.com/profile/14667096543240265456noreply@blogger.com0tag:blogger.com,1999:blog-3956803726703326181.post-62846114929694973832009-12-30T16:20:00.000-08:002009-12-31T08:57:08.751-08:00JChess v 1.0: jeu d'echec en java ... sources & démo =)<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNMa4mlsGGLJ3R3Kxhtuaq-0qlfmlJQ6GwGLoGAa5u_ams_q6fLAdlORVk_uh8Az7SUyYc30U4sUmNyHYi80Jxo-GFxq8FWIBX3JQBWb9Tqan0Zwzk0vg9wB2En5o0ca8Gu0In_NOLmwM/s1600-h/trttt.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 194px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNMa4mlsGGLJ3R3Kxhtuaq-0qlfmlJQ6GwGLoGAa5u_ams_q6fLAdlORVk_uh8Az7SUyYc30U4sUmNyHYi80Jxo-GFxq8FWIBX3JQBWb9Tqan0Zwzk0vg9wB2En5o0ca8Gu0In_NOLmwM/s200/trttt.jpg" alt="" id="BLOGGER_PHOTO_ID_5421194244333518370" border="0" /></a>Voila enfin du code, j'ai enfin pu avoir un peu de temps libre pour restructurer mon code, y ajouter une bonne documentation et le proposer sur mon blog :)<br />J'ai aussi reçu dernièrement plusieurs mails me demandant de fournir plus de sources, après mur réflexion , je vous avoue qu'il est beaucoup plus aisé de fournir un projet ou un package complet plutot que d'essayer de l'éxpliquer et de le detailler à travers plusieurs articles .<br />Il fallait donc avant tout que mon code devienne lisible, facilement comprehensible, pour que d'autres developpeurs puissent y touché sans trop de soucis :)<br /><br />le projet est structuré comme tout projet de dev en plusieurs repertoires:<br /><blockquote><br />- un repertoire src : contenant les fichiers sources<br />- un repertoires classes : contenant les fichiers binaires (apres compilation)<br />- un repertoire ressource : contenant les resources images et sons necessaires à la compilation<br />et enfin, un repertoire doc : contenant la documentation necessaires à la bonne lisibilité du code.<br /></blockquote>Voila donc, le projet complet est téléchargeable <a href="http://rapidshare.com/files/328175468/chessmaster.rar.html">ICI</a> , ah , j'ai oublié un truc... le truc le plus important... Avant de vous incitez à y jouer , je vous incite d'abord à y toucher ^^ :) ne vous inquiétez pas trop ... quand vous lancerez votre première partie vous comprendrez rapidement ce que j'essaye de vous dire par la =)<br /><br />Et pour finir et histoire de vous donner l'eau à la bouche ..., je vous propose cette petite démo ...<br /><br /><object height="344" width="425"><param name="movie" value="http://www.youtube.com/v/UfCGdQTCs0M&hl=fr_FR&fs=1&"><param name="allowFullScreen" value="true"><param name="allowscriptaccess" value="always"><embed src="http://www.youtube.com/v/UfCGdQTCs0M&hl=fr_FR&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"></embed></object><br /><br /><br />Ah avant que j'oublie, et avant de vous laisser partir tapoter sur vos petits claviers , faut que je vous dire un truc "Happy new year everybody ...especialy developers =) "<br /><br />ps 1: ce jeu est encore en révision , il reste encore des fonctionnalités à coder, j'y reviendrai quand j'aurai un petit peu plus de temps ^^ :)<br /><br />ps 2: à voir aussi : lancement d'un incubateur d'entreprises TIC au Cyberparc de Sidi Bouabdallah :)ahmed_shttp://www.blogger.com/profile/14667096543240265456noreply@blogger.com8tag:blogger.com,1999:blog-3956803726703326181.post-17619246077994940902009-12-30T16:09:00.000-08:002009-12-30T16:18:47.781-08:00...le monde des startups et de l'entreprenariat vous appelle =)Chers Amis informaticiens , plus particulièrement ceux résidants en Algérie, le monde des startups et des idées libres vous appelle =)<br /><br />j'ai discuté dernierement avec mon ami <a href="http://ktalgerie.blogspot.com/">KT</a>, et il m'a alors informé de l'organisation d'un concours destiné aux jeunes developpeurs, passionés d'informatique ou autres jeunes entrepreneurs Algériens . je vous fait donc parvenir l'annonce :<br /><br />A l’occasion du lancement du premier incubateur d’entreprises TIC en Algérie en janvier 2010 au Cyberparc de Sidi Abdallah, un concours pour la création d’entreprises TIC (startups) sera organisé.<br /><br />Les 20 meilleurs projets sélectionnés seront hébergés gratuitement dans des espaces de bureau world classe et équipés à l’incubateur du Cyberparc de Sidi Abdallah et bien d’autres avantages : financement, accompagnement spécifiques et un coaching adapté par des experts ...etc.<br /><br />voila, et pour plus d'informations je vous conseille d'aller jeter un coup d'oeil <a href="http://ktalgerie.blogspot.com/2009/12/concours-et-journee-portes-ouvertes.html">ici</a>ahmed_shttp://www.blogger.com/profile/14667096543240265456noreply@blogger.com0tag:blogger.com,1999:blog-3956803726703326181.post-11576221670367966912009-12-01T15:14:00.000-08:002009-12-05T05:40:23.695-08:00mySQL / SAXBuilder /Cocoon2 pour interconnecter deux SI ...<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-gptwZVPySQS-nr9sKjgYNi3DhpkWmuUL4WLOetWbfhr9iacZRDozc4etHW90sDLDuD2xTmATYmqbBXpdhM59rqgY7BXoshyphenhyphenlsYqR-BR2Lk3N7bvQUqZ2qEkLhkEK8LMr8ROurO3g_1I/s1600/reseaux.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 150px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-gptwZVPySQS-nr9sKjgYNi3DhpkWmuUL4WLOetWbfhr9iacZRDozc4etHW90sDLDuD2xTmATYmqbBXpdhM59rqgY7BXoshyphenhyphenlsYqR-BR2Lk3N7bvQUqZ2qEkLhkEK8LMr8ROurO3g_1I/s200/reseaux.jpg" alt="" id="BLOGGER_PHOTO_ID_5410419683586358082" border="0" /></a><meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"> <title></title> <meta name="GENERATOR" content="OpenOffice.org 3.0 (Linux)"> <style type="text/css"> <!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } A:link { so-language: zxx }</style>Bon, histoire de prendre un peu de recul par rapport à la série de Tuto java sur le jeu d'échec, j'ai en quelque sorte changé de stratégie parce qu'au rythme ou ça avance il me faudra au minimum une vingtaine d'article pour tout expliquer.
<br />
<br />
<br /><p style="margin-bottom: 0.5cm;">Donc, je me suis simplement posé la question ; pourquoi ne pas fournir directement mes sources en leurs ajoutant une documentation de qualité , en tout cas, c'est ce que je suis en train de faire en ce moment et en attendant un dernier article récapitulatif infesté de codes sources ^^ et parsemé de commentaires je vais me permettre de m'étaler un petit peu plus sur un autre travail sur lequel je bosse toujours o-o !</p> <p style="margin-bottom: 0.5cm;">je travaille actuellement dans le cadre de mon projet ECAO au département ASI de l'INSA de Rouen sur un projet d'interconnexion de deux systèmes d'information , celui du département et celui de l'INSA.
<br />
<br />Une bonne partie des données utilisées par le département provient du SI de l'INSA , sauf que ces données étaient fournis avant sous format xml. Et que leurs exploitation se faisait à travers un serveur Apache-cocoon2 . Voilà, vous avez sans doute remarquer que cela nous laisse de la marge quand à l'automatisation de cette tache. Je m'explique :p </p> <p style="margin-bottom: 0.5cm;">
<br />Ce projet consistait au début à proposer une vue des données utilisée par le département au DSI de l'INSA , et de programmer les pipelines cocoon nécessaires à l'interrogation direct de la base à travers ces mêmes vues , on n'aura donc plus à transiter par du xml statique ! Intéressant , non^^?
<br />
<br />Un tel projet nécessite forcement une phase de test, puisqu'il existe une interaction entre plusieurs technologies ( Gestionnaire de base de donnée , programmation et configuration des pipelines...ect),</p> <p style="margin-bottom: 0.5cm;">j'ai du alors avant de commencer à bosser dessus faire plusieurs choix quand aux technologies utilisées, plusieurs recherches sur internet ont été nécessaire et comme après chaque recherche je me pose toujours la même question: mais pourquoi personne n'a jamais pensé à rédiger un et un seul article assez détaillé sur tel ou tel truc pour ne pas qu'on ai toujours à basculer d'un site à un autre rien que pour savoir comment implémenter ceci ou comment utiliser telle ou telle librairie . Et c'est uniquement pour cette raison que j'ai voulu exposer ma démarche à travers cet article.</p> <p style="margin-bottom: 0.5cm;"><a name="BLOGGER_PHOTO_ID_5410420131648148562"></a>
<br />Pour ce qui est de la phase de test, On doit obligatoirement passer par plusieurs étapes :
<br />
<br />L'élaboration de schéma xml et d'une modélisation UML ( il n'y a pas une réelle nécessité de détailler cette partie , puisqu'elle sert surtout à proposer un accès aux données, sauf que nous, pour cette phase de test, nous allons plutôt généré ces données à travers le fichier XML fournis et programmer les pipelines cocoon nécessaires à l'exploitation d'une base et non d'un fichier XML.
<br />
<br />Les choix se sont finalement portés sur :
<br />mySQL comme gestionnaire de base de données:
<br />Java, plus particulièrement JDOM comme langage me permettant de parser mon document XML , et d'alimenter ma base.
<br />SQLTransformer et XSP / ESQL afin de tenter deux approches permettant la
<br />programmation de transformateurs sous cocoon2.
<br />
<br />Commençons tout d'abord par une problématique assez simple , commet à partir d'un fichier XML , pourra-t-on alimenter une BDD? Une idée^^?
<br />
<br />
<br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGUjOHI-x0ehPl5oqUAiFMQcag1t2AR8XI2kTnDBkWTYAF7g6MFU-p7aTe_0wryf8aefK3a2Oogm59qUhBpX6Y3ckZ8JLJ3fQJUA0SP_uOim03YtqibEbOAu-553DvVTiODl9lYDzsN0I/s1600/images.jpeg"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGUjOHI-x0ehPl5oqUAiFMQcag1t2AR8XI2kTnDBkWTYAF7g6MFU-p7aTe_0wryf8aefK3a2Oogm59qUhBpX6Y3ckZ8JLJ3fQJUA0SP_uOim03YtqibEbOAu-553DvVTiODl9lYDzsN0I/s200/images.jpeg" name="images1" vspace="5" width="73" align="left" border="0" height="135" hspace="5" /></a>Si je vous dis JDOM ? Ça vous dit quelque chose, JDOM est une librairie java très puissante qui vous permet de parser votre document XML et d'avoir ainsi accès à tout les nœuds sans avoir vraiment à gérer une grosse arborescence , il est aussi possible d'utiliser DOM : mais bon, pour éviter toute la complexité que cela peut engendrer (génération d'une grosse arborescence regroupant tout les nœuds et j'en passe), j'ai plutôt opté pour JDOM.
<br />
<br />Vous pouvez télécharger la librairie JDOM en cliquant <a href="http://cynober.developpez.com/tutoriel/java/xml/jdom/">ici</a> .
<br />Aussi et vue qu'on devra établir un programme java qui se chargera en plus du fait de parser notre document XML de remplir systématique notre BDD , nous devons aussi installer MySQL
<br />
<br />je vous propose pour cela de taper dans votre terminal les deux lignes de commande suivantes : </p> <p style="margin-bottom: 0.5cm;">
<br />apt-get install mysql-server
<br />apt-get install mysql-client </p> <p>
<br />vous pourrez alors tester votre connexion et créer ainsi une BDD en saisissant ... </p> <blockquote>mysql -h localhost -u UserName -pPassword</blockquote> <p>
<br />la phase de test se fera bien évidement en local d'ou l'utilisation d'une connexion sous localhost. </p> <blockquote>Mysqladmin -h localhost -uUsername -pPassword create ma_base</blockquote> <p>
<br />cette derniere ligne de commande vous permet de créer votre base de donnée ma_base.
<br />
<br />je vous propose alors le programme java suivant : </p>
<br /><blockquote>import java.io.*;
<br />import org.jdom.*;
<br />import org.jdom.input.*;
<br />import java.util.List;
<br />import java.util.Iterator;
<br />import java.sql.*;
<br />
<br />
<br />public class remplissageBdd{
<br />
<br />private static String pilote="org.gjt.mm.mysql.Driver";
<br />static Document document;
<br />static Element racine;
<br />
<br />public static void main(String [] args){
<br />try{
<br />SAXBuilder sxb=new SAXBuilder();
<br />document=sxb.build(new File("fichier.xml"));
<br />}
<br />catch(Exception e){
<br />System.out.println("erreur : "+e);
<br />}
<br />racine=document.getRootElement();
<br />inject();
<br />}
<br />static void inject(){
<br />
<br />try{
<br />Class.forName(pilote);
<br />Connection connection=DriverManager.getConnection("jdbc:mysql://localhost/ma_base","root","password");
<br />Statement instruction=connection.createStatement();
<br />String queryTable="create table etudiants(etudiants CHAR(20),classe CHAR(20));";
<br />instruction.executeUpdate(queryTable);
<br />
<br />List etudiants=racine.getChildren("etudiant");
<br />Iterator j=ec.iterator();
<br />while(j.hasNext()){
<br />
<br />Element element=(Element)j.next();
<br />
<br />String id=element.getAttributeValue("id");
<br />String classe=element.getChild('classe').getText();
<br />String query="INSERT INTO etudiants VALUES('"+etudiant+"','"+classe+"'')";
<br />instruction.executeUpdate(query);
<br />}
<br />connection.close();
<br />}
<br />catch(Exception e){
<br />System.out.println("erreur : "+e);
<br />}
<br />}
<br />} </blockquote><blockquote></blockquote> <p>
<br />et comme fichier source quoi de plus interessant pour cette premiere phase de teste qu'un simple fichier XML regroupant des nœuds dépendant d'une racine et possédant des attributs : on aura donc à gérer à travers ce petit exemple tout les types de donnée composant un fichier XML, </p> <p> </p> <blockquote>arbre du fichier xml :
<br />etudiants
<br />------->etudiant(attribute:nom="toto")
<br />-----classe=CM1
<br />------->etudiant(attribute:nom="tata")
<br />-----classe=CM2</blockquote> <p>testons alors ensemble cette phase de remplissage …</p> <p><a name="BLOGGER_PHOTO_ID_5410419828555162914"></a>
<br />vérifiez juste après l'exécution du programme java que votre table a bien été créé et qu'elle contient tout ce que le fichier XML contenait comme information. Si ce n'ai pas le cas revoyez votre code^^ ...
<br />
<br />une remarque par rapport à l'exécution du programme java remplissageBDD
<br />
<br />
<br />l'exécution de ce fichier nécessite l'utilisation d'un connecteur java à mySQL , je vous propose alors de télécharger le bon connecteur sur ce lien :<a href="http://dev.mysql.com/downloads/connector/j/5.1.html">http://dev.mysql.com/downloads/connector/j/5.1.html</a> <a href="http://dev.mysql.com/downloads/connector/j/5.1.html">
<br /></a>
<br />Passons maintenant à la deuxième partie du projet , la plus excitante^^ ! nous disposons maintenant d'une base de données contenant toute les données nécessaires à la génération de nos pages :
<br />comment faire alors pour véhiculer ces donnés et les présenter sous format html .
<br />
<br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdMQya5Mo1BzeXVI17EJF6oMnyMQ3GEAg-dsm9gxIfJBWhjyFTbCkLxBrVx1YMh-DQwEDhV8bO1JJIrdxItaPGjhDQJBE3rkdWOHxWImGHeOJl4fTbXvZEfxDzAnl3HlxcqtLU-SDELaw/s1600/Apache-Cocoon-0.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjdMQya5Mo1BzeXVI17EJF6oMnyMQ3GEAg-dsm9gxIfJBWhjyFTbCkLxBrVx1YMh-DQwEDhV8bO1JJIrdxItaPGjhDQJBE3rkdWOHxWImGHeOJl4fTbXvZEfxDzAnl3HlxcqtLU-SDELaw/s200/Apache-Cocoon-0.png" name="images2" vspace="5" width="160" align="left" border="0" height="110" hspace="5" /></a>Cocoon -apache 2 est le serveur par excellence pour ce genre de tache , avant de commencer , je vous conseille d'aller jeter un petit coup d'œil sur le site officiel cocoon-apache.
<br />
<br />La transition de ces données sous cocoon se fait à travers des pipelines ; un pipeline ce n'ai ni plus ni moins qu'un chemin programmé, contenant trois modules :un module de génération, un autre de transformation et un dernier qui se charge de la séréalisation et qui permet de modifier les données en fonction de leur usage.
<br />
<br />
<br /></p> <p>Vous vous posez surement la même question que moi au départ ^^ ,je me disais tout le temps : 'Des serveurs j'en ai vu tellement , de toutes sortes en tout cas en partant d'IIS jusqu'au Jboss, Tomcat, apache et compagnie..mais à aucun moment je n'ai eu affaire à un pipeline ou un truc du genre</p> <p>c'est quoi donc finalement cette histoire de pipeline? Ne vous inquiétez pas aussitôt cette phase de test fini vous y verrez beaucoup plus clair pour tout ce qui concerne cocoon et ses pipelines ^^ </p> <p>ajoutez entre deux blocs 'pipeline' un bloc 'map:match' contenant une generateur 'map:generate' un transformateur 'map:transfort' et un séréaliseur 'map:serealize' ...
<br /></p> <p>Le premier blocs sert à définir l'url qui pointera directement vers votre pipeline.
<br />Les générateurs et les transformateur auront besoin comme source d'un fichier; un fichier de base. xml par exemple pour la génération et xslt comme fichier de transformation.
<br />
<br />Par contre on aura surtout besoin lors de la serialisation de définir un type. Un format de sortie; xml ou html par exemple.
<br />
<br />Pour configurer de pipeline je vous conseille fortement d'aller voir du coté du site officiel apache-coccon 2 , vous y trouverez plusieurs exemples . </p> <p>J'ai du dans mon cas, définir une connexion à ma base dans mon cocoon.xconf et faire référence à ma connexion en ajoutant à mon transformateur un paramètre nommé use-connexion et qui pointe sur la connexion préalablement établie.
<br />
<br /></p> <p>Attention , plusieurs approches restent possible. J'en ai testé deux : une en utilisant SQLTransformer et une autre sur la base d'un fichier xsp ...je ne vous cache pas que ma préférence va plutôt vers xsp . XSP vous laisse beaucoup de marge quand à votre présentation … tout est inclus dedans ^^ au grand bonheur des cocooniens :)</p> <p>Enfin et pour finir, je vous propose d'aller faire un petit tour sur le site coocon plus spécialement sur ce lien : <a href="http://www.nongnu.org/sdx/docs/html/doc-sdx2/fr/reference/xsp.html">http://www.nongnu.org/sdx/docs/html/doc-sdx2/fr/reference/xsp.html</a></p> <p> </p> ahmed_shttp://www.blogger.com/profile/14667096543240265456noreply@blogger.com0tag:blogger.com,1999:blog-3956803726703326181.post-17314772721562676852009-11-24T17:24:00.000-08:002009-11-24T17:30:31.200-08:00Jeu d'echec en Java ...article 3<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhU8OiwdW2UbQfU2PpgySoVrmaA3c9MT4qaApng1xSSoNZruZNSA5XGVaEH0td9jE67TErED3nazzCpsCDz9lBal-dySP1JjbWsM2-W3zsbgMapnJe95ET1-wMNwTKMZzYPHQtymRuKCSg/s1600/Sans+titre.png"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 167px; height: 167px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhU8OiwdW2UbQfU2PpgySoVrmaA3c9MT4qaApng1xSSoNZruZNSA5XGVaEH0td9jE67TErED3nazzCpsCDz9lBal-dySP1JjbWsM2-W3zsbgMapnJe95ET1-wMNwTKMZzYPHQtymRuKCSg/s200/Sans+titre.png" alt="" id="BLOGGER_PHOTO_ID_5407846271189046114" border="0" /></a> <meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"> <title></title> <meta name="GENERATOR" content="OpenOffice.org 3.0 (Linux)"> <style type="text/css"> <!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> </style> <p style="margin-bottom: 0cm;">Le constructeur définie lors du précédent tutoriel , nous permet de générer la grille suivante , sans les icones bien sûr , je vais vous détailler sur ce tuto les deux fonctions permettant la génération de ces icones sur cette grille ...</p> <p style="margin-bottom: 0cm;"> </p>
<br /><p style="margin-bottom: 0cm;">Avant de passer aux fonctions d'initialisation , je reviens un peu en détail au précédent constructeur , en précisant que notre classe DisplayingTable herite de la classe mere Jframe , et qu'aussitôt une instance généré , son constructeur se charge de récupéré une référence vers le Container de cette page et d'y ajouter a la fin notre Jpanel surchargé d'éléments de jeu,</p> <p style="margin-bottom: 0cm;">l'allocation du GridBaglayout s'est faite alors sur le Jpanel tables pour que table puisse être ajouter au Container.</p> <p style="margin-bottom: 0cm;">
<br /></p> <p style="margin-bottom: 0cm;"> Revenons maintenant à l'initialisation de nos éléments de jeu , deux fonctions ont été nécessaire à cela :</p> <p style="margin-bottom: 0cm;">
<br /></p> <p style="margin-bottom: 0cm;">la classe initialisation , qui se charge d'importer une icône définissant chaque élément de jeu , en spécifiant comme paramètre , le chemin vers l'icone en String , et les coordonnées de l'élément auxquels elle devra être affecter .</p> <p style="margin-bottom: 0cm;">
<br /></p> <p style="margin-bottom: 0cm;"> <span lang="en-US"></span></p><blockquote><p style="margin-bottom: 0cm;"><span lang="en-US">public void initialisation(String url_file,int i,int j)</span></p> <p style="margin-bottom: 0cm;" lang="en-US"> {</p> <p style="margin-bottom: 0cm;" lang="en-US"> JLabel label=new JLabel();</p> <p style="margin-bottom: 0cm;" lang="en-US"> label.setOpaque(true);</p> <p style="margin-bottom: 0cm;" lang="en-US"> label.setIcon(new ImageIcon(url_file));</p> <p style="margin-bottom: 0cm;" lang="en-US"> label.setBackground(colors[i][j]);</p> <p style="margin-bottom: 0cm;" lang="en-US"> label.setPreferredSize(new Dimension(50,50));</p> <p style="margin-bottom: 0cm;" lang="en-US"> label.addMouseListener(listener);</p> <p style="margin-bottom: 0cm;" lang="en-US"> table.remove(labes[i][j]);</p> <p style="margin-bottom: 0cm;"><span lang="en-US"> </span>table.add(label,TransformerTool.GBTransformer(GBC,i,j,1,1));</p> <p style="margin-bottom: 0cm;"> }</p> <p style="margin-bottom: 0cm;">
<br /></p> <p style="margin-bottom: 0cm;"></p></blockquote><p style="margin-bottom: 0cm;">tachez pour l'instant de ne pas trop vous focaliser sur les lignes de commandes permettant d'ajouter des listener à nos objets . Cette fonction d'initialisation , créer à chaque appel un nouvel objet lui alloue comme couleurs , la couleur de la case correspondante , et la on remarque l'utilité de la création d'un tableau de couleurs ,cette mémorisation s'avère donc être utile :) !</p> <p style="margin-bottom: 0cm;">
<br /></p> <p style="margin-bottom: 0cm;"> on supprimera par la suite l'élément visé à travers les coordonnées donnée en paramètres , cela bien sur afin de le remplacer par le nouvel élément instancié.</p> <p style="margin-bottom: 0cm;">
<br /></p> <p style="margin-bottom: 0cm;">Cette fonction à été surtout crée pour être soliciter à travers plusieurs appels, par une fonction appelons la mere ^^ , qui initialisera tout les éléments du jeu :</p> <p style="margin-bottom: 0cm;">
<br /></p> <p style="margin-bottom: 0cm;"></p><blockquote><p style="margin-bottom: 0cm;">
<br /></p> <p style="margin-bottom: 0cm;"> <span lang="en-US">public void ElementsInitialisation()</span></p> <p style="margin-bottom: 0cm;" lang="en-US"> {</p> <p style="margin-bottom: 0cm;" lang="en-US"> for(int i=0;i<8;i++)</p> <p style="margin-bottom: 0cm;" lang="en-US"> {</p> <p style="margin-bottom: 0cm;"> <span lang="en-US"> this.initialisation("pion_blanc.gif",i,1);</span></p> <p style="margin-bottom: 0cm;" lang="en-US"> }</p> <p style="margin-bottom: 0cm;" lang="en-US"> for(int i=0;i<8;i++)</p> <p style="margin-bottom: 0cm;" lang="en-US"> {</p> <p style="margin-bottom: 0cm;" lang="en-US"> this.initialisation("pion_noir.gif",i,6);</p> <p style="margin-bottom: 0cm;"><span lang="en-US"> </span>}</p> <p style="margin-bottom: 0cm;"> </p> <p style="margin-bottom: 0cm;"> this.initialisation("tour_blanche.gif",0,0);</p> <p style="margin-bottom: 0cm;"> this.initialisation("tour_blanche.gif",7,0);</p> <p style="margin-bottom: 0cm;"> this.initialisation("fou_blanc.gif",2,0);</p> <p style="margin-bottom: 0cm;"> this.initialisation("fou_blanc.gif",5,0);</p> <p style="margin-bottom: 0cm;"> this.initialisation("chevalier_blanc.gif",1,0);</p> <p style="margin-bottom: 0cm;"> this.initialisation("chevalier_blanc.gif",6,0);</p> <p style="margin-bottom: 0cm;"> this.initialisation("reine_blanche.gif",4,0);</p> <p style="margin-bottom: 0cm;"> this.initialisation("roi_blanc.gif",3,0);</p> <p style="margin-bottom: 0cm;"> this.initialisation("tour_noir.gif",0,7);</p> <p style="margin-bottom: 0cm;"> this.initialisation("tour_noir.gif",7,7);</p> <p style="margin-bottom: 0cm;"> this.initialisation("fou_noir.gif",2,7);</p> <p style="margin-bottom: 0cm;"> this.initialisation("fou_noir.gif",5,7);</p> <p style="margin-bottom: 0cm;"> this.initialisation("chevalier_noir.gif",1,7);</p> <p style="margin-bottom: 0cm;"> this.initialisation("chevalier_noir.gif",6,7);</p> <p style="margin-bottom: 0cm;"> this.initialisation("reine_noir.gif",3,7);</p> <p style="margin-bottom: 0cm;"> this.initialisation("roi_noir.gif",4,7);</p> <p style="margin-bottom: 0cm;"> }</p> <p style="margin-bottom: 0cm;">
<br /></p> <p style="margin-bottom: 0cm;"></p></blockquote><p style="margin-bottom: 0cm;">la fonction ,ElementsInitialisation initialisera à travers plusieurs appels à la précédente fonction tout les éléments de jeu , tachez juste de mettre les bonnes coordonnées et à ne pas vous trompez lors de la spécification du chemin relatifs à chaque icône .</p> <p style="margin-bottom: 0cm;"> <meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"> <title></title> <meta name="GENERATOR" content="OpenOffice.org 3.0 (Linux)"> <style type="text/css"> <!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> </style> </p><p style="margin-bottom: 0cm;">Voilà, pour cette toute première partie graphique, on développera dans les prochains tuto, l'utilisation de nos Listners pour en quelques sorte dynamiser ce graphisme... vous aurez aussi bien affaire aux classes du package Bakend qu'a ceux de EventHandlers … :p</p> <p></p> <p style="margin-bottom: 0.35cm; line-height: 115%; widows: 2; orphans: 2;" align="left">
<br /></p> ahmed_shttp://www.blogger.com/profile/14667096543240265456noreply@blogger.com0tag:blogger.com,1999:blog-3956803726703326181.post-6866788332279402922009-11-12T06:16:00.000-08:002009-11-12T06:39:10.524-08:00Jeu d'echec en Java ... (Article 2)<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmxxBqMGNRRi9PG6TyWbGleCaao1AOEfi6NHadyz_Nv1WQpk3Zk7Pt9TE_C15vlxDT4EmI4FiwH6Ximw0BM-Kw6PGX2LMDFgRItI1jIbBYXLC2YEAKv7q8Cf1tpjvCySp72x8-42vkf8k/s1600-h/400_F_7821976_GYcBreaKVPBE05spXwMaVMcdcs507zTE.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 134px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmxxBqMGNRRi9PG6TyWbGleCaao1AOEfi6NHadyz_Nv1WQpk3Zk7Pt9TE_C15vlxDT4EmI4FiwH6Ximw0BM-Kw6PGX2LMDFgRItI1jIbBYXLC2YEAKv7q8Cf1tpjvCySp72x8-42vkf8k/s200/400_F_7821976_GYcBreaKVPBE05spXwMaVMcdcs507zTE.jpg" alt="" id="BLOGGER_PHOTO_ID_5403221680819182226" border="0" /></a> <meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"> <title></title> <meta name="GENERATOR" content="OpenOffice.org 3.0 (Linux)"> <style type="text/css"> <!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> </style> <p style="margin-bottom: 0cm;">Hola los amigos ^^ , je vous rassure je me sent très bien aucune séquelle mental pour l'instant , que du plaisir c'est juste que je me suis mis à l'Espagnol , formation oblige =) ...aller, sans plus tarder</p> <p style="margin-bottom: 0cm;">je vais commencer à exposer ce que contient ce fameux package graphique. Et c'est sans vous dire que nous allons traiter des tas de nouveaux concepts...</p> <p style="margin-bottom: 0cm;"> </p> <p style="margin-bottom: 0cm;">Avant de construire n'importe quel chose , nous aurons bien besoin d'outil , fini les temps des pharaons ou on soulevais des pierres de plusieurs centaine de Kilo en utilisant des moyens dérisoires,</p> <p style="margin-bottom: 0cm;">ma table de jeu aura bien besoin d'outils permettant une intégration facile des éléments de jeu,</p> <p style="margin-bottom: 0cm;">Avant de parler d’outils, on va commencer tout d'abord par expliquer en quoi consiste cette grille de jeu, une grille assez simple, contenant un Jpanel auquel nous avons définie un GridBagLayout, </p> <p style="margin-bottom: 0cm;">je tiens à signaler qu'avant d'appliquer un GridBagLayout , j'ai fait quelques tests non concluant en utilisant un GridLayout , conclusion tiré , le GridBagLayout offre plus de flexibilité quand au positionnement et à la récupération de ses éléments .</p> <p style="margin-bottom: 0cm;"> </p> <p style="margin-bottom: 0cm;">Pour ajouter un élément à un GridBagLayout nous aurons forcement besoin d'un GridBagConstraints, qui nous permet de définir les contraintes relatifs à chaque élément (coordonnée sur la grille : gridx,gridy et nombre de case concernée :gridwidth,gridheight)</p> <p style="margin-bottom: 0cm;"> </p> <p style="margin-bottom: 0cm;">et c'est la que la définition d'un premier outil graphique s'est imposé , nous auront tellement d'éléments à gérer qu'il sera totalement bourrin le fait de modifier les paramètres de ces contraintes chaque ajout, ma Class DisplayingTools contient donc une fonction , GridBagTransformer qui prend comme paramètre mon GridBagConstraints , aussi bien que les valeurs des éléments à assigner à chacun de ses paramètres , se charge ensuite de les modifier et de retourner l'objet prêt à être utiliser lors du prochain ajout :</p> <p style="margin-bottom: 0cm;"> </p> <p style="margin-bottom: 0cm;"></p><blockquote><p style="margin-bottom: 0cm;">public GridBagConstraints GBTransformer(GridBagConstraints GridBagCInput,int x,int y,int px, int py) </p> <p style="margin-bottom: 0cm;">{ </p> <p style="margin-bottom: 0cm;">GridBagCInput.gridx=x; </p> <p style="margin-bottom: 0cm;">GridBagCInput.gridy=y; </p> <p style="margin-bottom: 0cm;">GridBagCInput.gridwidth=px; </p> <p style="margin-bottom: 0cm;">GridBagCInput.gridheight=py; </p> <p style="margin-bottom: 0cm;">return GridBagCInput; </p> <p style="margin-bottom: 0cm;">} </p></blockquote><p style="margin-bottom: 0cm;"></p> <p style="margin-bottom: 0cm;"> </p> <p style="margin-bottom: 0cm;">Enfin, et pour illustrer l'utilisation de cet outil , je vais devoir passer à la classe DisplayingTable , sur laquelle la grille aussi bien que tout les éléments de jeu sont instanciée et ajouté.</p> <p style="margin-bottom: 0cm;"> </p> <p style="margin-bottom: 0cm;">Chaque case de ma grille aura forcement besoin d'un élément définissant aussi bien sa couleur qu'éventuellement l'icone (pion, tour, cheval , reine ...etc. ) désignant l'élément présent. Nous opterons alors pour des Jlabel , ce qui nous évitera d'avoir a chaque fois à dessiner un rectangle et d'y ajouter une icône , </p> <p style="margin-bottom: 0cm;"> </p> <p style="margin-bottom: 0cm;">Nous aurons donc à initialiser les éléments suivant :</p> <p style="margin-bottom: 0cm;"> </p> <p style="margin-bottom: 0cm;"></p><blockquote><p style="margin-bottom: 0cm;">private JLabel [][] labes=new JLabel[8][8]; </p> <p style="margin-bottom: 0cm;">private JPanel table=new JPanel(); </p> <p style="margin-bottom: 0cm;">private Color [][] colors=new Color[8][8]; </p> <p style="margin-bottom: 0cm;">private GridBagConstraints GBC=new GridBagConstraints(); </p> <p style="margin-bottom: 0cm;">private DisplayingTools TransformerTool=new DisplayingTools(); </p></blockquote><p style="margin-bottom: 0cm;"></p> <p style="margin-bottom: 0cm;"> </p> <p style="margin-bottom: 0cm;">le premier tableau labes contient tout les éléments à ajouter à chaque case de notre Jpanel,</p> <p style="margin-bottom: 0cm;">notre Jpanel a été initialisé juste en dessous, </p> <p style="margin-bottom: 0cm;">le tableau Colors, nous permet d'avoir en mémorisation la couleur de chaque case. Enfin et en dernier , nous avons définie nos deux éléments GridBagConstraints GBC et TransformerTool qui vont nous aider en quelque sorte à ajouter nos éléments d'une manière assez soft .</p> <p style="margin-bottom: 0cm;"> </p> <p style="margin-bottom: 0cm;">Notre constructeur, DisplayingTable se chargera donc d'initialiser chaque élément , de modifier notre GBC à travers l'outils définie précédemment pour au final l'ajouter à notre Jpanel table : </p> <p style="margin-bottom: 0cm;"> </p> <p style="margin-bottom: 0cm;"></p><blockquote><p style="margin-bottom: 0cm;">public DisplayingTable()</p> <p style="margin-bottom: 0cm;">{</p> <p style="margin-bottom: 0cm;">Container container=getContentPane();</p> <p style="margin-bottom: 0cm;">container.setLayout(null);</p> <p style="margin-bottom: 0cm;">table.setLayout(new GridBagLayout());</p> <p style="margin-bottom: 0cm;">boolean commute=false;</p> <p style="margin-bottom: 0cm;">for(int i=0;i<8;i++)</p> <p style="margin-bottom: 0cm;">{</p> <p style="margin-bottom: 0cm;">for(int j=0;j<8;j++)</p> <p style="margin-bottom: 0cm;">{</p> <p style="margin-bottom: 0cm;">if(i%2==0)</p> <p style="margin-bottom: 0cm;">{</p> <p style="margin-bottom: 0cm;">if(commute==true)</p> <p style="margin-bottom: 0cm;">{</p> <p style="margin-bottom: 0cm;">labes[i][j]=new JLabel();</p> <p style="margin-bottom: 0cm;">labes[i][j].setOpaque(true);</p> <p style="margin-bottom: 0cm;">labes[i][j].setBackground(Color.green);</p> <p style="margin-bottom: 0cm;">colors[i][j]=Color.green;</p> <p style="margin-bottom: 0cm;">labes[i][j].setPreferredSize(new Dimension(50,50));</p> <p style="margin-bottom: 0cm;">table.add(labes[i][j],TransformerTool.GBTransformer(GBC,i,j,1,1));</p> <p style="margin-bottom: 0cm;">commute=false; </p> <p style="margin-bottom: 0cm;">}</p> <p style="margin-bottom: 0cm;">else if (commute==false)</p> <p style="margin-bottom: 0cm;">{</p> <p style="margin-bottom: 0cm;">labes[i][j]=new JLabel();</p> <p style="margin-bottom: 0cm;">labes[i][j].setOpaque(true); </p> <p style="margin-bottom: 0cm;">labes[i][j].setBackground(Color.yellow);</p> <p style="margin-bottom: 0cm;">colors[i][j]=Color.yellow;</p> <p style="margin-bottom: 0cm;">labes[i][j].setPreferredSize(new Dimension(50,50));</p> <p style="margin-bottom: 0cm;">table.add(labes[i][j],TransformerTool.GBTransformer(GBC,i,j,1,1));</p> <p style="margin-bottom: 0cm;">commute=true; </p> <p style="margin-bottom: 0cm;">}</p> <p style="margin-bottom: 0cm;">}</p> <p style="margin-bottom: 0cm;">else {</p> <p style="margin-bottom: 0cm;">if(commute==false)</p> <p style="margin-bottom: 0cm;">{</p> <p style="margin-bottom: 0cm;">labes[i][j]=new JLabel();</p> <p style="margin-bottom: 0cm;">labes[i][j].setOpaque(true); </p> <p style="margin-bottom: 0cm;">labes[i][j].setBackground(Color.green);</p> <p style="margin-bottom: 0cm;">colors[i][j]=Color.green;</p> <p style="margin-bottom: 0cm;">labes[i][j].setPreferredSize(new Dimension(50,50));</p> <p style="margin-bottom: 0cm;">table.add(labes[i][j],TransformerTool.GBTransformer(GBC,i,j,1,1));</p> <p style="margin-bottom: 0cm;">commute=true;</p> <p style="margin-bottom: 0cm;">}</p> <p style="margin-bottom: 0cm;">else if(commute=true)</p> <p style="margin-bottom: 0cm;">{</p> <p style="margin-bottom: 0cm;">labes[i][j]=new JLabel();</p> <p style="margin-bottom: 0cm;">labes[i][j].setOpaque(true); </p> <p style="margin-bottom: 0cm;">labes[i][j].setBackground(Color.yellow);</p> <p style="margin-bottom: 0cm;">colors[i][j]=Color.yellow;</p> <p style="margin-bottom: 0cm;">labes[i][j].setPreferredSize(new Dimension(50,50));</p> <p style="margin-bottom: 0cm;">table.add(labes[i][j],TransformerTool.GBTransformer(GBC,i,j,1,1));</p> <p style="margin-bottom: 0cm;">commute=false;</p> <p style="margin-bottom: 0cm;">} </p> <p style="margin-bottom: 0cm;">}</p> <p style="margin-bottom: 0cm;">}</p> <p style="margin-bottom: 0cm;">} </p> <p style="margin-bottom: 0cm;">table.setBounds(0,0,500,500);</p> <p style="margin-bottom: 0cm;">container.add(table);</p> <p style="margin-bottom: 0cm;">}</p> <p style="margin-bottom: 0cm;"> </p> <p style="margin-bottom: 0cm;"></p></blockquote><p style="margin-bottom: 0cm;">le raisonnement est assez logique , on initialise à chaque fois un nouveau Jlabel, on lui assigne une couleur , en faisant en sorte à travers une variable booléenne commute , de générer un effet de commutation ,donnant ainsi à la grille la distribution exacte en jeune et vert : </p> <p style="margin-bottom: 0cm;"> </p> <p style="margin-bottom: 0cm;"> </p> <p style="margin-bottom: 0cm;">premiere ligne : jaune – vert -jaune – vert ... ect
<br /></p> <p style="margin-bottom: 0cm;">deuxieme ligne : vert- jaune -vert- jaune ... ect
<br /></p> <p style="margin-bottom: 0cm;">pour à la fin ajouter chaque element à la table . </p> <p style="margin-bottom: 0cm;"> </p> <p style="margin-bottom: 0cm;">Je vous laisse un peu de temps pour vous imprégner de tout ça, de toute façon j'y reviendrai sur mon prochain tuto... ;)</p> <p style="margin-bottom: 0cm;">
<br /></p> ahmed_shttp://www.blogger.com/profile/14667096543240265456noreply@blogger.com0tag:blogger.com,1999:blog-3956803726703326181.post-85147357428099411182009-10-25T16:22:00.000-07:002009-10-26T08:41:00.636-07:00Jeu d'echec en Java ...<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrjowEjZRL-LGCm91GGdqGJLXzUrxLNq_WGYrYQjwS0IzmjCX5firM4_rsXFZtlHQaiGcAHXmutCvCdeJu5Xyg735jH3aMVmOtv-fMbD9gq-FdaVPKKHoM9Dw9PFipmRKFHNvVz57GW5M/s1600-h/image.jpeg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 141px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrjowEjZRL-LGCm91GGdqGJLXzUrxLNq_WGYrYQjwS0IzmjCX5firM4_rsXFZtlHQaiGcAHXmutCvCdeJu5Xyg735jH3aMVmOtv-fMbD9gq-FdaVPKKHoM9Dw9PFipmRKFHNvVz57GW5M/s200/image.jpeg" alt="" id="BLOGGER_PHOTO_ID_5396683352919429874" border="0" /></a><br />Plusieurs mois déjà que je n'ai plus posté sur mon blog, la raison est toute simple ; J'ai carrément changé de cap et ma vie à pris une autre tournure , j'avais postés mes tout derniers articles en étant Ingénieur développeur dans une société de service en informatique , sauf que la , je me présente sous une autre forme : Elève ingénieur en Architecture des systèmes d'information à l'Institut Nationale Des Sciences Appliquées à Rouen. Eeh ouii , la nécessité d'avoir une formation dans le domaine, de m'améliorer techniquement ,d'atteindre une certaine aisance dans la conception et le codage ... tout ces paramètres m'ont poussé à aller tenter cette expérience ... la , j'en suis à mon tout deuxième mois et je vous avoue que je suis plus que satisfait :)<br /><br />j'essayerai en tout cas de vous donner plus de détails lors de mes prochains posts , Dès mon arrivé et aussitôt installé , je me suis de suite dirigé vers mes enseignants , mes camarades de promo pour prendre connaissance des projets qui se faisaient au département , des différentes technologies qu'on enseignait , et aussi ce qui m'importait le plus , les projets perso ,car on a l'habitude de voir chez certains passionnés de l'informatique , en plus de leurs petit boulot de développeur ou de leur formation , qu'il ont l'habitude de bosser pendant leur temps libre sur de petit projet (ça peut aller des jeux jusqu'aux grosses applications qui leurs facilitent leurs quotidiens) Je vous rassure , je n'échappe nullement à cette règle =D ! ,<br /><br />En faisant mes premiers pas dans ce nouveau monde linuxien, la ou toutes les exceptions ne peuvent être que sous forme « CodeOverdoseException » et ou un multithreading d'action et d'initiative s'impose ^^… je me rends de plus en plus compte de l'importance et surtout du plaisir qu'un bon projet de développement peu aporter.<br /><br />Je reviens donc sur ce blog avec de nouvelles idées, je viens de me lancer depuis déjà presque deux semaines dans un petit projet qui me tenais à cœur, la conception et le codage complet d'un jeu d'échec :P ! Mon objectif ne se résume pas simplement au fait que mon jeu fonctionne , plus que ca , je vise surtout à élaborer un codage assez optimisé, et à bien architecturé mon jeu (packages , codage en couches ..etc.)<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgREchZZ8pvENnfcPp3vYJn02HieuCEsSIseaBzE1cLypSeem_Mh_hnTLx1zMJyx0CLFSX9xI6s1h1323ANKboZsRdmna5E5qC2-g6KpWi5jeMXan35qX02vcUEnxb-XraGZAy5PoGfkME/s1600-h/Jeux_de_societe-Indoor_games.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 150px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgREchZZ8pvENnfcPp3vYJn02HieuCEsSIseaBzE1cLypSeem_Mh_hnTLx1zMJyx0CLFSX9xI6s1h1323ANKboZsRdmna5E5qC2-g6KpWi5jeMXan35qX02vcUEnxb-XraGZAy5PoGfkME/s200/Jeux_de_societe-Indoor_games.jpg" alt="" id="BLOGGER_PHOTO_ID_5396683975023566354" border="0" /></a><br />Avant de commencer je tiens à répondre aux quelques mails que j'ai reçu me demandant la suite des tutoriels sur la fameuse bataille navale que j'avais codé … je vous signal qu'un petit souci technique :( formatage d'une partie de mon disque m'a fait perdre , une petite partie des fonction que j'avais coder coté serveur , aussitôt ces tutoriels terminé, je reviendrai à la charge pour poursuivre cette première série sur la bataille navale ;)<br /><br />Autre chose ,actuellement, je travaille toujours sur ce jeu d'échec , pour l'instant j'ai réussi en deux semaines , à définir mon environnement de jeu , l'évolution de chaque pièce indépendamment des autres sur cet environnement et je m'apprête à présent , à implémenter mes fonctions d'interaction sur un package conçu spécialement pour ça « VirtualGame Package»<br /><br />La réalisation de ce jeu passe forcement par plusieurs étapes ;<br /><blockquote><br />- conception d'une plateforme de jeu locale fonctionnant en mode deux joueurs<br />- codage et déploiement de modules ( logique suivie : couche graphique , couche métier et couche interaction)<br />- Elaborer des algorithmes d'IA afin d'implémenter des modules AP (AutonomousPlayer)<br />- Tests de validation et mise en ligne.<br /></blockquote><br />Ce projet peut donc être deviser en deux parties , Je commencerai tout d'abord par la toute première partie ou on devra concevoir une plateforme de jeu à deux joueurs , la deuxième partie sera beaucoup plus pointu … nous y reviendrons en temps voulu;<br /><br />Pour l'instant place au code , je ne vais pas commencer à vous gaver par des diagrammes UML , de schéma que vous aller fixé pendant des heures afin d'y comprendre un minimum , je vais plutôt vous proposer une conception assez soft ,suivant le fameux principe KISS (Keep it Simple ,Stupid) …<br /><br />On a quand même bien philosophé sur la question , place maintenant au code :P …<br />l'implémentation des différentes fonctionnalités (classes , méthodes) s'est faite en respectant le principe du développement en couche , en réalité , tout a été réparti en package avec pour chaque couche une série de package , je vous propose donc l'arborescence actuelle du jeu :<br /><br /><blockquote>couche graphique :<br /><br /> package DisplayingToolP<br /> package Display<br /><br />couche métier<br /><br /> package EventHandlers<br /> package Backend<br /> package VirtualGame<br /><br />couche interaction (en cours de réalisation)</blockquote><br /><br />Contenue en classes et méthodes de chaque package :<br /><br />graphique-DisplayingToolP<br /><blockquote>- DisplayingTools Class contenant une fonction GridBagTransformer :<br />gere dynamiquement l'emplacement des éléments sur ma<br />GridBagLayout<br />- menuBar Class: contenant une seul fonction qui génère l'arborescence du<br />menu<br />- DisplayingTable Class : contient des fonctions d'initialisation :<br /> - initialisation (initialise chaque élément de jeu)<br /> - ElémentsInitialisation , de porté plus général que la précédente , elle<br /> initialise tout les éléments de jeu<br />- DisplayTable (constructeur) : création des éléments graphiques</blockquote><blockquote></blockquote>graphique-Display<br /><blockquote>ChessFrame Class : qui se charge de la visualisation de la table de jeu.</blockquote>métier-EventHandlers<br /><blockquote>ChessterEvent Class : gère les événements émanent des différents éléments graphique du jeu.</blockquote>metier-Backend<br /><blockquote>Plusieurs classe définissant chaque élément de jeu : pion,tour,fou,cheval,roi et reine , on y trouve aussi l'interface pièce implémenté par chaque élément.</blockquote>metier-VirtualGame<br /><blockquote>BackendGame Class : se charge d'initialiser sur une grille tout les éléments de jeu,<br />objets pièces s'initialisent suivant la nature de l'objet (pion , tour , fou...etc.).</blockquote><br />Voilà , je vais m'arrêter la pour ce premier tutoriel , j'espère que cela vous a au moins permis de vs imprégner assez facilement du raisonnement suivie , … je vous invite dés maintenant à suivre le prochain tutoriel , Ah ,oui ,j'ai oublié de vous dire un truc , n'hésitez surtout pas à laisser vos coms , vos suggestions , parce que ce jeu on va le faire à plusieurs, je vous propose cette série de tutos alors que je travaille toujours dessus , donc , je résume , prochain tuto avec pour thème : package graphique :code et test … :Pahmed_shttp://www.blogger.com/profile/14667096543240265456noreply@blogger.com0tag:blogger.com,1999:blog-3956803726703326181.post-73171132359810757722009-06-21T14:08:00.000-07:002009-10-25T10:36:50.624-07:00Datalogic Memor Device smart scan application<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsafxUl54R8Nvmd92WhRsHsGHJkmRUZRr1Q1FeigOrwy0CklZA5i-wWEICaC8-8vyMT2X5EaWDYLs673zcbZlldopaKYMfdmzkpNC2c7pthd8SsvLxOjle6vESjZ7eHmI1BC94kXSPa7s/s1600-h/datalogic_blackjet.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 116px; height: 200px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsafxUl54R8Nvmd92WhRsHsGHJkmRUZRr1Q1FeigOrwy0CklZA5i-wWEICaC8-8vyMT2X5EaWDYLs673zcbZlldopaKYMfdmzkpNC2c7pthd8SsvLxOjle6vESjZ7eHmI1BC94kXSPa7s/s200/datalogic_blackjet.jpg" alt="" id="BLOGGER_PHOTO_ID_5396592815576183266" border="0" /></a>
<br /> <meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"> <title></title> <meta name="GENERATOR" content="OpenOffice.org 3.0 (Linux)"> <style type="text/css"> <!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> </style> <p> <meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"> <title></title> <meta name="GENERATOR" content="OpenOffice.org 3.0 (Linux)"> <style type="text/css"> <!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> </style> </p><p> <meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"> <title></title> <meta name="GENERATOR" content="OpenOffice.org 3.0 (Linux)"> <style type="text/css"> <!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> </style> </p> <meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"> <title></title> <meta name="GENERATOR" content="OpenOffice.org 3.0 (Linux)"> <style type="text/css"> <!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --></style><p> <meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"> <title></title> <meta name="GENERATOR" content="OpenOffice.org 3.0 (Linux)"> <style type="text/css"> <!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> </style> </p> <meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"> <title></title> <meta name="GENERATOR" content="OpenOffice.org 3.0 (Linux)"> <style type="text/css"> <!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> </style> <meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"> <title></title> <meta name="GENERATOR" content="OpenOffice.org 3.0 (Linux)"> <style type="text/css"> <!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --></style> <meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"> <title></title> <meta name="GENERATOR" content="OpenOffice.org 3.0 (Linux)"> <style type="text/css"> <!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> </style> <p><span style="font-size:100%;">J'ai travaillé recement sur une application mobile fonctionnant sous Windows CE 5.0 . Mon souci était celui d'imaginer une solution capable de gérer un référencement détaillé alimentant un historique d'utilisaiton à partir d'un simple événement scan !</span></p> <p><span style="font-size:100%;">Techniquement j'avais la possibilité de le faire en C#.NET à travers un projet Smart device sous Visual Studio 2008, mon code se résumait alors à instancier des objets chargés de prendre en consideration la gestion du transfert des fichier entre mon Datalogic et mon PC fixe. En Gros j'avais affaire au Windows CE mobility device et à une librairie spécifique au transfert de fichiers, L'idée qui m'est venu était simple , je vais vous expliquer en quoi consistera le plus gros de mon travail , si par exemple vous aurez à travailler sur une application pareille vous allez investir une bonne partie de votre temps à charcher les bons fichier assembly (DLL) et à tester leurs incorporation et leurs exploitation dans votre code. </span> </p> <p><span style="font-size:100%;">Je vais commencer tout d'abord par vous donner un apercu sur cette panoplie d'outil à laquelle j'ai eu affaire , Vu que vous en aurez plue que besoin , je vous propose tout d'abord de télécharger la DL Mobility Developer Assistant for VS 2005 . sur cet assistant , vous trouverez des exemples en code des differentes fonctions offertes.Le kit de developpement mobile contient une panoplie de fichier dll necessaire à vos développement sur Datalogic à travers Windows CE:Bluetooth.dll, Powermanag2005.dll, Gsm2005.dll,Device2005.dll , pour mon application j'avais surtout eu besoin du Datacapture.dll et du Pdc.dll.</span></p> <p><span style="font-size:100%;">En gros je devais enregistrer les codes scannés en fonction de certains cretères de scan , donc j'avais besoin d'instancier un objet Lazer pour programmer ma fonction GoodRead , Appllée par l'evennement Scan </span></p><blockquote><p><span style="font-size:100%;">
<br /></span></p><p> <meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"> <title></title> <meta name="GENERATOR" content="OpenOffice.org 3.0 (Linux)"> <style type="text/css"> <!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> </style> </p><p><span style="color:#ff6600;"><span style="font-family:Liberation Serif, serif;"><span style="font-size:100%;">private datalogic.datacapture.Laser laser1;
<br />private void laser1_GoodReadEvent(datalogic.datacapture.ScannerEngine sender)
<br />{}
<br />
<br />string txtScan = sender.BarcodeDataAsText.ToString();</span></span></span></p><p></p></blockquote><p></p><p><span style="color:#ff6600;"><span style="font-family:Liberation Serif, serif;"><span style="font-size:100%;"></span></span></span></p> <p></p> <p><span style="font-size:100%;">Aussi pour ce qui est des transferts de fichiers , j'avais surtout besoin de la librairie Communication qui prend en consideration toutes les communications qui peuvent s'établir entre PDA et Desktop PC , donc apres avoir incorporer le fichier assembly: OpenNTFC.desktop.comunication.ddl j'avais instancié un objet RAPI qui prend en consideration les connexions établis à travers ActiveSync.</span></p> <p><span style="font-size:100%;">Cet Objet et comme tout autre objet de lecture , sur peripherique externe ou sur base de donnée, necessitait l'ouverture d'une connexion avant l'éxécution d'une lecture , ecriture ou d'une modification , ainsi qu'une deconnexion aussitôt ces fonctions exécutées.</span></p> <p><span style="font-size:100%;">J'ai finalement utilisé les deux fonctions : CopyFileFromDevice() et DeleteDeviceFile() qui se chargent du trasfert sur Desktop,</span></p> <p><span style="font-size:100%;">J'ai publié ces quelques astuces sur article afin que vous n'aillez plus à vous balader sur des dizaines de forums à la recherce des bonnes librairies necessaire au developpement de votres application sur Datalogic.</span></p> <p> <span style="font-size:100%;">Vu que c'est ma derniere année d'étude et que j'aurai à présenter mon projet de fin d'étude courrent cette semaine , ...je vous avoue que je stresse un peu , il parrait que c'est normal^^ mais bon , c'est seulement pour vous dire que je me consacrerai beaucoup plus à ce blog aussitôt cette présentation faite.</span></p> <p></p> <p></p> <p></p> <p></p> <span style="font-family:Liberation Serif,serif;"><span style="font-size:100%;"></span></span><p></p> <meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"> <title></title> <meta name="GENERATOR" content="OpenOffice.org 3.0 (Linux)"> <style type="text/css"> <!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> </style> <p> <meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"> <title></title> <meta name="GENERATOR" content="OpenOffice.org 3.0 (Linux)"> <style type="text/css"> <!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> </style> </p> <meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"> <title></title> <meta name="GENERATOR" content="OpenOffice.org 3.0 (Linux)"> <style type="text/css"> <!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --></style><span style="font-family:Liberation Serif,serif;"><span style="font-size:100%;"></span></span><p></p> <p></p><span style=";font-family:Liberation Serif,serif;font-size:130%;" ></span><p></p> ahmed_shttp://www.blogger.com/profile/14667096543240265456noreply@blogger.com1tag:blogger.com,1999:blog-3956803726703326181.post-84456089414182070432009-05-01T17:18:00.001-07:002009-10-25T09:46:04.423-07:00Faites votre stage à partir de chez vous chez GOOGLE !<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhF84h4shIhwTO_kq7Fyxmk26hkrBLTWNz_dK8LwM05HqpKPqqdVU2zvX6nNsp6VFcWvtCv-9FsMpJoG4zoM7tVvd9gtw6VuZhgNOT-0i69YR0D1Hcj_K-svCse4rjozi-v-UKmQuyKOMA/s1600-h/google_code.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 195px; height: 195px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhF84h4shIhwTO_kq7Fyxmk26hkrBLTWNz_dK8LwM05HqpKPqqdVU2zvX6nNsp6VFcWvtCv-9FsMpJoG4zoM7tVvd9gtw6VuZhgNOT-0i69YR0D1Hcj_K-svCse4rjozi-v-UKmQuyKOMA/s320/google_code.jpg" alt="" id="BLOGGER_PHOTO_ID_5331016405202437746" border="0" /></a>
<br /><meta equiv="Content-Type" content="text/html; charset=utf-8"><meta name="ProgId" content="Word.Document"><meta name="Generator" content="Microsoft Word 11"><meta name="Originator" content="Microsoft Word 11"><link rel="File-List" href="file:///C:%5CUsers%5CNOUR%5CAppData%5CLocal%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"><!--[if gte mso 9]><xml> <w:worddocument> <w:view>Normal</w:View> <w:zoom>0</w:Zoom> <w:hyphenationzone>21</w:HyphenationZone> <w:punctuationkerning/> <w:validateagainstschemas/> <w:saveifxmlinvalid>false</w:SaveIfXMLInvalid> <w:ignoremixedcontent>false</w:IgnoreMixedContent> <w:alwaysshowplaceholdertext>false</w:AlwaysShowPlaceholderText> <w:compatibility> <w:breakwrappedtables/> <w:snaptogridincell/> <w:wraptextwithpunct/> <w:useasianbreakrules/> <w:dontgrowautofit/> </w:Compatibility> <w:browserlevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:latentstyles deflockedstate="false" latentstylecount="156"> </w:LatentStyles> </xml><![endif]--><style> <!-- /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} a:link, span.MsoHyperlink {color:blue; text-decoration:underline; text-underline:single;} a:visited, span.MsoHyperlinkFollowed {color:purple; text-decoration:underline; text-underline:single;} span.postbody {mso-style-name:postbody;} @page Section1 {size:612.0pt 792.0pt; margin:70.85pt 70.85pt 70.85pt 70.85pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} --> </style><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Tableau Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]--> <p class="MsoNormal"><o:p> </o:p></p><meta equiv="Content-Type" content="text/html; charset=utf-8"><meta name="ProgId" content="Word.Document"><meta name="Generator" content="Microsoft Word 11"><meta name="Originator" content="Microsoft Word 11"><link rel="File-List" href="file:///C:%5CUsers%5CNOUR%5CAppData%5CLocal%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"><!--[if gte mso 9]><xml> <w:worddocument> <w:view>Normal</w:View> <w:zoom>0</w:Zoom> <w:hyphenationzone>21</w:HyphenationZone> <w:punctuationkerning/> <w:validateagainstschemas/> <w:saveifxmlinvalid>false</w:SaveIfXMLInvalid> <w:ignoremixedcontent>false</w:IgnoreMixedContent> <w:alwaysshowplaceholdertext>false</w:AlwaysShowPlaceholderText> <w:compatibility> <w:breakwrappedtables/> <w:snaptogridincell/> <w:wraptextwithpunct/> <w:useasianbreakrules/> <w:dontgrowautofit/> </w:Compatibility> <w:browserlevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:latentstyles deflockedstate="false" latentstylecount="156"> </w:LatentStyles> </xml><![endif]--><style> <!-- /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} a:link, span.MsoHyperlink {color:blue; text-decoration:underline; text-underline:single;} a:visited, span.MsoHyperlinkFollowed {color:purple; text-decoration:underline; text-underline:single;} span.postbody {mso-style-name:postbody;} @page Section1 {size:612.0pt 792.0pt; margin:70.85pt 70.85pt 70.85pt 70.85pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} --> </style><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Tableau Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]--> <p class="MsoNormal"><o:p> </o:p></p> <span style=""> </span><span style="font-size:100%;">Google summer of code , voila le nom de ce programme, ça a été lancé récemment par google et le principe est assez simple , vous vous débrouillez</span><span style="font-size:100%;"> </span><span style="font-size:100%;">pas mal en code , vous avez une passion pour le développement , google se charge alors de vous trouver un stage sur le net à partir de chez vous , Ils jouent le rôle d’intermédiaire entre vous et la boite pour laquelle vous aller développer votre solution</span>
<br /><span style="font-size:100%;"><o:p> </o:p></span>
<br /><span style="font-size:100%;"> </span><span style="font-size:100%;">Des gars de différents coins de la planète y participent et c’est sans vous dire qu’au finale vous aurez et une expérience, celle d’avoir travaillé sur un projet internationale et d’avoir été orienté par des développeurs de renom et une bonne rémunération, vous voulez des chiffres attention les yeux parce que </span><span style="font-size:100%;"> </span><span style="font-size:100%;">je vais vous en donner, 4000$ ca vous dit, 6000$ non, toujours pas ^^ ! Non, mais c’est pour vous dire que si vous êtes passionné et que vous êtes prêt à passer le plus gros de votre temps en été devant votre PC à basculer de votre code à votre encadreur sur skype, inscrivez vous dès maintenant. Ou plutôt pour la prochain édition, car les inscriptions pour l’édition 2009 sont closes. Donc vous savez ce qui vous reste à faire, déjà pour commencer allez jeter un petit coup d’œil du coté du site officiel de Google Summer Of Code </span><span class="postbody" style="font-size:100%;"><a style="color: rgb(204, 204, 204);" href="http://www.code.google.com/soc" target="_blank">http://www.code.google.com/soc</a> . Je vous conseille aussi d’aller consulter les pages des précédentes éditions de GSOC, par exemple pour 2006 vous trouverez <a style="color: rgb(204, 204, 204);" href="http://code.google.com/soc/2008/">ICI </a></span><span style="font-size:100%;"> Une liste d’organisations de monitoring ayant proposé leurs services à travers Google summer of code. La liste de celle retenue pour l’édition 2009 a été publié <a style="color: rgb(204, 204, 204);" href="http://socghop.appspot.com/program/accepted_orgs/google/gsoc2009">http://socghop.appspot.com/program/accepted_orgs/google/gsoc2009</a></span>
<br /><span style="font-size:100%;"><o:p> </o:p></span>
<br /><span style="font-size:100%;"> </span><span style="font-size:100%;">Aussi, et pour que vous puissiez juger de l’énormité de ce truc je vous propose cette séquence animé par un mentor de GSOC,</span>
<br /><span style="font-size:100%;"><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/vBRRR0BQyz0&hl=fr&fs=1"><param name="allowFullScreen" value="true"><param name="allowscriptaccess" value="always"><embed src="http://www.youtube.com/v/vBRRR0BQyz0&hl=fr&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></span>
<br /><span style="font-size:100%;"><o:p> </o:p></span>
<br /><span lang="EN-GB" style="font-size:100%;">
<br /></span><span lang="EN-GB" style="font-size:100%;"><o:p></o:p></span>
<br /><span style="font-size:100%;">Alors , génial ,nn ? :D</span>
<br />
<br /> <meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"> <title></title> <meta name="GENERATOR" content="OpenOffice.org 3.0 (Linux)"> <style type="text/css"> <!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } --> </style> <p><span style="font-size:100%;">Aussi, plusieurs fondations de logiciels open source participent à ce programme, les rémunération se font par rapport à l’état d’avancement du projet , je trouve que c’est normal parce qu’on ne peut juger du niveau d’un développeur qu’a partir de l’état d’avancement de son projet, et pour que vous mettiez toutes les chance de votre coté je vous conseille d’entrer en contact avec ces boites qui proposent des services de monitoring histoire d’avoir une idée sur la procédure à suivre pour avoir le bon projet qui correspond le mieux à vos compétences …n’hésitez pas trop , vous avez entendu ce qu’a dit le gars , pas besoin d’être un génie pour réussir à faire un truc intéressant dans ce programme , l’envie d’apprendre de partager une expérience professionnelle de haut niveau suffit :D, en plus du fait que ça fera tout JOLI sur votre CV , rendez vous en 2010 pour la prochaine édition …</span></p>
<br /><meta equiv="Content-Type" content="text/html; charset=utf-8"><meta name="ProgId" content="Word.Document"><meta name="Generator" content="Microsoft Word 11"><meta name="Originator" content="Microsoft Word 11"><link rel="File-List" href="file:///C:%5CUsers%5CNOUR%5CAppData%5CLocal%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"><!--[if gte mso 9]><xml> <w:worddocument> <w:view>Normal</w:View> <w:zoom>0</w:Zoom> <w:hyphenationzone>21</w:HyphenationZone> <w:punctuationkerning/> <w:validateagainstschemas/> <w:saveifxmlinvalid>false</w:SaveIfXMLInvalid> <w:ignoremixedcontent>false</w:IgnoreMixedContent> <w:alwaysshowplaceholdertext>false</w:AlwaysShowPlaceholderText> <w:compatibility> <w:breakwrappedtables/> <w:snaptogridincell/> <w:wraptextwithpunct/> <w:useasianbreakrules/> <w:dontgrowautofit/> </w:Compatibility> <w:browserlevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:latentstyles deflockedstate="false" latentstylecount="156"> </w:LatentStyles> </xml><![endif]--><style> <!-- /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} @page Section1 {size:612.0pt 792.0pt; margin:70.85pt 70.85pt 70.85pt 70.85pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} --> </style><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Tableau Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]--> <p class="MsoNormal"><span style="font-size:100%;">
<br /></span></p> <p class="MsoNormal"><span style="font-size:100%;"><span style=""> </span></span></p> <span style="font-size:100%;">
<br /></span><span style=";font-family:";font-size:100%;" >
<br /></span> ahmed_shttp://www.blogger.com/profile/14667096543240265456noreply@blogger.com2tag:blogger.com,1999:blog-3956803726703326181.post-38710100900694526742009-04-29T02:23:00.001-07:002009-10-25T09:43:39.483-07:00Vous avez toujours envie de développer votre premier jeu en C#, je vous avez promis « La bataille navale »,faisons le ensemble :D<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkf3J-PvfE_TTbrZDd7EIDfg65mkbeYknyqp2BgiHprrtQMRNnDjLmii0IrnlcHDbIO5Nt1aJtSogv8IJAVrlZT9Gy2bWsvI5jCFajiMlIqDOuqPk-4Ay_ZmZ5_Z9hibH9i24qCnJWQJM/s1600-h/navale_navale.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 198px; height: 127px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkf3J-PvfE_TTbrZDd7EIDfg65mkbeYknyqp2BgiHprrtQMRNnDjLmii0IrnlcHDbIO5Nt1aJtSogv8IJAVrlZT9Gy2bWsvI5jCFajiMlIqDOuqPk-4Ay_ZmZ5_Z9hibH9i24qCnJWQJM/s320/navale_navale.jpg" alt="" id="BLOGGER_PHOTO_ID_5330042015779829426" border="0" /></a>
<br /><meta equiv="Content-Type" content="text/html; charset=utf-8"><meta name="ProgId" content="Word.Document"><meta name="Generator" content="Microsoft Word 11"><meta name="Originator" content="Microsoft Word 11"><link rel="File-List" href="file:///C:%5CUsers%5CNOUR%5CAppData%5CLocal%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"><!--[if gte mso 9]><xml> <w:worddocument> <w:view>Normal</w:View> <w:zoom>0</w:Zoom> <w:hyphenationzone>21</w:HyphenationZone> <w:punctuationkerning/> <w:validateagainstschemas/> <w:saveifxmlinvalid>false</w:SaveIfXMLInvalid> <w:ignoremixedcontent>false</w:IgnoreMixedContent> <w:alwaysshowplaceholdertext>false</w:AlwaysShowPlaceholderText> <w:compatibility> <w:breakwrappedtables/> <w:snaptogridincell/> <w:wraptextwithpunct/> <w:useasianbreakrules/> <w:dontgrowautofit/> </w:Compatibility> <w:browserlevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:latentstyles deflockedstate="false" latentstylecount="156"> </w:LatentStyles> </xml><![endif]--><style> <!-- /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} @page Section1 {size:612.0pt 792.0pt; margin:70.85pt 70.85pt 70.85pt 70.85pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} --></style>
<br /><span style=""> </span><blockquote></blockquote> <meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"> <title></title> <meta name="GENERATOR" content="OpenOffice.org 3.0 (Linux)"> <style type="text/css"> <!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } A:link { so-language: zxx } --> </style> <p style="margin-bottom: 0.5cm;">Du nouveau, Oui, je reviens à vous avec du neuf, concernant quoi ?, … n’allez pas chercher bien loin, je vous l’avez promis … ouvrez bien vos oreilles : « The Navale Ballte : design , conception & codage en C# » Eh oui , on y est , ceci est donc le premier Tuto d’une série d’articles que je présenterai au fur et a mesure que je les préparerai.
<br />
<br />Je ne vais pas non plus m’attarder à vous expliquer la philosophie de mon développement, donc, je vais essayer de faire le plus simple et le plus directe possible :D ,
<br />
<br />A vos clavier donc, je vais commencer par introduire les couches que j’ai implémenté dans mon projet , ne soyez pas impressionné par ce mot , développer en couche ou en module vous offre plus de facilité ,une meilleure organisation de votre code et une plus grande efficacité d’intervention face aux bugs et aux éventuels problèmes.
<br />
<br />Donc, en gros il y a mon application, c'est à dire mon jeu qui peut être lancé par n’importe quel utilisateur en vue de faire une partie et il y a le serveur qui se charge de synchroniser mon mode multi-joueurs, et pour que vous suiviez mon raisonnement je vais commencer par la partie serveur, les variables qui y sont définie et les fonctions de synchronisation que j’ai implémentée.
<br />
<br />J’essayerai de détailler au maximum mon code, donc vous aurez des fois l’impression que
<br />Je prendrai mon temps à expliquer les parties disons les plus compliquer même s’il n’y a rien de compliquer dans tout cela :D
<br />
<br />Voici les variables que j’ai définie dans ma classe service, juste une petite remarque, les variables que j’ai définie en private ne sont accessible qu’a partir des fonctions de la même classe donc, pas a partir de mon applicatif coté client, ceux en static auront la particularité de
<br />De rester statiquement modifiable par mes fonctions serveur , je sais ce que vous vous dite , mais c’est quoi ce truc de « statiquement modifiable » logiquement ; on ne peux modifié le statique et le modifiable ne peut pas être statique o_O ! , en réalité un objet statiquement modifiable restera statique jusqu'à sa prochaine modification pour ceux qui connaissent les principes du bistable par rapport au mono stable comprendront beaucoup plus facilement <!--[if gte mso 9]><xml> <w:worddocument> <w:view>Normal</w:View> <w:zoom>0</w:Zoom> <w:hyphenationzone>21</w:HyphenationZone> <w:punctuationkerning/> <w:validateagainstschemas/> <w:saveifxmlinvalid>false</w:SaveIfXMLInvalid> <w:ignoremixedcontent>false</w:IgnoreMixedContent> <w:alwaysshowplaceholdertext>false</w:AlwaysShowPlaceholderText> <w:compatibility> <w:breakwrappedtables/> <w:snaptogridincell/> <w:wraptextwithpunct/> <w:useasianbreakrules/> <w:dontgrowautofit/> </w:Compatibility> <w:browserlevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:latentstyles deflockedstate="false" latentstylecount="156"> </w:LatentStyles> </xml><![endif]--><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Tableau Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]--></p> <p><span style="font-size: 11pt;font-size:85%;" ><span style="font-family:";"><span lang="en-GB"></span></span></span></p><blockquote><p><span style="font-size: 11pt;font-size:85%;" ><span style="font-family:";"><span lang="en-GB">private bool</span></span> <span style="font-family:";"><span lang="en-GB">P1_play = </span></span><span style="color:#ff9900;"><span style="font-family:";"><span lang="en-GB">false</span></span></span><span style="font-family:";"><span lang="en-GB">;</span></span></span></p> <p><span style="font-size: 11pt;font-size:85%;" ><span style="font-family:";"><span lang="en-GB">private bool</span></span> <span style="font-family:";"><span lang="en-GB">P2_play = </span></span><span style="color:#ff9900;"><span style="font-family:";"><span lang="en-GB">false</span></span></span><span style="font-family:";"><span lang="en-GB">;</span></span></span></p> <p> </p> <p><span style="font-size: 11pt;font-size:85%;" ><span style="font-family:";"><span lang="en-GB">private string</span></span> <span style="font-family:";"><span lang="en-GB">P1_coup = </span></span><span style="color:#ff9900;"><span style="font-family:";"><span lang="en-GB">""</span></span></span><span style="font-family:";"><span lang="en-GB">;</span></span></span></p> <p><span style="font-size: 11pt;font-size:85%;" ><span style="font-family:";"><span lang="en-GB">private string</span></span> <span style="font-family:";"><span lang="en-GB">P2_coup = </span></span><span style="color:#ff9900;"><span style="font-family:";"><span lang="en-GB">""</span></span></span><span style="font-family:";"><span lang="en-GB">;</span></span></span></p> <p> </p> <p><span style="font-size: 11pt;font-size:85%;" ><span style="font-family:";"><span lang="en-GB">static private bool</span></span> <span style="font-family:";"><span lang="en-GB">P1_connection = </span></span><span style="color:#ff9900;"><span style="font-family:";"><span lang="en-GB">false</span></span></span><span style="font-family:";"><span lang="en-GB">;</span></span></span></p> <p><span style="font-size: 11pt;font-size:85%;" ><span style="font-family:";"><span lang="en-GB">static private bool</span></span> <span style="font-family:";"><span lang="en-GB">P2_connection = </span></span><span style="color:#ff9900;"><span style="font-family:";"><span lang="en-GB">false</span></span></span><span style="font-family:";"><span lang="en-GB">;</span></span></span></p> <p> </p> <p><span style="font-size: 11pt;font-size:85%;" ><span style="font-family:";"><span lang="en-GB">static private bool</span></span> <span style="font-family:";"><span lang="en-GB">P1_update = </span></span><span style="color:#ff9900;"><span style="font-family:";"><span lang="en-GB">false</span></span></span><span style="font-family:";"><span lang="en-GB">;</span></span></span></p> <p><span style="font-size: 11pt;font-size:85%;" ><span style="font-family:";"><span lang="en-GB">static private bool</span></span> <span style="font-family:";"><span lang="en-GB">P2_update = </span></span><span style="color:#ff9900;"><span style="font-family:";"><span lang="en-GB">false</span></span></span><span style="font-family:";"><span lang="en-GB">;</span></span></span></p> <p> </p> <p><span style="font-size: 11pt;font-size:85%;" ><span style="font-family:";"><span lang="en-GB">static private string[] P1_B1 = </span></span><span style="color:#ff9900;"><span style="font-family:";"><span lang="en-GB">new string</span></span></span><span style="font-family:";"><span lang="en-GB">[4];</span></span></span></p> <p><span style="font-size: 11pt;font-size:85%;" ><span style="font-family:";"><span lang="en-GB">static private string[] P1_B2 = </span></span><span style="color:#ff9900;"><span style="font-family:";"><span lang="en-GB">new string</span></span></span><span style="font-family:";"><span lang="en-GB">[3];</span></span></span></p> <p><span style="font-size: 11pt;font-size:85%;" ><span style="font-family:";"><span lang="en-GB">static private string[] P1_B3 = </span></span><span style="color:#ff9900;"><span style="font-family:";"><span lang="en-GB">new string</span></span></span><span style="font-family:";"><span lang="en-GB">[3];</span></span></span></p> <p><span style="font-size: 11pt;font-size:85%;" ><span style="font-family:";"><span lang="en-GB">static private string[] P1_B4 = </span></span><span style="color:#ff9900;"><span style="font-family:";"><span lang="en-GB">new string</span></span></span><span style="font-family:";"><span lang="en-GB">[2];</span></span></span></p> <p> </p> <p><span style="font-size: 11pt;font-size:85%;" ><span style="font-family:";"><span lang="en-GB">static private string[] P2_B1 = </span></span><span style="color:#ff9900;"><span style="font-family:";"><span lang="en-GB">new string</span></span></span><span style="font-family:";"><span lang="en-GB">[4];</span></span></span></p> <p><span style="font-size: 11pt;font-size:85%;" ><span style="font-family:";"><span lang="en-GB">static private string[] P2_B2 = </span></span><span style="color:#ff9900;"><span style="font-family:";"><span lang="en-GB">new string</span></span></span><span style="font-family:";"><span lang="en-GB">[3];</span></span></span></p> <p><span style="font-size: 11pt;font-size:85%;" ><span style="font-family:";"><span lang="en-GB">static private string[] P2_B3 = </span></span><span style="color:#ff9900;"><span style="font-family:";"><span lang="en-GB">new string</span></span></span><span style="font-family:";"><span lang="en-GB">[3];</span></span></span></p> <p><span style="font-size: 11pt;font-size:85%;" ><span style="font-family:";"><span lang="en-GB">static private string[] P2_B4 = </span></span><span style="color:#ff9900;"><span style="font-family:";"><span lang="en-GB">new string</span></span></span><span style="font-family:";"><span lang="en-GB">[2];</span></span></span></p></blockquote><p><span style="font-size: 11pt;font-size:85%;" ><span style="font-family:";"><span lang="en-GB"></span></span></span></p> <p>
<br />
<br /></p> <p><!--[if gte mso 9]><xml> <w:worddocument> <w:view>Normal</w:View> <w:zoom>0</w:Zoom> <w:hyphenationzone>21</w:HyphenationZone> <w:punctuationkerning/> <w:validateagainstschemas/> <w:saveifxmlinvalid>false</w:SaveIfXMLInvalid> <w:ignoremixedcontent>false</w:IgnoreMixedContent> <w:alwaysshowplaceholdertext>false</w:AlwaysShowPlaceholderText> <w:compatibility> <w:breakwrappedtables/> <w:snaptogridincell/> <w:wraptextwithpunct/> <w:useasianbreakrules/> <w:dontgrowautofit/> </w:Compatibility> <w:browserlevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:latentstyles deflockedstate="false" latentstylecount="156"> </w:LatentStyles> </xml><![endif]--><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Tableau Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]-->Et comme vous voyez dans cette première potion de code j’ai définie six variables logiques. Les deux premières me permettrons de définir l’état ou disons rôle de chaque joueur, s’il a déjà joué, ou s’il a la main pour joué.les deux autres P1 & P2 connexion servent à définir le statut de chaque joueur (connecté ou non connecté) par rapport a la partie en cours. Et enfin les deux dernières celles de l’update qui permettent de connaitre si le joueurs a fournis ou pas toutes les informations nécessaire au lancement de la partie.
<br />
<br />La question qui se pose maintenant, c’est comment faire pour animer tout cas, la je vous dirai « FONCTION » et je vais vous illustrer les quelques fonctions que j’ai développé coté serveur et qui me permettent de synchroniser ma partie.</p> <p><!--[if gte mso 9]><xml> <w:worddocument> <w:view>Normal</w:View> <w:zoom>0</w:Zoom> <w:hyphenationzone>21</w:HyphenationZone> <w:punctuationkerning/> <w:validateagainstschemas/> <w:saveifxmlinvalid>false</w:SaveIfXMLInvalid> <w:ignoremixedcontent>false</w:IgnoreMixedContent> <w:alwaysshowplaceholdertext>false</w:AlwaysShowPlaceholderText> <w:compatibility> <w:breakwrappedtables/> <w:snaptogridincell/> <w:wraptextwithpunct/> <w:useasianbreakrules/> <w:dontgrowautofit/> </w:Compatibility> <w:browserlevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:latentstyles deflockedstate="false" latentstylecount="156"> </w:LatentStyles> </xml><![endif]--><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Tableau Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]-->
<br />
<br /></p> <p><span style="font-size: 11pt;font-size:85%;" ><span style="font-family:";"></span></span></p><blockquote><p><span style="font-size: 11pt;font-size:85%;" ><span style="font-family:";">public string allow_player()</span></span></p> <p><span style="font-size: 11pt;font-size:85%;" ><span style="font-family:";">public void play(</span><span style="color:#ff9900;"><span style="font-family:";">string</span></span><span style="font-family:";"> nb_player,</span><span style="color:#ff9900;"><span style="font-family:";">string</span></span><span style="font-family:";"> coup)</span></span></p> <p><span style="font-size: 11pt;font-size:85%;" ><span style="font-family:";">public string[] upload_position(</span><span style="color:#ff9900;"><span style="font-family:";">string</span></span><span style="font-family:";"> nb_player)</span></span></p> <p><span style="font-size: 11pt;font-size:85%;" ><span style="font-family:";">pu</span><span style="font-family:";"><span lang="en-GB">blic void player_update(</span></span><span style="color:#ff9900;"><span style="font-family:";"><span lang="en-GB">string</span></span></span><span style="font-family:";"><span lang="en-GB"> nb_player,</span></span><span style="color:#ff9900;"><span style="font-family:";"><span lang="en-GB">string</span></span></span><span style="font-family:";"><span lang="en-GB"> pos1,</span></span><span style="color:#ff9900;"><span style="font-family:";"><span lang="en-GB">string </span></span></span><span style="font-family:";"><span lang="en-GB">pos2,</span></span><span style="color:#ff9900;"><span style="font-family:";"><span lang="en-GB">string </span></span></span><span style="font-family:";"><span lang="en-GB">pos3,</span></span><span style="color:#ff9900;"><span style="font-family:";"><span lang="en-GB">string</span></span></span><span style="font-family:";"><span lang="en-GB"> pos4)</span></span></span></p> <p>
<br /></p></blockquote><p>
<br /></p> <p>
<br />Donc pour ce premier Tuto je vais faire tout simple et je vais commencer par ces 5 fonctions que je commenterai au fur et à mesure que je montre mon code.
<br />
<br />Update_player , tout est dans sa définition :D , chaque joueurs sollicitera cette fonction avant de se mettre en état « je suis prêt a lancer ma partie » et cela permet d’updater les positions de ces quartes bateaux sur cette classe coté serveur , donc , après lancement de la partie chaque joueurs aura une grille caché , et elle n’aura qu’un seul truc a cacher cette grille , les positions des bateaux de son adversaire.<!--[if gte mso 9]><xml> <w:worddocument> <w:view>Normal</w:View> <w:zoom>0</w:Zoom> <w:hyphenationzone>21</w:HyphenationZone> <w:punctuationkerning/> <w:validateagainstschemas/> <w:saveifxmlinvalid>false</w:SaveIfXMLInvalid> <w:ignoremixedcontent>false</w:IgnoreMixedContent> <w:alwaysshowplaceholdertext>false</w:AlwaysShowPlaceholderText> <w:compatibility> <w:breakwrappedtables/> <w:snaptogridincell/> <w:wraptextwithpunct/> <w:useasianbreakrules/> <w:dontgrowautofit/> </w:Compatibility> <w:browserlevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:latentstyles deflockedstate="false" latentstylecount="156"> </w:LatentStyles> </xml><![endif]--><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Tableau Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]--></p> <p><span style="font-size: 11pt;font-size:85%;" ><span style="font-family:";"><span lang="en-GB">public void player_update(</span></span><span style="color:#ff9900;"><span style="font-family:";"><span lang="en-GB">string </span></span></span><span style="font-family:";"><span lang="en-GB">nb_player,</span></span><span style="color:#ff9900;"><span style="font-family:";"><span lang="en-GB">string </span></span></span><span style="font-family:";"><span lang="en-GB">pos1,</span></span><span style="color:#ff9900;"><span style="font-family:";"><span lang="en-GB">string </span></span></span><span style="font-family:";"><span lang="en-GB">pos2,</span></span><span style="color:#ff9900;"><span style="font-family:";"><span lang="en-GB">string </span></span></span><span style="font-family:";"><span lang="en-GB">pos3,</span></span><span style="color:#ff9900;"><span style="font-family:";"><span lang="en-GB">string</span></span></span><span style="font-family:";"><span lang="en-GB"> pos4)</span></span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" ></span></span></p><blockquote><p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >{</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" ><span style="color:#ff9900;">if</span> (nb_player==<span style="color:#ff9900;">"P1"</span>)</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >{</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >P1_B1[0]=pos1.Substring(0,2);</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >P1_B1[1]=pos1.Substring(2,2);</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >P1_B1[2]=pos1.Substring(4,2);</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >P1_B1[3]=pos1.Substring(6,2);</span></span></p> <p> </p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >P1_B2[0]=pos2.Substring(0,2);</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >P1_B2[1]=pos2.Substring(2,2);</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >P1_B2[2]=pos2.Substring(4,2);</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >P1_B3[0]=pos3.Substring(0,2);</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >P1_B3[1]=pos3.Substring(2,2);</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >P1_B3[2]=pos3.Substring(4,2);</span></span></p> <p> </p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >P2_B4[0]=pos4.Substring(0,2);</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >P2_B4[1] = pos4.Substring(2, 2);</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >P1_update =<span style="color:#ff9900;"> true</span>;</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >}</span></span></p> <p lang="en-GB"><span style="color:#ff9900;"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >else</span></span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >{</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >P2_B1[0]=pos1.Substring(0,2);</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >P2_B1[1]=pos1.Substring(2,2);</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >P2_B1[2]=pos1.Substring(4,2);</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >P2_B1[3]=pos1.Substring(6,2);</span></span></p> <p> </p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >P2_B2[0]=pos2.Substring(0,2);</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >P2_B2[1]=pos2.Substring(2,2);</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >P2_B2[2]=pos2.Substring(4,2);</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >P2_B3[0]=pos3.Substring(0,2);</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >P2_B3[1]=pos3.Substring(2,2);</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >P2_B3[2]=pos3.Substring(4,2);</span></span></p> <p> </p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >P2_B4[0]=pos4.Substring(0,2);</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >P2_B4[1]=pos4.Substring(2,2);</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >P2_update = <span style="color:#ff9900;">true</span>;</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >}</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >}</span></span></p></blockquote><p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" ></span></span></p> <p>
<br />
<br /></p> <p><!--[if gte mso 9]><xml> <w:worddocument> <w:view>Normal</w:View> <w:zoom>0</w:Zoom> <w:hyphenationzone>21</w:HyphenationZone> <w:punctuationkerning/> <w:validateagainstschemas/> <w:saveifxmlinvalid>false</w:SaveIfXMLInvalid> <w:ignoremixedcontent>false</w:IgnoreMixedContent> <w:alwaysshowplaceholdertext>false</w:AlwaysShowPlaceholderText> <w:compatibility> <w:breakwrappedtables/> <w:snaptogridincell/> <w:wraptextwithpunct/> <w:useasianbreakrules/> <w:dontgrowautofit/> </w:Compatibility> <w:browserlevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:latentstyles deflockedstate="false" latentstylecount="156"> </w:LatentStyles> </xml><![endif]--><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Tableau Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]-->Je vous disais que la fonction update sert à faire parvenir les positions a ma classe coté serveur Pour que chaque joueurs puisse les updater, une deuxième fonction a été élaborer la fonction upload_posision , et la vous remarquez que les position sont retourner sur un tableau de string , donc , je les envoie en chaine de caractère et pour les exploiter coté joueur j’effectue une dé-concaténation et cela m’évitera bien sur d’entrer à chaque fois dans l’exécution de plusieurs boucles for(…) if()….else….</p> <p>
<br />
<br /></p> <p><!--[if gte mso 9]><xml> <w:worddocument> <w:view>Normal</w:View> <w:zoom>0</w:Zoom> <w:hyphenationzone>21</w:HyphenationZone> <w:punctuationkerning/> <w:validateagainstschemas/> <w:saveifxmlinvalid>false</w:SaveIfXMLInvalid> <w:ignoremixedcontent>false</w:IgnoreMixedContent> <w:alwaysshowplaceholdertext>false</w:AlwaysShowPlaceholderText> <w:compatibility> <w:breakwrappedtables/> <w:snaptogridincell/> <w:wraptextwithpunct/> <w:useasianbreakrules/> <w:dontgrowautofit/> </w:Compatibility> <w:browserlevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:latentstyles deflockedstate="false" latentstylecount="156"> </w:LatentStyles> </xml><![endif]--><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Tableau Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]-->
<br />
<br /></p> <p><span style="font-size: 11pt;font-size:85%;" ><span style="font-family:";"><span lang="en-GB"></span></span></span></p><blockquote><p><span style="font-size: 11pt;font-size:85%;" ><span style="font-family:";"><span lang="en-GB">public string[] upload_position(</span></span><span style="color:#ff9900;"><span style="font-family:";"><span lang="en-GB">string</span></span></span><span style="font-family:";"><span lang="en-GB"> nb_player)</span></span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >{</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" ><span style="color:#ff9900;">string</span>[] Positions = <span style="color:#ff9900;">new string</span>[4];</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" ><span style="color:#ff9900;">if</span> (nb_player == <span style="color:#ff9900;">"P1"</span>)</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >{</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >Positions[0] = P2_B1[0] + P2_B1[1] + P2_B1[2] + P2_B1[3];</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >Positions[1] = P2_B2[0] + P2_B2[1] + P2_B2[2];</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >Positions[2] = P2_B3[0] + P2_B3[1] + P2_B3[2];</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >Positions[3] = P2_B4[0] + P2_B4[1];</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" ><span style="color:#ff9900;">return</span> Positions;</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >}</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >else</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >{</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >Positions[0] = P1_B1[0] + P1_B1[1] + P1_B1[2] + P1_B1[3];</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >Positions[1] = P1_B2[0] + P1_B2[1] + P1_B2[2];</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >Positions[2] = P1_B3[0] + P1_B3[1] + P1_B3[2];</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >Positions[3] = P1_B4[0] + P1_B4[1];</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" ><span style="color:#ff9900;">return</span> Positions;</span></span></p> <p><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >}</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >}</span></span></p> </blockquote><p>
<br />
<br /></p> <p><!--[if gte mso 9]><xml> <w:worddocument> <w:view>Normal</w:View> <w:zoom>0</w:Zoom> <w:hyphenationzone>21</w:HyphenationZone> <w:punctuationkerning/> <w:validateagainstschemas/> <w:saveifxmlinvalid>false</w:SaveIfXMLInvalid> <w:ignoremixedcontent>false</w:IgnoreMixedContent> <w:alwaysshowplaceholdertext>false</w:AlwaysShowPlaceholderText> <w:compatibility> <w:breakwrappedtables/> <w:snaptogridincell/> <w:wraptextwithpunct/> <w:useasianbreakrules/> <w:dontgrowautofit/> </w:Compatibility> <w:browserlevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:latentstyles deflockedstate="false" latentstylecount="156"> </w:LatentStyles> </xml><![endif]--><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Tableau Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]-->Je continue alors avec mes fonctions, il en reste deux pour ce premier tuto , les fonctions , play et Allow_player, la fonction Play est sollicité a chaque coup dans la partie , elle informe chaque joueur sur son tour, s’il doit jouer ou s’il doit attendre le cout de son adversaire.
<br />Et cela a travers les deux variables que j’ai définie précédemment, P1_play et P2_play<!--[if gte mso 9]><xml> <w:worddocument> <w:view>Normal</w:View> <w:zoom>0</w:Zoom> <w:hyphenationzone>21</w:HyphenationZone> <w:punctuationkerning/> <w:validateagainstschemas/> <w:saveifxmlinvalid>false</w:SaveIfXMLInvalid> <w:ignoremixedcontent>false</w:IgnoreMixedContent> <w:alwaysshowplaceholdertext>false</w:AlwaysShowPlaceholderText> <w:compatibility> <w:breakwrappedtables/> <w:snaptogridincell/> <w:wraptextwithpunct/> <w:useasianbreakrules/> <w:dontgrowautofit/> </w:Compatibility> <w:browserlevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:latentstyles deflockedstate="false" latentstylecount="156"> </w:LatentStyles> </xml><![endif]--><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Tableau Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]--></p> <p><span style="font-size: 11pt;font-size:85%;" ><span style="font-family:";"><span lang="en-GB"></span></span></span></p><blockquote><p><span style="font-size: 11pt;font-size:85%;" ><span style="font-family:";"><span lang="en-GB">public void play(</span></span><span style="color:#ff9900;"><span style="font-family:";"><span lang="en-GB">string</span></span></span><span style="font-family:";"><span lang="en-GB"> nb_player,</span></span><span style="color:#ff9900;"><span style="font-family:";"><span lang="en-GB">string </span></span></span><span style="font-family:";"><span lang="en-GB">coup)</span></span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >{</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" ><span style="color:#ff9900;">if</span> (nb_player == <span style="color:#ff9900;">"P1"</span>)</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >{</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >P1_play = <span style="color:#ff9900;">true</span>;</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >P2_play = <span style="color:#ff9900;">false</span>;</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >}</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" ><span style="color:#ff9900;">else if </span>(nb_player == <span style="color:#ff9900;">"P2"</span>)</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >{</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >P2_play = <span style="color:#ff9900;">true</span>;</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >P1_play = <span style="color:#ff9900;">false</span>;</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >}</span></span></p> <p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" >}</span></span></p></blockquote><p lang="en-GB"><span style="font-family:";"><span style="font-size: 11pt;font-size:85%;" ></span></span></p> <p>
<br />
<br /></p> <p><!--[if gte mso 9]><xml> <w:worddocument> <w:view>Normal</w:View> <w:zoom>0</w:Zoom> <w:hyphenationzone>21</w:HyphenationZone> <w:punctuationkerning/> <w:validateagainstschemas/> <w:saveifxmlinvalid>false</w:SaveIfXMLInvalid> <w:ignoremixedcontent>false</w:IgnoreMixedContent> <w:alwaysshowplaceholdertext>false</w:AlwaysShowPlaceholderText> <w:compatibility> <w:breakwrappedtables/> <w:snaptogridincell/> <w:wraptextwithpunct/> <w:useasianbreakrules/> <w:dontgrowautofit/> </w:Compatibility> <w:browserlevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:latentstyles deflockedstate="false" latentstylecount="156"> </w:LatentStyles> </xml><![endif]--><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Tableau Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]-->Et pour finir une dernière fonction, que n’était présente dans mon code, mais que j’ai préféré implémenté pour que ca fasse plus propre et que mon code soit bien compréhensible
<br />Une fonction de ce genre vous sera surtout utilise si vous travailler sur une plus grosse application serveur , genre un serveur qui supporte 5,10 voir plus de 20 joueurs , la vous devrai allouer un état a chaque joueur , or , dans mon code la , je ne fais que fournir deux information , quel joueur s’est connecté et quel est son statue par rapport à la partie qui vas se lancer « P1 » ou « P 2 » imaginez un peu ce que cela risquerai de donner comme fonction dans le cas ou je travaille avec 10 joueurs en même temps. Je sais que ca vous excite tout ca ,ben , ne vous en faite pas , aussitôt que je terminerai ces premier tutos ou je vais montrer le plus gros de mon code on redéveloppera ensemble ce même algorithme pour une charge minimale de 10 utilisateurs :D , j’ai ma petite idée sur la manière la plus optimale de le faire ;)
<br />
<br />Et si vous vous encore une fois revoir à quoi ça va ressembler à la fin , c'est<span style="color:#cccccc;"> <a href="http://ahmed-formation.blogspot.com/2009/04/hey-venez-developper-votre-premier-jeu.html">ICI</a></span> que ça se passe :)</p> <p>
<br />
<br /></p> <p>
<br />
<br /></p> <p>
<br />
<br /></p> <p>
<br />
<br /></p> <p><!--[if gte mso 9]><xml> <w:worddocument> <w:view>Normal</w:View> <w:zoom>0</w:Zoom> <w:hyphenationzone>21</w:HyphenationZone> <w:punctuationkerning/> <w:validateagainstschemas/> <w:saveifxmlinvalid>false</w:SaveIfXMLInvalid> <w:ignoremixedcontent>false</w:IgnoreMixedContent> <w:alwaysshowplaceholdertext>false</w:AlwaysShowPlaceholderText> <w:compatibility> <w:breakwrappedtables/> <w:snaptogridincell/> <w:wraptextwithpunct/> <w:useasianbreakrules/> <w:dontgrowautofit/> </w:Compatibility> <w:browserlevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:latentstyles deflockedstate="false" latentstylecount="156"> </w:LatentStyles> </xml><![endif]--><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Tableau Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]-->
<br />
<br /></p> <p style="margin-bottom: 0cm;">
<br /></p> <p class="MsoNormal" style="">
<br /><span style=";font-family:";font-size:10;" lang="EN-GB"><o:p></o:p></span></p> ahmed_shttp://www.blogger.com/profile/14667096543240265456noreply@blogger.com6tag:blogger.com,1999:blog-3956803726703326181.post-53879356349000050792009-04-26T20:14:00.000-07:002009-12-19T03:43:09.898-08:00.NET vs JAVA en 7 rounds : Au plaisir des développeurs :)<meta equiv="Content-Type" content="text/html; charset=utf-8"><meta name="ProgId" content="Word.Document"><meta name="Generator" content="Microsoft Word 11"><meta name="Originator" content="Microsoft Word 11"><link rel="File-List" href="file:///C:%5CUsers%5CNOUR%5CAppData%5CLocal%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"><!--[if gte mso 9]><xml> <w:worddocument> <w:view>Normal</w:View> <w:zoom>0</w:Zoom> <w:hyphenationzone>21</w:HyphenationZone> <w:punctuationkerning/> <w:validateagainstschemas/> <w:saveifxmlinvalid>false</w:SaveIfXMLInvalid> <w:ignoremixedcontent>false</w:IgnoreMixedContent> <w:alwaysshowplaceholdertext>false</w:AlwaysShowPlaceholderText> <w:compatibility> <w:breakwrappedtables/> <w:snaptogridincell/> <w:wraptextwithpunct/> <w:useasianbreakrules/> <w:dontgrowautofit/> </w:Compatibility> <w:browserlevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:latentstyles deflockedstate="false" latentstylecount="156"> </w:LatentStyles> </xml><![endif]--><style> <!-- /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} @page Section1 {size:612.0pt 792.0pt; margin:70.85pt 70.85pt 70.85pt 70.85pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} --> </style><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Tableau Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]--> <p class="MsoNormal"><span style=""> </span>
<br /></p><p class="MsoNormal"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9eYhnmKhWI2hXd2vQiLTS8RSI7ilxcfJ8r7F70h2Rrnd7yhsUhBYbqOd42BVE44gkA0x-VeevVPCVQZ1gBWKZexfi5mZ_1p59UAakHeOihHSASdElzkzQY0eH6dmH1va_ZvEqoRNXDgI/s1600-h/article.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 157px; height: 236px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9eYhnmKhWI2hXd2vQiLTS8RSI7ilxcfJ8r7F70h2Rrnd7yhsUhBYbqOd42BVE44gkA0x-VeevVPCVQZ1gBWKZexfi5mZ_1p59UAakHeOihHSASdElzkzQY0eH6dmH1va_ZvEqoRNXDgI/s320/article.jpg" alt="" id="BLOGGER_PHOTO_ID_5329205137373070658" border="0" /></a></p><p class="MsoNormal">
<br /></p> Ah enfin un débat qui fait rage, deux mondes qui se bousculent celui de Microsoft et des technologies NET d’une part et celui de JAVA/J2EE d’autre part. Étant développeur plutôt orienté plutot vers le monde Microsoft et les langages NET, je m’intéresse ces dernier temps a ce vaste monde de l'Open Source qu’est le monde JAVA, quel en sont les avantages et quel choix serai-il<span style=""> </span>astucieux de faire, nous allons comparer ses deux mondes sur plusieurs points : …
<br /><o:p> </o:p>
<br /><span style=""> </span>Avant de commencer quelques éclaircissements s’imposent, n’oublions pas que le monde .NET tourne autour du Framework .NET .Il se voulait être un support multi langages unique en son genre, ce qui offrait la possibilité a tout type de développeurs quel que soit son langages d’adapter ses portions de code à ses futurs solutions élaborées sous .NET et cela grâce à la CLR (Commun Langage Runtime). Java reste plutôt conservateur par rapport à ce point et Microsoft utilise souvent cet argument pour venter les mérites du .NET :D c’est pour dire que c’est de bonne guerre …
<br /><o:p>
<br /></o:p>
<br /><span style="font-weight: bold;">Particularités :</span>
<br /><o:p> </o:p>
<br /><span style=""> </span>J2EE, le chouchou de la communauté Open Source offre un très large éventail en termes de possibilité dans le développement pour les entreprises. Grace à sa légèreté et à sa portabilité, JAVA est très présent dans les applications mobiles. Les outils JAVA sont aussi présent dans toutes les plateformes ce qui laisse aux développeurs une certaine flexibilité de travail…
<br /><span style=""> </span>
<br /><span style=""> </span>Coté serveur j’estime que le JAVA à atteint une certaine maturité qui lui donne un certain avantage, je m’explique ; Linux et Unix détiennent plus de 2/3 des installations de serveurs dans le monde, et .NET est maintenant accueillable sur des serveurs Linux (Projet Mono)
<br /><span style=""> </span>Coté client, la balance pencherai plutôt pour le .NET, et cela grâce à l’OS WINDOWS qui
<br />Est présent sur la plupart des PC et qui inclut dans ses dernières version le Framework .NET.
<br /><o:p> </o:p>
<br /><span style="font-weight: bold;">Dépendance :</span>
<br /><o:p> </o:p>
<br />
<br />Certain dirons que<span style=""> </span>MS DOS, Win 3.11 et Win95 n’offrent aucun support pour les applications fonctionnant dans un environnement .NET, je répondrai alors en disant ;<span style=""> </span>aurai-t-on vraiment besoin de faire tourner nos applications sur les Systèmes d’exploitation qui date du moyen âge o_O ! <span style=""> </span>hein ! …
<br /><o:p> </o:p>
<br /><span style="font-weight: bold;">Portabilité :</span>
<br /><o:p> </o:p>
<br />.<span style=""> </span>NET n ‘est généralement pas directement portable sur PDA ce qui donne à JAVA un point de plus par rapport à ca. Je dirai aussi que Microsoft .NET à une tendance à s’orienter vers le développement Web avec l’ASP.NET , Silverlight …ect , et que le JAVA se chargera plutôt de l’élaboration d’applications distribuées pour les entreprises (JSP, Serlets, EJB)
<br /><span style=""> </span>.NET offre aussi aux developpeurs une plus grande facilité de developpement
<br />
<br /><o:p> </o:p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW6v9cW79a_ZOt2NyUrsGjIIb8JtI7DHJeD6c3HKS0YMCTduN6Uw2S4RxtiMT-t3nyNb2nPkBbDZDiXe7VB836IyQOjaCxMuvz0aPiM9vIRKHGQGhMXQz6D9P-MriO7rSBzlc397ok_i0/s1600-h/article1.gif"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 168px; height: 145px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW6v9cW79a_ZOt2NyUrsGjIIb8JtI7DHJeD6c3HKS0YMCTduN6Uw2S4RxtiMT-t3nyNb2nPkBbDZDiXe7VB836IyQOjaCxMuvz0aPiM9vIRKHGQGhMXQz6D9P-MriO7rSBzlc397ok_i0/s320/article1.gif" alt="" id="BLOGGER_PHOTO_ID_5329205319935407026" border="0" /></a>
<br /><span style="font-weight: bold;">Originalité :</span>
<br /><o:p> </o:p>
<br /><span style=""> </span>Vous avez surement entendu parler de la smart navigation possible à travers ASP.NET et qui consiste à ne pas télécharger les pages complètement mais à ne télécharger que les portions de page modifié ce qui vas donner lieu à une navigation disons plus optimisée.
<br /><span style=""> </span>JAVA est le roi de l’Open source avec open Office et Apache, en plus du serveur d’applications J2EE le JBOSS.
<br /><span style=""> </span>Pour créer un web service en .NET, on ajoute simplement un attribut, et pour appeler notre web service on n’a plus qu’a le référencer comme web référence ; un objet proxy est généré utilisable du coté client.
<br />
<br /><span style=""> </span>Ce qui est drôle dans cette histoire c’est qu’IBM et Microsoft se font une guerre des web services, et Windows cherche toujours à avoir le monopole.
<br /><o:p> </o:p>
<br /><span style="font-weight: bold;">Application multiutilisateurs :</span>
<br /><o:p> </o:p>
<br /><span style=""> </span>.NET et à travers l’apparition du .NET Remoting, duWCF, des web services a percé dans le domaine des applications distribuées ce qui lui donne une grande capacité à être utilisé dans l’élaboration de solutions multiutilisateurs. Il dispose aussi pour cela de dizaine de milliers de classes
<br /><span style=""> </span>Pour ce qui est de Java, à travers le serveur d’application JBOSS on peut concevoir des solutions allons jusqu'à plus de 10.000 clients.
<br /><span style=""> </span>
<br /><span style="font-weight: bold;">Sécurité :</span>
<br /><o:p> </o:p>
<br /><span style=""> </span>Je pense que l’avenir du .NET sera plutôt dans les applications bureau et que Le java grâce au J2EE s’orientera plutôt vers le développement réseau sécurisé .sa maturité l’impose ^^ !.
<br /><span style=""> </span>Java s’est imposé sur ce point à travers la sécurité de ses architectures, <b>Java/CORBA </b><span style="">en est l’exemple<b><o:p></o:p></b></span>
<br />Microsoft a dernièrement doté sa plateforme de modules de sécurité intégrée
<br /><o:p> </o:p>
<br /><span style="font-weight: bold;">Autres particularités :</span>
<br /><o:p> </o:p>
<br /><span style=""> </span>IBM à une plus grande expérience dans le domaine de l’informatique repartie (COBRA,Encina,…ect) , SUN offre aussi à travers le Websphere studio , la création de web services en plus des options de gestion de la montée en charge.
<br /><span style=""> </span>Alors que .NET palie à ce problème à travers sa possibilité à travailler en mode déconnecté, par exemple, en utilisant les Data set.
<br /><o:p> </o:p>
<br />
<br /><span style=""> </span>Pour finir, j’ai décidé de me lancer à la conquête de ce vaste monde qu’est le monde Java , ayant été développeur .NET pendant deux ans, je bascule dans l’autre monde celui de l’open source de la portabilité et de la sécurité. ahmed_shttp://www.blogger.com/profile/14667096543240265456noreply@blogger.com2tag:blogger.com,1999:blog-3956803726703326181.post-31665793144216723262009-04-25T09:42:00.001-07:002009-04-29T03:43:29.641-07:00WCF : La magie des applications distribuées…<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7g0DbhK8ZoEoZLV9CSHNhnGyAdWL6ft1NKCgRAIwwsdcSWH35RworIjvc9n6w83bosKMPaSQEGoFuIOBkZOO7yIaH_KS-7W9J7LRJsZmr3uuhBSUhVOnqBIka4vLU1K2C9oVGBZty8uw/s1600-h/WCF.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 196px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7g0DbhK8ZoEoZLV9CSHNhnGyAdWL6ft1NKCgRAIwwsdcSWH35RworIjvc9n6w83bosKMPaSQEGoFuIOBkZOO7yIaH_KS-7W9J7LRJsZmr3uuhBSUhVOnqBIka4vLU1K2C9oVGBZty8uw/s320/WCF.JPG" alt="" id="BLOGGER_PHOTO_ID_5328670488264483618" border="0" /></a><br /><span style="font-size:100%;"><span style="font-family:arial;">Windows Comunication Fundation est une extension du framework .NET 3.0 Vous pouvez à travers WCF concevoir et élaborer des applications distribuées fonctionnant dans un environnement réseaux , et la , vous vous dites que cela n’apport rien de plus par rapport à ce qu’on avait l’habitude de faire avec .NET Remoting , les Web Services SOAP , le MSMQ ou encore le COM+ !</span><br /><br /><span style="font-family:arial;"> Détrompez vous, car WCF représente aussi un support pour toutes ses procédures de communications, donc quand vous opter pour WCF , vous n’aurai pas à changé votre code</span><br /><span style="font-family:arial;">pour adapté une solution fonctionnant en SOAP/HTML pour l’adapter à votre solution déployée. Par exemple, beaucoup d’entre vous utilise le http comme protocole de communication dans leurs applications webs , si vous décider demain de faire migrer ces même solutions et de les faire fonctionner sous TCP , aucune modification dans votre code ne sera nécessaire.</span><br /><br /><span style="font-family:arial;"> La partie code et la configuration de vos technologies de communication se font d’une manière indépendante.</span><br /><br /><span style="font-family:arial;"> Pour que vous puissiez avoir une idée sur la porté réelle de<span style="color: rgb(204, 204, 204);"> </span><a style="color: rgb(204, 204, 204);" href="http://vincentlaine.developpez.com/tuto/dotnet/wcf/"><span style="color: rgb(204, 204, 204);">WCF</span> </a>, je vous conseille de suivre le Tutoriel <a style="color: rgb(204, 204, 204);" href="http://vincentlaine.developpez.com/tuto/dotnet/wcf/">suivant</a><span style="color: rgb(204, 204, 204);"> </span>, il vous montre la conception et la réalisation d’un service de données en WCF.</span><br /><br /><span style="font-family:arial;"> Aussi pour bénéficier des extensions WCF dans votre framwork , je vous conseille dés maintenant de basculer vers la version 3.5 . Téléchargeable </span><a style="font-family: arial; color: rgb(204, 204, 204);" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=333325fd-ae52-4e35-b531-508d977d32a6&displaylang=fr">ICI</a><span style="font-family:arial;">.</span></span>ahmed_shttp://www.blogger.com/profile/14667096543240265456noreply@blogger.com2tag:blogger.com,1999:blog-3956803726703326181.post-61239023647231606662009-04-25T09:26:00.000-07:002009-04-29T03:40:07.802-07:00Silverlight 2 : L’avenir du web…<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCCcD-Gcb2ji4ISGOHDkFuKc4L6eMBym11kdFUCU4KXIhR-EJMgO2B2JS3nDFdZy3CWZ1Wbkvcuy9QXtsdyRZJMiimIWrRM3TO8RdKZ0nZNyzwL3hyQ4ZPrTPrPH7zkA9v6jYzJgdaJE8/s1600-h/silverlight2beta.png"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 195px; height: 217px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCCcD-Gcb2ji4ISGOHDkFuKc4L6eMBym11kdFUCU4KXIhR-EJMgO2B2JS3nDFdZy3CWZ1Wbkvcuy9QXtsdyRZJMiimIWrRM3TO8RdKZ0nZNyzwL3hyQ4ZPrTPrPH7zkA9v6jYzJgdaJE8/s320/silverlight2beta.png" alt="" id="BLOGGER_PHOTO_ID_5328671721160730306" border="0" /></a>
<br /><span style=";font-family:arial;font-size:100%;" >
<br /></span><meta equiv="Content-Type" content="text/html; charset=utf-8"><meta name="ProgId" content="Word.Document"><meta name="Generator" content="Microsoft Word 11"><meta name="Originator" content="Microsoft Word 11"><span style="font-size:100%;"> Microsoft a lancé dernièrement Silverlight dans sa version 2, en voyant ce qu’elle apporte de plus on se rend vite compte que la version 1 n’été qu’un simple test en vue de préparer le terrain à celle la.</span>
<br />
<br /><span style="font-size:100%;"> Selon Microsoft le lancement de cette nouvelle version est un succès totale Silverlight serai donc présent dans plus d’un PC sur quatre, son conçurent directe Adobe flash monopolise le plus grande du marché dans le domaine.</span>
<br />
<br />
<br /><span style="font-size:100%;">Néanmoins, de nombreux partenaires de Microsoft, de grands diffuseurs ont opté pour silverlight. Quelles sont alors les nouveautés apporté par silverlight 2 :</span><!--[if gte mso 9]><xml> <w:worddocument> <w:view>Normal</w:View> <w:zoom>0</w:Zoom> <w:hyphenationzone>21</w:HyphenationZone> <w:punctuationkerning/> <w:validateagainstschemas/> <w:saveifxmlinvalid>false</w:SaveIfXMLInvalid> <w:ignoremixedcontent>false</w:IgnoreMixedContent> <w:alwaysshowplaceholdertext>false</w:AlwaysShowPlaceholderText> <w:compatibility> <w:breakwrappedtables/> <w:snaptogridincell/> <w:wraptextwithpunct/> <w:useasianbreakrules/> <w:dontgrowautofit/> </w:Compatibility> <w:browserlevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:latentstyles deflockedstate="false" latentstylecount="156"> </w:LatentStyles> </xml><![endif]--><style> <!-- /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} a:link, span.MsoHyperlink {color:blue; text-decoration:underline; text-underline:single;} a:visited, span.MsoHyperlinkFollowed {color:purple; text-decoration:underline; text-underline:single;} @page Section1 {size:612.0pt 792.0pt; margin:70.85pt 70.85pt 70.85pt 70.85pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} --> </style><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Tableau Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]--> <p class="MsoNormal" style="font-family:arial;"><span style="font-size:100%;"><o:p> </o:p></span></p> <ul><li><span style="font-size:100%;"> </span><span style="font-size:100%;">La technologie Deep Zoom ; ce qui offre une plus grande résolution d’image et fluidité des données.</span></li><li><span style="font-size:100%;"> </span><span style="font-size:100%;">Plus de contrôles intégrés, ce qui donne une plus grande simplicité de personnalisation</span> <span style="font-size:100%;">vos applications</span></li><li><span style="font-size:100%;"> </span><span style="font-size:100%;">offre aux développeurs .NET plus de facilité d’implémentation car elle supporte les langages .NET notamment, le C#.</span></li></ul><span style="font-size:100%;"> </span><span style="font-size:100%;">La protection DRM des contenues basée sur playReady de microsoft.</span>
<br /><span style="font-size:100%;"> </span>
<br /><span style="font-size:100%;"> Silverligt a aussi été intégré dans l’environnement Eclipse ce qui donne aux développeurs une plus grande compatibilité avec leur environnement.</span>
<br /><span style="font-size:100%;"><o:p> </o:p></span>
<br /><span style="font-size:100%;"> Silverlight est disponible pour Windows notamment pour les navigateurs Internet Explorer dans ses version 6,7 et 8, FireFox , pour Linux , et aussi pour Safari de MAC OS .</span>
<br /><span style="font-size:100%;"><o:p> </o:p></span>
<br /><span style="font-size:100%;"> Enfin, et les développeurs en seront plus que content , pour intégrer Silverlight dans vos prochains solution vous devez d’abord télécharger et installer le <a style="color: rgb(204, 204, 204);" href="http://go.microsoft.com/fwlink/?LinkId=129043">Silverlight Tools for Visual Studio 2008 SP1</a> ensuite , vous devez passer au SP1 de Visual studio disponible<span style="color: rgb(204, 204, 204);"> </span><a style="color: rgb(204, 204, 204);" href="http://go.microsoft.com/fwlink/?LinkId=129043">ICI</a></span><span style="font-size:100%;"><a href="http://go.microsoft.com/fwlink/?LinkId=129043">
<br /></a></span>
<br /><span style="font-size:100%;"> Et pour plus d’information sur ces procédure , rendez vous au site<span style="color: rgb(204, 204, 204);"> </span><a style="color: rgb(204, 204, 204);" href="http://www.silverlight.net/">www.silverlight.net</a></span>
<br />ahmed_shttp://www.blogger.com/profile/14667096543240265456noreply@blogger.com0tag:blogger.com,1999:blog-3956803726703326181.post-70715260909470372702009-04-23T17:12:00.000-07:002009-04-29T03:39:37.041-07:00hey , venez developper votre premier jeu en C# ...<meta equiv="Content-Type" content="text/html; charset=utf-8"><meta name="ProgId" content="Word.Document"><meta name="Generator" content="Microsoft Word 11"><meta name="Originator" content="Microsoft Word 11"><link rel="File-List" href="file:///C:%5CUsers%5CNOUR%5CAppData%5CLocal%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"><!--[if gte mso 9]><xml> <w:worddocument> <w:view>Normal</w:View> <w:zoom>0</w:Zoom> <w:hyphenationzone>21</w:HyphenationZone> <w:punctuationkerning/> <w:validateagainstschemas/> <w:saveifxmlinvalid>false</w:SaveIfXMLInvalid> <w:ignoremixedcontent>false</w:IgnoreMixedContent> <w:alwaysshowplaceholdertext>false</w:AlwaysShowPlaceholderText> <w:compatibility> <w:breakwrappedtables/> <w:snaptogridincell/> <w:wraptextwithpunct/> <w:useasianbreakrules/> <w:dontgrowautofit/> </w:Compatibility> <w:browserlevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:latentstyles deflockedstate="false" latentstylecount="156"> </w:LatentStyles> </xml><![endif]--><style> <!-- /* Font Definitions */ @font-face {font-family:Wingdings; panose-1:5 0 0 0 0 0 0 0 0 0; mso-font-charset:2; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:0 268435456 0 0 -2147483648 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} @page Section1 {size:595.3pt 841.9pt; margin:70.85pt 70.85pt 70.85pt 70.85pt; mso-header-margin:35.4pt; mso-footer-margin:35.4pt; mso-paper-source:0;} div.Section1 {page:Section1;} --> </style><!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Tableau Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]-->
<br /><span style=""> </span>Hey , Ça risque d’être un peu chaud pour ce post , Eh oui , je vous en avez déjà parler , la conception et le développement complet d’un jeu , et encore , quel jeu , la fameuse bataille navale , aussi compliquer que peuvent vous paraitre les algorithme à mettre en place pour positionner vos bateaux , pour updater ceux de votre adversaire ,pour synchroniser votre serveur , et pour mettre en place votre espace multi-joueurs , je vous dirai que cela reste largement à votre porté.
<br /><o:p> </o:p>
<br /><span style=""> </span>
<br />Si vous êtes passionné de programmation, que vous pouvez passer une nuit entière à coder, à compiler et à debugger, que vous vous dite, Je m’en fou royalement de ma réunion de demain matin, il peuvent bien attendre, l’essentiel c’est que je puisse faire ma petite partie avant de dormir , ne vous inquiétez , vous n’êtes ni fou ni malade , vous venez simplement d’entre dans une autre dimension celle des développeurs ,
<br /><o:p> </o:p>
<br />
<br />ca vous arrive souvent de penser en code, de concevoir des applications quand vous marcher dans la rue, ce qu’il vous faut alors c’est de vous repolarisé, comment ? Ben en commençant à taper du code, qu’une idée vous viennent a l’esprit c’est bien, que vous la transformez en code c’est encore beaucoup mieux !
<br /><o:p> </o:p>
<br />
<br />Aller , un petit avant gout de ce qui vous attend dans ce post en attendant qu’on parle CODE :D
<br />
<br /><iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.blogger.com/video.g?token=AD6v5dxXkYW1h7wmnu-vEMdm_DgJCMv6SfpoEKmpms_ugnmXL60shY6GyokYyrO3vGLuFsT6hrmBiVejVp9zUv4x' class='b-hbp-video b-uploaded' frameborder='0'></iframe>
<br /><o:p> </o:p>
<br /><o:p> </o:p>
<br />
<br />Alors , Je sais ce que vous vous dites , Waw , je veux le faire , je veux coder ma bataille , je vous comprend … :D
<br /><o:p> </o:p>
<br /><o:p> </o:p>
<br /><span style=""> </span>Je pense que vous êtes assez motivé <span style="font-family:Wingdings;"><span style="">J</span></span> , je vais commencer alors par introduire mon Tutoriel , il n’y a pas si longtemps de cela , je me suis lancer dans la conception puis le développement de ce jeu, je voulais le faire en C#, j’avais donc la possibilité de travailler avec Visual Studio 2008 , j’ai opté aussi pour le XAML pour concevoir mes interfaces, Au début je voulais mettre en place un serveur supportant au maximum une charge de 10 joueurs , mais vue que j’étais impatient de faire ma première partie , je me suis contenté d’en faire un à deux joueurs,
<br />
<br />Comment ? je vous explique …
<br /><o:p> </o:p>
<br />
<br />.NET REMOTING , vous connaissez ? <span style=""> </span>ca sera l’équivalant du RMI pour les développeurs JAVA.
<br /><o:p> </o:p>
<br />Si oui , je vous conseil alors de commencer à élaborer vos interface , à programmer les classes qui vont les implémenter de configurer vos Channel , je vous conseil de les faire en TCP .
<br /><o:p> </o:p>
<br />
<br />Et si vous êtes<span style=""> </span>amateur et que vous n’avez jamais conçu d’applications fonctionnant sous le principe Client / Serveur, je vous conseille de jeter un petit coup d’œil sur un autre article « <a style="color: rgb(204, 204, 204);" href="http://defaut.developpez.com/tutoriel/dotnet/remoting/cs/">débuter avec .NET REMOTING en C#</a> » cliquer<span style="color: rgb(204, 204, 204);"> </span><a style="color: rgb(204, 204, 204);" href="http://defaut.developpez.com/tutoriel/dotnet/remoting/cs/">ICI</a><span style="color: rgb(204, 204, 204);"> </span>pour en savoir plus..
<br /><span style=""> </span>
<br />
<br />Je consacrerai dans mes prochains postes un tutoriel complet sur le codage de ma partie serveur, ca va vous permettre d’avoir une idée, et de laisser libre court à<span style=""> </span>votre imagination,
<br />
<br />Je sais que vous y avez déjà pensé, pourquoi n’essayerai-je pas de coder mon Titris , mon domino , et pour les plus balèze d’entre vous<span style=""> </span>, mon jeu d’échec , je ne vous cache pas qu’aussitôt que je serai en vac, je me lancerai dans la conception d’algorithme intelligents générateur de solutions pour mon jeu d’échec.
<br /><o:p> </o:p>
<br />
<br />Je reviens à mon truc, Donc , je disais que , Ah oui , Pour les amateurs de Xbox , il est possible de développer des jeu à travers le moteur XNA , c’est assez simple , quelques notions en C#, le module XNA ,et vous vous lancez … donc, je vous propose pour ceci un autre <a style="color: rgb(204, 204, 204);" href="http://fearyourself.developpez.com/tutoriel/xna/">Tutoriel </a>histoire de vous familiarisez avec le module<span style="color: rgb(204, 204, 204);"> </span><a style="color: rgb(204, 204, 204);" href="http://fearyourself.developpez.com/tutoriel/xna/">XNA</a> cliquez <a style="color: rgb(204, 204, 204);" href="http://fearyourself.developpez.com/tutoriel/xna/">ICI</a> pour en savoir plus.
<br /><o:p> </o:p>
<br />
<br />En attendant que vous vous documentez, je préparerai mon prochain post , je montrerai alors , la conception complète des interface du jeu ,le control des contrôles sous visual Studio et une partie du code nécessaire au repérage et au positionnement des bateaux .
<br />
<br />
<br /><o:p> </o:p>
<br />
<br />ahmed_shttp://www.blogger.com/profile/14667096543240265456noreply@blogger.com0