<?xml 
version="1.0" encoding="utf-8"?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
>

<channel xml:lang="fr">
	<title>Club LinuX Nord-Pas de Calais</title>
	<link>https://clx.asso.fr/spip/</link>
	<description>Association loi 1901 de promotion des logiciels libres en r&#233;gion Nord-Pas de Calais depuis 1999.</description>
	<language>fr</language>
	<generator>SPIP - www.spip.net (Sarka-SPIP)</generator>

	<image>
		<title>Club LinuX Nord-Pas de Calais</title>
		<url>http://clx.asso.fr/spip/local/cache-vignettes/L144xH21/siteon0-86bed.png?1759523095</url>
		<link>https://clx.asso.fr/spip/</link>
		<height>21</height>
		<width>144</width>
	</image>



 
	<item xml:lang="fr">
		<title>Le concours du reporter (3/3)</title>
		<link>http://clx.asso.fr/spip/?Le-concours-du-reporter-3-3</link>
		<guid isPermaLink="true">http://clx.asso.fr/spip/?Le-concours-du-reporter-3-3</guid>
		<dc:date>2003-03-31T14:49:06Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Ga&#233;tan RYCKEBOER</dc:creator>



		<description>&lt;p&gt;Maintenant, les r&#218;gles officielles du jeu (le r&#218;glement) et la proc&#233;dure de qualification, le d&#233;roulement du championnat, etc.&lt;/p&gt;

-
&lt;a href="http://clx.asso.fr/spip/?-2003-Concours-de-programmation-" rel="directory"&gt;2003 : Concours de programmation&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Tout jeu poss&#218;de des r&#218;gles, le concours du Reporter n'y &#233;chappe pas, voici donc celles qui seront appliqu&#233;es pour :&lt;/p&gt;
&lt;p&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; &#233;tablir le classement des pilotes logiciels de chaque participant sur un circuit de r&#233;f&#233;rence qui sera publi&#233; chaque mois sur le site de CLX jusqu'&#224; cl&#206;ture du concours,&lt;/p&gt;
&lt;p&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; &#233;tablir le classement d&#233;finitif &#224; cl&#206;ture du concours lors d'&#233;preuves &#233;liminatoires disput&#233;es sur plusieurs circuits&lt;/p&gt;
&lt;p&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; Attribuer les cadeaux r&#233;serv&#233;s aux 50 premiers participants ayant respect&#233;s les r&#218;gles du jeu.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;&lt;a name=&#034;regles&#034;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;R&#232;gles de participation&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Article 1&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;La participation au concours sous-entend l'acceptation du pr&#233;sent&lt;br class='autobr' /&gt;
r&#232;glement. Tout participant ne v&#233;rifiant pas l'un ou l'autre des articles de ce&lt;br class='autobr' /&gt;
r&#232;glement sera irr&#233;m&#233;diablement &#233;limin&#233; et ne pourra pr&#233;tendre &#224; aucun cadeau&lt;br class='autobr' /&gt; :-&lt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Article 2&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Le concours est gratuit et ouvert &#224; toute personne physique ou morale&lt;br class='autobr' /&gt;
(association, club, &#233;cole...). Dans le cas d'un groupement d'individus, une&lt;br class='autobr' /&gt;
personne physique doit &#234;tre d&#233;sign&#233;e comme repr&#233;sentant pour &#233;crire ou recevoir&lt;br class='autobr' /&gt;
tout courrier ayant trait au concours. Un seul cadeau sera fourni par &#233;quipe&lt;br class='autobr' /&gt;
quel que soit le nombre de participant.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Article 3&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Les d&#233;nomm&#233;s Ga&#233;tan Ryckeboer (ASR), Fr&#233;d&#233;ric Gautier (Fred) sont consid&#233;r&#233;s comme arbitres. A ce titre, ils&lt;br class='autobr' /&gt;
ne peuvent pas participer aux &#233;preuves du championnat, mais veilleront au bon&lt;br class='autobr' /&gt;
d&#233;roulement des courses dans le respect du r&#232;glement.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Article 4&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Chaque participant doit adresser
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; par courrier &#224; : Ga&#233;tan Ryckeboer, 6 All&#233;e Henri Bergson, 35200 Rennes,
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; ou par e-mail &#224; [clx-concours@clx.anet.fr].&lt;/p&gt;
&lt;p&gt;avant le 31 Ao&#251;t 2003 (le cachet de la poste ou du serveur de mails clx.anet.fr&lt;br class='autobr' /&gt;
faisant foi), une enveloppe contenant :&lt;/p&gt;
&lt;p&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; 1) Sur disquette 3 pouces et demi, format&#233;e DOS ou Linux 1,44 Mo, ou sur CD-ROM :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; a) Un programme ex&#233;cutable ou interpr&#233;t&#233;, d&#233;nomm&#233; &#034;Pilote Logiciel&#034;,&lt;br class='autobr' /&gt; respectant les conditions suivantes :
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Ex&#233;cutable statique ou script utilisable sous Linux, OpenBSD, FreeBSD, ou&lt;br class='autobr' /&gt; MacOSX &#224; l'exclusion de tout autre syst&#232;me d'exploitation ;&lt;/li&gt;&lt;li&gt; M&#233;moire maximum exploitable pour son ex&#233;cution : 10 Mo de m&#233;moire.&lt;/li&gt;&lt;li&gt; Le script ou ex&#233;cutable ne peut exc&#233;der 5 Mo ;&lt;/li&gt;&lt;li&gt; Le programme ne peut faire faire appel &#224; d'autres librairies que les&lt;br class='autobr' /&gt; biblioth&#232;ques (ou &lt;i&gt;librairies&lt;/i&gt;) standard install&#233;es sur tous les Un*x ;&lt;/li&gt;&lt;li&gt; Le programme doit &#234;tre interruptible par un simple appui sur une touche. Le&lt;br class='autobr' /&gt; temps maximum allou&#233; pour la g&#233;n&#233;ration du fichier .F1 contenant les&lt;br class='autobr' /&gt; d&#233;placements du bolide sur un circuit est limit&#233; &#224; 2 min (sur la machine de&lt;br class='autobr' /&gt; r&#233;f&#233;rence, un P2-350 sous console Unix Debian 2.2). Lors des &#233;preuves de&lt;br class='autobr' /&gt; qualifications, les arbitres devront pouvoir interrompre le logiciel si ce&lt;br class='autobr' /&gt; d&#233;lai est d&#233;pass&#233;. Un temps maximum de r&#233;action de 10 secondes sera tol&#233;r&#233;&lt;br class='autobr' /&gt; entre l'instant ou une touche est press&#233;e et la sortie effective du&lt;br class='autobr' /&gt; programme ;&lt;/li&gt;&lt;li&gt; Le programme doit fonctionner &#034;en l'&#233;tat&#034; et ne doit donc comporter aucun&lt;br class='autobr' /&gt; dispositif d'installation ou de configuration ;&lt;/li&gt;&lt;li&gt; Le programme doit fonctionner uniquement en ligne de commande et ne pas&lt;br class='autobr' /&gt; faire appel &#224; des menus ;&lt;/li&gt;&lt;li&gt; Le programme doit accepter en unique param&#232;tre de ligne de commande le nom,&lt;br class='autobr' /&gt; avec son extension, d'un fichier circuit &#224; traiter, se trouvant dans le&lt;br class='autobr' /&gt; r&#233;pertoire courant ;&lt;/li&gt;&lt;li&gt; Le programme doit cr&#233;er dans le r&#233;pertoire courant, pour chaque circuit&lt;br class='autobr' /&gt; trait&#233;, un fichier de m&#234;me nom que l'ex&#233;cutable mais d'extension .F1&lt;br class='autobr' /&gt; respectant les &lt;a href='http://clx.asso.fr/spip/?Le-concours-du-reporter#evol_f1' class=&#034;spip_in&#034;&gt;r&#232;gles d'&#233;volution de la F1&lt;/a&gt; et la &lt;br class='autobr' /&gt; &lt;a href='http://clx.asso.fr/spip/?Le-concours-du-reporter-2-3#syn_res' class=&#034;spip_in&#034;&gt;syntaxe des fichiers r&#233;sultat&lt;/a&gt; ;&lt;/li&gt;&lt;li&gt; la cr&#233;ation de fichiers temporaires est tol&#233;r&#233;e &#224; raison d'un seul pr&#233;sent&lt;br class='autobr' /&gt; sur le disque &#224; la fois ne d&#233;passant pas une taille de 1 Mo. Tous les&lt;br class='autobr' /&gt; fichiers temporaires devront obligatoirement &#234;tre d&#233;truit par le programme&lt;br class='autobr' /&gt; avant la fin de son ex&#233;cution, et stock&#233;s dans /tmp.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; b) Un fichier de description de circuit, d'extension .CIR, d&#233;nomm&#233; &#034;Circuit&#034;&lt;br class='autobr' /&gt; par la suite, consid&#233;r&#233; comme conforme par le programme de validation&lt;br class='autobr' /&gt; CREECIR.EXE fourni aux participants.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; 2) Une lettre manuscrite dat&#233;e et sign&#233;e ou un e-mail sign&#233; par GPG ou PGP&lt;br class='autobr' /&gt; comprenant :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Le nom et les coordonn&#233;es (adresse) de la personne physique participant au&lt;br class='autobr' /&gt; concours, ou du repr&#233;sentant physique dans le cas d'une participation&lt;br class='autobr' /&gt; group&#233;e ;&lt;/li&gt;&lt;li&gt; faisant attestation :
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; que le participant est bien l'auteur du programme fourni ou d&#251;ment mandat&#233;&lt;br class='autobr' /&gt; comme repr&#233;sentant d'un groupe d'auteurs le cas &#233;ch&#233;ant ;&lt;/li&gt;&lt;li&gt; que le programme est certifi&#233; fonctionner sans risque de porter atteinte &#224;&lt;br class='autobr' /&gt; l'int&#233;grit&#233; de tout syst&#232;me informatique sur lequel il sera amen&#233; &#224; &#234;tre&lt;br class='autobr' /&gt; ex&#233;cut&#233; ;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; engageant l'auteur :
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &#224; autoriser la diffusion gratuite de son pilote logiciel aupr&#232;s des&lt;br class='autobr' /&gt; participants en faisant la demande pour v&#233;rification du r&#233;sultat des&lt;br class='autobr' /&gt; &#233;preuves &#233;liminatoires venant en cl&#244;ture du concours.&lt;/li&gt;&lt;li&gt; &#224; fournir et autoriser la parution du source de son pilote logiciel sur le&lt;br class='autobr' /&gt; site de CLX, prot&#233;g&#233; par une licence libre de son choix.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;NB : Chaque participant reste propri&#233;taire de tous les droits sur ses logiciels&lt;br class='autobr' /&gt;
et sources cr&#233;&#233;s &#224; l'occasion de ce concours.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Article 5&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Lorsqu'un participant envoie, avant le d&#233;lai final fix&#233; au 20 Novembre 2003,&lt;br class='autobr' /&gt;
une nouvelle version de son pilote logiciel et/ou de son circuit, celui-ci (ou&lt;br class='autobr' /&gt;
ceux-ci) se substitue(nt) au pr&#233;c&#233;dent envoi. Seule donc la derni&#232;re version&lt;br class='autobr' /&gt;
re&#231;ue (le cachet de la Poste faisant foi) participera aux &#233;preuves de&lt;br class='autobr' /&gt;
qualification venant clore le concours.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Article 6&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Seuls pourront pr&#233;tendre &#224; un cadeau les 50 premiers participants (date du&lt;br class='autobr' /&gt;
dernier courrier faisant foi) :&lt;/p&gt;
&lt;p&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; ayant respect&#233; les r&#232;gles &#233;nonc&#233;es ci-dessus ;
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; et dont le pilote logiciel aura parcouru de bout en bout, dans les temps&lt;br class='autobr' /&gt; impartis, 70% des circuits qui lui seront pr&#233;sent&#233;s lors des &#233;preuves de&lt;br class='autobr' /&gt; cl&#244;ture du concours.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Article 7&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;L'envoi des cadeaux prendra effet &#224; partir de la date de cl&#244;ture du concours.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Article 8&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A l'issue du concours, tout participant pourra v&#233;rifier les r&#233;sultats des&lt;br class='autobr' /&gt;
courses en faisant la demande &#233;crite &#224; l'un des arbitres, soit en joignant une&lt;br class='autobr' /&gt;
enveloppe pr&#233;-affranchie ainsi qu'une disquette &#224; Ga&#233;tan Ryckeboer pour que lui&lt;br class='autobr' /&gt;
soient transmis les circuits et pilotes logiciels concurrents, soit par simple&lt;br class='autobr' /&gt;
e-mail (voir adresses plus haut).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Article 9&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Les &#233;preuves de qualification et &#233;liminatoires venant clore ce concours sont&lt;br class='autobr' /&gt;
d&#233;taill&#233;es au chapitre &lt;a href='http://clx.asso.fr/spip/?Le-concours-du-reporter-3-3#qualif' class=&#034;spip_in&#034;&gt;&#233;preuves de qualification&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a name=&#034;qualif&#034;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;&#201;preuves de qualification&lt;/h2&gt;
&lt;p&gt;L'ordinateur sur lequel se d&#233;rouleront les courses est muni d'un processeur AMD&lt;br class='autobr' /&gt;
P2 &#224; 350 MHz.&lt;/p&gt;
&lt;p&gt;Un programme arbitre, baptis&#233; TESTF1, sert &#224; &#233;tablir les temps de chaque pilote&lt;br class='autobr' /&gt;
logiciel sur les circuits qu'il a trait&#233;, analyser le fichier r&#233;sultat g&#233;n&#233;r&#233;&lt;br class='autobr' /&gt;
par le pilote et v&#233;rifier que le chemin d&#233;crit v&#233;rifie bien les r&#232;gles&lt;br class='autobr' /&gt;
d'&#233;volution ainsi que la syntaxe du fichier r&#233;sultat.&lt;/p&gt;
&lt;p&gt;Le temps mis par un pilote pour parcourir un circuit donn&#233;, ainsi que la&lt;br class='autobr' /&gt;
vitesse moyenne, sont ceux indiqu&#233;s par le programme arbitre TESTF1, consid&#233;r&#233;&lt;br class='autobr' /&gt;
comme chronom&#232;tre officiel du concours.&lt;/p&gt;
&lt;div class='spip_document_174 spip_document spip_documents spip_document_file spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;67&#034; data-legende-lenx=&#034;xx&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt;
&lt;a href='http://clx.asso.fr/spip/IMG/exe/Testf1.exe' class=&#034; spip_doc_lien&#034; title='EXEcutable i386 DOS/Windows - 26.6 kio' type=&#034;&#034;&gt;&lt;img src='http://clx.asso.fr/spip/local/cache-vignettes/L64xH64/defaut-edd74.svg?1773251889' width='64' height='64' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;testf1.exe
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_descriptif '&gt;L'outil utilis&#233; pour v&#233;rifier la validit&#233; d'une course
&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Ce programme est fourni avec ce num&#233;ro afin de permettre &#224; chacun d'&#233;valuer et&lt;br class='autobr' /&gt;
tester son pilote avant envoi.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Classement provisoire avant cl&#244;ture du concours : &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Sur le site de CLX, nous ferons para&#238;tre les performances des pilotes logiciels&lt;br class='autobr' /&gt;
sur un circuit de r&#233;f&#233;rence, au fur et &#224; mesure des envois.&lt;/p&gt;
&lt;p&gt;Ce circuit est celui fourni &#224; titre d'exemple : MONACO.CIR&lt;/p&gt;
&lt;div class='spip_document_169 spip_document spip_documents spip_document_file spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;44&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt;
&lt;a href='http://clx.asso.fr/spip/IMG/txt/Monaco.cir.txt' class=&#034; spip_doc_lien&#034; title='Texte - 14.8 kio' type=&#034;text/plain&#034;&gt;&lt;img src='' width='' height='' alt='' style='max-width: 500px;max-width: min(100%,500px); max-height: 10000px' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;monaco.cir
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_descriptif '&gt;Le circuit de base (&#224; renommer)
&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Ce classement sera &#233;tabli gr&#226;ce au chronom&#232;tre officiel TESTF1.EXE&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&#201;preuves de qualification &#224; la cl&#244;ture du concours : &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Tous les concurrents seront regroup&#233;s par &#034;poules&#034; comprenant entre 6 (minimum)&lt;br class='autobr' /&gt;
et 12 (maximum) participants. La formation des poules se fera conform&#233;ment &#224; la&lt;br class='autobr' /&gt;
proc&#233;dure d'organisation des poules d&#233;crite en annexe.&lt;/p&gt;
&lt;p&gt;Dans chaque &#034;poule&#034;, le pilote logiciel de chacun des participants en faisant&lt;br class='autobr' /&gt;
partie devra g&#233;n&#233;rer un fichier .F1 pour chaque circuit fourni par ses&lt;br class='autobr' /&gt;
co-listiers et par lui-m&#234;me.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Classement des pilotes par circuit de la poule :&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ces fichiers .F1 seront ensuite trait&#233;s par le programme arbitre TESTF1 qui&lt;br class='autobr' /&gt;
g&#233;n&#233;rera pour chaque circuit un fichier .LOG permettant d'&#233;tablir par circuit&lt;br class='autobr' /&gt;
un classement des pilotes dress&#233; selon les deux crit&#232;res d&#233;croissants :&lt;/p&gt;
&lt;p&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; Rapidit&#233; de couverture du parcours - vitesse moyenne&lt;/p&gt;
&lt;p&gt;Pour chaque circuit de la poule, il sera attribu&#233; un nombre de points aux&lt;br class='autobr' /&gt;
diff&#233;rents pilotes logiciel, en fonction de leur position dans le classement&lt;br class='autobr' /&gt;
pr&#233;c&#233;demment obtenu :&lt;/p&gt;
&lt;table class=&#034;table spip&#034;&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;position&lt;/td&gt;
&lt;td&gt;points&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;7 &#224; 12&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;En cas d'ex aequo sur un circuit, tous les pilotes class&#233;s &#224; la m&#234;me position&lt;br class='autobr' /&gt;
marquent les points de cette position. Les points des places suivantes qui&lt;br class='autobr' /&gt;
auraient d&#251; &#234;tre occup&#233;es ne sont pas attribu&#233;s.&lt;/p&gt;
&lt;p&gt;Exemple : 3 pilotes ex aequo &#224; la deuxi&#232;me place marquent tous 6 points, le&lt;br class='autobr' /&gt;
suivant marque 2 points (position 5).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Classement des pilotes dans la poule (tout circuits confondus) :&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Lorsque toutes les courses d'une poule sont termin&#233;es, on proc&#232;de, pour chaque&lt;br class='autobr' /&gt;
pilote, &#224; l'addition des points obtenus sur chacun des circuits qu'il a&lt;br class='autobr' /&gt;
parcouru au sein de la poule. Ce cumul de points sert de classement de la&lt;br class='autobr' /&gt;
poule. (On proc&#232;de de m&#234;me pour toutes les poules de l'&#233;preuve de qualification&lt;br class='autobr' /&gt;
en cours)&lt;/p&gt;
&lt;p&gt;Exemple :&lt;/p&gt;
&lt;table class=&#034;table spip&#034;&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;Position&lt;/td&gt;
&lt;td&gt;Pilote&lt;/td&gt;
&lt;td&gt;Points par Circuits&lt;/td&gt;
&lt;td class='numeric '&gt;&lt;/td&gt;
&lt;td class='numeric '&gt;1&lt;/td&gt;
&lt;td&gt;Toto&lt;/td&gt;
&lt;td&gt;10+10+10+6+4+2=42&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Titi&lt;/td&gt;
&lt;td&gt;6+6+6+0+6+6 =30&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Tutu&lt;/td&gt;
&lt;td&gt;10+10+10+0+0+0=30&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;..&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;
&lt;td&gt;...&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Tata&lt;/td&gt;
&lt;td&gt;0+0+1+2+0+1 =04&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;En cas d'&#233;galit&#233; de points entre plusieurs participants de la poule, les r&#232;gles&lt;br class='autobr' /&gt;
de d&#233;partage suivantes seront appliqu&#233;es, class&#233;es par ordre de priorit&#233; :&lt;/p&gt;
&lt;p&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; 1) On enl&#232;ve le moins bon r&#233;sultat sup&#233;rieur &#224; 0 des participants ex aequo et&lt;br class='autobr' /&gt; on les reclasse. On r&#233;p&#232;te l'op&#233;ration pr&#233;c&#233;dente autant de fois que&lt;br class='autobr' /&gt; n&#233;cessaire jusqu'&#224; ce que l'un ait plus de point que l'autre.&lt;/p&gt;
&lt;p&gt;Ce syst&#232;me d'arbitrage fait que, dans l'exemple ci dessus, il vaut mieux&lt;br class='autobr' /&gt;
marquer 30 points en terminant 5 fois deuxi&#232;me (5*6=30) plut&#244;t que de gagner 3&lt;br class='autobr' /&gt;
fois (3*10=30). En effet, dans ce cas, apr&#232;s avoir enlev&#233; le moins bon&lt;br class='autobr' /&gt;
r&#233;sultat, Titi se retrouve avec 24 points et Tutu avec 20 points.&lt;/p&gt;
&lt;p&gt;Ce syst&#232;me d'arbitrage essaie de privil&#233;gier la r&#233;gularit&#233; au d&#233;triment des&lt;br class='autobr' /&gt;
coups d'&#233;clats.&lt;/p&gt;
&lt;p&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; 2) Si malgr&#233; cela des participants restent ex aequo, il sera fait appel &#224; la&lt;br class='autobr' /&gt; question subsidiaire :&lt;/p&gt;
&lt;p&gt;Le temps moyen de toutes les courses valides de la poule sera calcul&#233; (Par&lt;br class='autobr' /&gt;
course valide on entend une course pour laquelle le pilote n'a pas &#233;t&#233;&lt;br class='autobr' /&gt;
&#233;limin&#233;).&lt;/p&gt;
&lt;p&gt;Le temps moyen est donc la somme de tous les temps obtenus sur toutes les&lt;br class='autobr' /&gt;
courses valides de la poule, divis&#233;e par le nombre de courses valides de la&lt;br class='autobr' /&gt;
poule.&lt;/p&gt;
&lt;p&gt;Les participants seront class&#233;s en fonction de la proximit&#233; du temps estim&#233;&lt;br class='autobr' /&gt;
qu'ils ont donn&#233; par courrier avant le d&#233;but des courses et ce temps&lt;br class='autobr' /&gt;
calcul&#233;. Plus l'estimation pr&#233;alable du participant est proche de la r&#233;alit&#233;,&lt;br class='autobr' /&gt;
meilleur sera son classement.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;S&#233;lection des pilotes pour les qualifications suivantes :&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ne sont retenus pour les &#233;preuves de qualification suivantes que la moiti&#233; des&lt;br class='autobr' /&gt;
participants de chaque poule (arrondi au chiffre sup&#233;rieur si le nombre de&lt;br class='autobr' /&gt;
participants est impair) en fonction du classement obtenu dans leurs poules&lt;br class='autobr' /&gt;
respectives.&lt;/p&gt;
&lt;p&gt;Le total des points de chaque pilote est remis &#224; 0 &#224; l'issue de de cette&lt;br class='autobr' /&gt;
s&#233;lection et avant l'&#233;preuve de qualification suivante.&lt;/p&gt;
&lt;p&gt;On proc&#233;dera ainsi &#224; de nouvelles s&#233;ances de qualification par poules en ne&lt;br class='autobr' /&gt;
gardant &#224; chaque fois que la moiti&#233; des pilotes logiciels les plus performants&lt;br class='autobr' /&gt;
dans la leur. Et ce jusqu'&#224; ce que le nombre de participants restant soit&lt;br class='autobr' /&gt;
inf&#233;rieur ou &#233;gal &#224; 12.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Poule finale :&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Les rescap&#233;s des &#233;preuves de qualification s'affronteront dans une poule finale&lt;br class='autobr' /&gt;
dont le classement se fera selon les m&#234;mes r&#232;gles que celles d&#233;crites ci-avant.&lt;/p&gt;
&lt;p&gt;Sera d&#233;clar&#233; vainqueur, le participant dont le pilote est class&#233; premier de la&lt;br class='autobr' /&gt;
poule finale.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Pourquoi organiser des poules ?&lt;/h2&gt;
&lt;p&gt;&lt;i&gt;Par St&#233;phane Pineau&lt;/i&gt;&lt;br class='autobr' /&gt;
Pourquoi organiser des poules et diviser ainsi les participants ?&lt;/p&gt;
&lt;p&gt;Ben, parce que nous ignorons totalement le nombre de participants qui&lt;br class='autobr' /&gt;
r&#233;pondront.(Beaucoup j'esp&#232;re !)&lt;/p&gt;
&lt;p&gt;Imaginez qu'il y ait 32 participants et que l'on fasse tourner les pilotes de&lt;br class='autobr' /&gt;
tous les candidats sur tous les circuits.. Il y aurait alors 32*32 courses, et&lt;br class='autobr' /&gt;
&#224; raison de 5 minutes par course, cela prendrait 85 heures (sans pause !).&lt;/p&gt;
&lt;p&gt;Pour 64 participants, on aurait 341 heures, soit plus de 14 jours...&lt;/p&gt;
&lt;p&gt;Bref, comme on compte sur vous pour que ce concours soit un v&#233;ritable succ&#232;s,&lt;br class='autobr' /&gt;
il fallait bien trouver une solution !&lt;/p&gt;
&lt;p&gt;D'o&#249; l'id&#233;e de r&#233;partir les participants en poules...&lt;/p&gt;
&lt;p&gt;Comme si, par exemple, il y avait plusieurs championnats de Formule 1, un en&lt;br class='autobr' /&gt;
Europe, un en Afrique, un en Asie et un en Am&#233;rique.&lt;/p&gt;
&lt;p&gt;On organise des championnats 'r&#233;gionaux' et on s&#233;lectionne (qualifie) les&lt;br class='autobr' /&gt;
meilleures voitures de chaque r&#233;gion pour une finale.&lt;/p&gt;
&lt;p&gt;Un championnat r&#233;gional, c'est ce que l'on appelle une poule. Dans ce&lt;br class='autobr' /&gt;
championnat, chaque voiture tourne sur chacun des circuits.&lt;/p&gt;
&lt;p&gt;Comme en Formule 1, pour chaque circuit, on attribue des points aux meilleurs&lt;br class='autobr' /&gt;
participants.&lt;/p&gt;
&lt;p&gt;&#192; l'issue du championnat, les meilleures voitures sont qualifi&#233;es, les autres&lt;br class='autobr' /&gt;
&#233;tant &#233;limin&#233;es.&lt;/p&gt;
&lt;p&gt;L'objet de ce chapitre est de vous d&#233;crire la m&#233;thode retenue pour diviser les&lt;br class='autobr' /&gt;
participants en poule.&lt;/p&gt;
&lt;p&gt;Ce n'est pas tr&#232;s simple &#224; comprendre, car on a veill&#233; &#224; ne pas trop &#233;liminer&lt;br class='autobr' /&gt;
de candidats &#224; chaque fois, quitte &#224; &#234;tre oblig&#233; de subdiviser encore plus si&lt;br class='autobr' /&gt;
n&#233;cessaire (championnat local, qualifiant pour un championnat r&#233;gional,&lt;br class='autobr' /&gt;
lui-m&#234;me qualifiant pour la poule finale...).&lt;/p&gt;
&lt;p&gt;Les concurrents seront, en fonction du nombre de participants, divis&#233;s en&lt;br class='autobr' /&gt;
plusieurs poules. Le nombre de poules d&#233;pend du nombre de participants par la&lt;br class='autobr' /&gt;
formule :&lt;/p&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;nombre_de_poule= 1+ trunc(nombre_de_participants / 12) &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;trunc&lt;/code&gt; indique un arrondi &#224; la valeur inf&#233;rieure (exemple&lt;br class='autobr' /&gt;
trunc(3.9)=3). Ceci permet de d&#233;finir des poules de 12 candidats maximum.&lt;br class='autobr' /&gt;
Ex. :
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; 8 participants -&gt; 1 poule
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; 12 participants -&gt; 2 poules (2 poules de 6 participants)
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; 15 participants -&gt; 2 poules (une poule de 7 et une de 8)
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; 32 participants -&gt; 3 poules (2 poules de 11 et une de 10)
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; 36 participants -&gt; 4 poules (4 poules de 9)
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; etc..&lt;/p&gt;
&lt;p&gt;Ensuite les participants sont r&#233;partis dans les poules en fonction de la date&lt;br class='autobr' /&gt;
postale de leur premier envoi. Le premier envoi re&#231;u allant dans la premi&#232;re&lt;br class='autobr' /&gt;
poule, le second dans la deuxi&#232;me et ainsi de suite. D&#232;s que l'on d&#233;passe le&lt;br class='autobr' /&gt;
nombre de poules, on recommence &#224; la premi&#232;re poule.&lt;/p&gt;
&lt;p&gt;Exemple : 32 participants : 3 poules&lt;/p&gt;
&lt;table class=&#034;table spip&#034;&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;poule 1&lt;/td&gt;
&lt;td&gt;poule 2&lt;/td&gt;
&lt;td&gt;poule 3&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;12&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;17&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;19&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;21&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;28&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td&gt;32&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;On aura 2 poules de 11 participants et une de 10 participants.&lt;/p&gt;
&lt;p&gt;La course sera organis&#233;e par poule et seront qualifi&#233;s au moins la moiti&#233; des&lt;br class='autobr' /&gt;
participants de la poule. Si le nombre de candidats dans la poule est pair,&lt;br class='autobr' /&gt;
c'est juste la moiti&#233; qui est qualifi&#233;e, si le nombre est impair, on arrondit&lt;br class='autobr' /&gt;
la moiti&#233; du nombre de participants au chiffre sup&#233;rieur.&lt;/p&gt;
&lt;p&gt;Dans notre exemple, on qualifiera 6 participants des 2 premi&#232;res poules et 5&lt;br class='autobr' /&gt;
participants de la troisi&#232;me. Le nombre de candidats restant en course apr&#232;s le&lt;br class='autobr' /&gt;
premier tour est donc de 17.&lt;/p&gt;
&lt;p&gt;On reprend la proc&#233;dure initiale, avec les seuls candidats qualifi&#233;s, et en les&lt;br class='autobr' /&gt;
pla&#231;ant dans les nouvelles poules suivant un balayage en 'zig-zag'.&lt;/p&gt;
&lt;p&gt;Par exemple, si on appelle p1_1 &#224; p1_6 les 6 qualifi&#233;s de la poule 1 du premier&lt;br class='autobr' /&gt;
tour, (et p2_x et p3_x respectivement ceux de la poule 2 et 3) la r&#233;partition&lt;br class='autobr' /&gt;
des 2 poules du deuxi&#232;me tour se fera (toujours pour notre exemple initial &#224; 32&lt;br class='autobr' /&gt;
participants) :&lt;/p&gt;
&lt;table class=&#034;table spip&#034;&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;poule 1&lt;/td&gt;
&lt;td&gt;rencontre&lt;/td&gt;
&lt;td&gt;poule 2&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;p1_1&lt;/td&gt;
&lt;td&gt;-&gt;&lt;/td&gt;
&lt;td&gt;p1_2&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;p1_4&lt;/td&gt;
&lt;td&gt;&lt;-&lt;/td&gt;
&lt;td&gt;p1_3&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;p1_5&lt;/td&gt;
&lt;td&gt;-&gt;&lt;/td&gt;
&lt;td&gt;p1_6&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;p2_2&lt;/td&gt;
&lt;td&gt;&lt;-&lt;/td&gt;
&lt;td&gt;p2_1&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;p2_3&lt;/td&gt;
&lt;td&gt;-&gt;&lt;/td&gt;
&lt;td&gt;p2_4&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;p2_6&lt;/td&gt;
&lt;td&gt;&lt;-&lt;/td&gt;
&lt;td&gt;p2_5&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;p3_1&lt;/td&gt;
&lt;td&gt;-&gt;&lt;/td&gt;
&lt;td&gt;p3_2&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;p3_4&lt;/td&gt;
&lt;td&gt;&lt;-&lt;/td&gt;
&lt;td&gt;p3_3&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;p3_5&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;On r&#233;p&#232;te l'op&#233;ration de qualification et de mise en poule, jusqu'&#224; ce qu'il&lt;br class='autobr' /&gt;
n'y ait plus qu'une seule poule, baptis&#233;e poule finale.&lt;/p&gt;
&lt;p&gt;Le classement du concours est le classement de la poule finale.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;R&#233;sumons par un exemple concret&lt;/h2&gt;
&lt;p&gt;Pour participer au concours, vous avez deux fichiers &#224; fournir, en plus de la&lt;br class='autobr' /&gt;
lettre manuscrite :&lt;/p&gt;
&lt;p&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; 1) Un fichier d&#233;crivant un circuit, d'extension .CIR. C'est, entre autres, sur&lt;br class='autobr' /&gt; ce circuit que votre voiture et celles de vos concurrents devront &#233;voluer.&lt;/p&gt;
&lt;p&gt;Pour cr&#233;er ce circuit, il vous est possible d'utiliser l'outil fourni dans &lt;br class='autobr' /&gt;
&lt;a href=&#034;http://clx.anet.fr/spip/article.php3?id_article=174&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;les annexes&lt;/a&gt;, baptis&#233;&lt;br class='autobr' /&gt;
CREECIR.EXE.&lt;/p&gt;
&lt;p&gt;Pour dessiner votre circuit, il suffit de taper :&lt;/p&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;CREECIR mon_circuit&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;o&#249; mon_circuit est le nom que vous donnez &#224; votre circuit.&lt;/p&gt;
&lt;p&gt;Votre circuit ne peut pas &#234;tre quelconque, il doit v&#233;rifier certaines r&#232;gles&lt;br class='autobr' /&gt;
pour &#234;tre conforme au r&#232;glement.&lt;/p&gt;
&lt;p&gt;Un bouton, marqu&#233; OK, permet de v&#233;rifier dans CREECIR, si un circuit est&lt;br class='autobr' /&gt;
conforme au r&#232;glement.&lt;/p&gt;
&lt;p&gt;Pour tester le programme CREECIR, nous avons joint au Reporter un circuit test&lt;br class='autobr' /&gt;
de d&#233;monstration (MONACO.CIR).&lt;/p&gt;
&lt;p&gt;Ce fichier est le dessin d'un circuit conforme au r&#232;glement.&lt;/p&gt;
&lt;p&gt;Pour autant que votre PC soit en mode VGA et dispose sous DOS d'un driver de&lt;br class='autobr' /&gt;
souris, vous pouvez visualiser, modifier le circuit, ainsi que v&#233;rifier sa&lt;br class='autobr' /&gt;
conformit&#233; au r&#232;glement, &#224; l'aide du logiciel CREECIR.EXE :&lt;/p&gt;
&lt;p&gt;&lt;tt&gt;&lt;code185|center&gt;&lt;/tt&gt;&lt;/p&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;CREECIR monaco&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Vous pouvez aussi visualiser, &#224; l'aide d'un &#233;diteur quelconque tel que EDIT, le&lt;br class='autobr' /&gt;
fichier .CIR g&#233;n&#233;r&#233;. Il est au format ASCII et la piste est tout simplement&lt;br class='autobr' /&gt;
repr&#233;sent&#233;e par le caract&#232;re ' ' (espace).&lt;/p&gt;
&lt;p&gt;Vous pouvez vous amuser &#224; modifier le circuit MONACO.CIR afin de le rendre non&lt;br class='autobr' /&gt;
conforme et constater le verdict du programme de v&#233;rification.&lt;/p&gt;
&lt;p&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; 2) Le deuxi&#232;me fichier &#224; fournir est votre programme de pilote, celui qui&lt;br class='autobr' /&gt; d&#233;crira l'&#233;volution de votre voiture sur un circuit donn&#233;.&lt;/p&gt;
&lt;p&gt;Il re&#231;oit, comme param&#232;tre d'entr&#233;e, le nom du circuit sur lequel la voiture&lt;br class='autobr' /&gt;
doit boucler un tour. En sortie, il g&#233;n&#232;re un fichier ASCII, d&#233;crivant&lt;br class='autobr' /&gt;
l'&#233;volution de la voiture et qui respecte les r&#232;gles physiques du comportement&lt;br class='autobr' /&gt;
de la voiture sur la piste.&lt;/p&gt;
&lt;p&gt;La syntaxe d'appel est, par convention :&lt;/p&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;votre_programme nom_de_circuit.CIR&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;et son action est de cr&#233;er un fichier votre_programme.F1 &#224; partir du circuit&lt;br class='autobr' /&gt;
nom_du_circuit.CIR.&lt;/p&gt;
&lt;p&gt;Pour vous &#233;vitez de tester le principe du concours en &#233;crivant d&#232;s maintenant&lt;br class='autobr' /&gt;
un pilote automatique, dans &lt;a href='http://clx.asso.fr/spip/?Le-concours-du-Reporter-Annexes' class=&#034;spip_in&#034;&gt;les annexes du concours&lt;/a&gt;, vous trouverez&lt;br class='autobr' /&gt;
un tel programme.&lt;/p&gt;
&lt;p&gt;Ce pilote automatique de d&#233;monstration n'est pas du tout performant (vous&lt;br class='autobr' /&gt;
pourrez faire nettement mieux) car notre but est juste de montrer ce que nous&lt;br class='autobr' /&gt;
attendons des participants.&lt;/p&gt;
&lt;p&gt;Ce programme de pilote automatique de d&#233;monstration est baptis&#233; DEMO_2CV.EXE,&lt;br class='autobr' /&gt;
et il g&#233;n&#232;re, &#224; partir d'un fichier circuit .CIR conforme un fichier r&#233;sultat&lt;br class='autobr' /&gt;
(d'extension .F1) qui v&#233;rifie la syntaxe des fichiers r&#233;sultats.&lt;/p&gt;
&lt;p&gt;Pour utiliser le pilote de d&#233;monstration tapez :&lt;/p&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;DEMO_2CV monaco&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;et le programme g&#233;n&#232;rera un fichier r&#233;sultat MONACO.F1. Bien entendu, le&lt;br class='autobr' /&gt;
fichier r&#233;sultat est en ASCII et est donc parfaitement lisible avec un &#233;diteur&lt;br class='autobr' /&gt;
de textes...&lt;/p&gt;
&lt;p&gt;Enfin, pour contr&#244;ler le fichier r&#233;sultat d'une voiture, et effectuer un&lt;br class='autobr' /&gt;
chronom&#233;trage officiel de la voiture, utilisez le programme arbitre fourni :&lt;br class='autobr' /&gt;
TESTF1.EXE.&lt;/p&gt;
&lt;p&gt;Gr&#226;ce &#224; ce programme, les temps r&#233;alis&#233;s sont v&#233;rifiables par TOUS !&lt;/p&gt;
&lt;p&gt;En plus de son r&#244;le de 'chronom&#232;tre', TESTF1 v&#233;rifie que le r&#233;sultat obtenu par&lt;br class='autobr' /&gt;
le programme pilote est correct, &#224; savoir que la voiture respecte les r&#232;gles&lt;br class='autobr' /&gt;
d'&#233;volution et qu'aucune collision n'est constat&#233;e avec les bords de piste.&lt;/p&gt;
&lt;p&gt;TESTF1 re&#231;oit comme param&#232;tre d'entr&#233;e le nom du fichier r&#233;sultat (d'extension&lt;br class='autobr' /&gt;
F1) qu'il doit v&#233;rifier.&lt;/p&gt;
&lt;p&gt;Pour visualiser la course qu'a effectu&#233;e le pilote automatique de d&#233;monstration&lt;br class='autobr' /&gt;
et conna&#238;tre son chronom&#233;trage pr&#233;cis, il ne reste plus qu'&#224; faire tourner le&lt;br class='autobr' /&gt;
programme arbitre, &#224; savoir :&lt;/p&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;TESTF1 demo_2cv.F1&lt;/code&gt;&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_ps'&gt;&lt;p&gt;&lt;i&gt;Le r&#218;glement ici pr&#233;sent est &lt;strong&gt;tr&#218;s fortement inspir&#233;&lt;/strong&gt; du r&#218;glement original propos&#233; par L.Rivi&#218;re lors de la publication initiale du concours. Voici d'ailleurs le Post-Scriptum qu'il adressait aux concurrents et que nous reprennons &#224; notre compte :&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;Tout ceci peut sembler long car j'ai (&lt;i&gt;Luc Riv&#218;re&lt;/i&gt;) voulu &#224; la fois pr&#233;senter ce qui fait partie du concours en lui-m&#234;me et les outils 'pour aider les participants et &#233;viter les probl&#218;mes'.&lt;/p&gt;&lt;/div&gt;
		</content:encoded>


		

	</item>
	<item xml:lang="fr">
		<title>Une GUI pour cr&#233;er des circuits</title>
		<link>http://clx.asso.fr/spip/?Une-GUI-pour-creer-des-circuits</link>
		<guid isPermaLink="true">http://clx.asso.fr/spip/?Une-GUI-pour-creer-des-circuits</guid>
		<dc:date>2003-02-21T12:35:16Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Ga&#233;tan RYCKEBOER</dc:creator>


		<dc:subject>Programmation</dc:subject>

		<description>&lt;p&gt;Philippe Leroux nous propose un logiciel permettant de cr&#233;er des circuits pour le concours sous un*x.&lt;/p&gt;

-
&lt;a href="http://clx.asso.fr/spip/?-2003-Concours-de-programmation-" rel="directory"&gt;2003 : Concours de programmation&lt;/a&gt;

/ 
&lt;a href="http://clx.asso.fr/spip/?+-Programmation-+" rel="tag"&gt;Programmation&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Philippe Leroux nous propose un logiciel permettant de cr&#233;er des circuits sous un*x.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;&lt;i&gt;Pour compiler il suffit de se placer dans le r&#233;pertoire o&#249; a &#233;t&#233;&lt;br class='autobr' /&gt;
extraite l'archive, puis de taper make.&lt;br class='autobr' /&gt;
La variable d'environnement&lt;br class='autobr' /&gt;
QTDIR doit &#234;tre d&#233;finie, par exemple avec :&lt;/p&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;export QTDIR=/usr/lib/qt2&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Attendre... Puis saisissez :&lt;/p&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;./installme&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Le programme &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;installme&lt;/code&gt; va cr&#233;er dans la home directory (votre r&#233;pertoire utilisateur) un r&#233;pertoire PisteF1 et&lt;br class='autobr' /&gt;
copier dedans tous les fichiers utiles.&lt;br class='autobr' /&gt;
J'ai essay&#233; de faire une aide accessible par la combinaison de touches CTRL+F1 sur une des 2&lt;br class='autobr' /&gt;
fen&#234;tres principales la fen&#234;tre de log ou via le menu.&lt;/p&gt;
&lt;p&gt;Si PisteF1 est d&#233;plac&#233; ou renomm&#233;, il faut d&#233;finir la variable d'environnement&lt;br class='autobr' /&gt;
PISTEF1 :&lt;/p&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;export PISTEF1=$HOME/MaPisteF1&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Le log (test.f1) de mon pilote est pr&#233;sent, pour montrer les extensions&lt;br class='autobr' /&gt;
que l'on peut utiliser et l'int&#233;r&#234;t &#233;ventuel.&lt;/i&gt;&lt;/p&gt;
&lt;div class='spip_document_200 spip_document spip_documents spip_document_file spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;22&#034; data-legende-lenx=&#034;&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt;
&lt;a href='http://clx.asso.fr/spip/IMG/gz/F1-release-01.tar.gz' class=&#034; spip_doc_lien&#034; title='GZ - 107.5 kio' type=&#034;application/x-gzip&#034;&gt;&lt;img src='http://clx.asso.fr/spip/local/cache-vignettes/L64xH64/gz-96c51.svg?1773242542' width='64' height='64' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;F1-release-01.tar.gz
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div class='spip_document_209 spip_document spip_documents spip_document_file spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;22&#034; data-legende-lenx=&#034;&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt;
&lt;a href='http://clx.asso.fr/spip/IMG/gz/f1-release-02.tar.gz' class=&#034; spip_doc_lien&#034; title='GZ - 122.1 kio' type=&#034;application/x-gzip&#034;&gt;&lt;img src='http://clx.asso.fr/spip/local/cache-vignettes/L64xH64/gz-96c51.svg?1773242542' width='64' height='64' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;F1-release-02.tar.gz
&lt;/strong&gt;&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Merci &#224; &lt;strong&gt;Philippe Leroux&lt;/strong&gt; pour cette contribution.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
	<item xml:lang="fr">
		<title>Le concours du Reporter : Annexes</title>
		<link>http://clx.asso.fr/spip/?Le-concours-du-Reporter-Annexes</link>
		<guid isPermaLink="true">http://clx.asso.fr/spip/?Le-concours-du-Reporter-Annexes</guid>
		<dc:date>2003-01-20T12:39:46Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Ga&#233;tan RYCKEBOER</dc:creator>



		<description>&lt;p&gt;Quelques fichiers utiles pour commencer &#224; r&#233;fl&#233;chir&lt;/p&gt;

-
&lt;a href="http://clx.asso.fr/spip/?-2003-Concours-de-programmation-" rel="directory"&gt;2003 : Concours de programmation&lt;/a&gt;


		</description>


 <content:encoded>&lt;img src='http://clx.asso.fr/spip/IMG/bmp/Monaco.bmp?1294696648' alt='' class='spip_logo spip_logo_right' width='100' height='150' onmouseover='' onmouseout='' /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Voici quelques fichiers issus du Reporter n&#176;7, qui vous permettront de commencer &#224; r&#233;fl&#233;chir.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Quelques fichiers de LOG, un circuit et son &#233;quivalent en BMP :&lt;/p&gt;
&lt;table class=&#034;table spip&#034;&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;&lt;div class='spip_document_168 spip_document spip_documents spip_document_image spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;55&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='http://clx.asso.fr/spip/IMG/bmp/Monaco.bmp?1294696648' width='100' height='150' alt='' /&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;monaco.bmp
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_descriptif '&gt;Un conversion Bitmap du circuit Monaco.cir
&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;/td&gt;
&lt;td&gt;&lt;div class='spip_document_169 spip_document spip_documents spip_document_file spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;44&#034; data-legende-lenx=&#034;x&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt;
&lt;a href='http://clx.asso.fr/spip/IMG/txt/Monaco.cir.txt' class=&#034; spip_doc_lien&#034; title='Texte - 14.8 kio' type=&#034;text/plain&#034;&gt;&lt;img src='' width='' height='' alt='' style='max-width: 500px;max-width: min(100%,500px); max-height: 10000px' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;monaco.cir
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_descriptif '&gt;Le circuit de base (&#224; renommer)
&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;div class='spip_document_170 spip_document spip_documents spip_document_file spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;82&#034; data-legende-lenx=&#034;xx&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt;
&lt;a href='http://clx.asso.fr/spip/IMG/txt/Monaco.log.txt' class=&#034; spip_doc_lien&#034; title='Texte - 603 octets' type=&#034;text/plain&#034;&gt;&lt;img src='http://clx.asso.fr/spip/local/cache-vignettes/L64xH64/txt-55e11.svg?1773236506' width='64' height='64' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;monaco.log
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_descriptif '&gt;Un fichier de log d'une course sur monaco (pour exemple). A renommer.
&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;/td&gt;
&lt;td&gt;&lt;div class='spip_document_171 spip_document spip_documents spip_document_file spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;93&#034; data-legende-lenx=&#034;xx&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt;
&lt;a href='http://clx.asso.fr/spip/IMG/txt/Demo_2cv.f1.txt' class=&#034; spip_doc_lien&#034; title='Texte - 1.7 kio' type=&#034;text/plain&#034;&gt;&lt;img src='http://clx.asso.fr/spip/local/cache-vignettes/L64xH64/txt-55e11.svg?1773236506' width='64' height='64' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;demo_2cv.f1
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_descriptif '&gt;Le pilote demo_2cv a concouru sur le circuit monaco, voici ses logs de position
&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Notez-bien que certains de ces programmes (fonctionnant aujourd'hui sous DOS) seront disponibles sous Linux dans un avenir proche. Ils peuvent toutefois d'ores et d&#233;j&#224; &#234;tre ex&#233;cut&#233;s avec &lt;a href=&#034;http://www.dosemu.org&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;DOSEmu&lt;/a&gt; (sous linux) ou &lt;a href=&#034;http://www.freedos.org&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;FreeDos&lt;/a&gt; (un OS &#224; part enti&#232;re).&lt;/p&gt;
&lt;p&gt;Attention, un petit bug de Turbo Pascal 7 emp&#234;che l'execution correcte des fichiers. Cybermad nous en a fait parvenir une version corrig&#233;e :&lt;/p&gt;
&lt;table class=&#034;table spip&#034;&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;&lt;div class='spip_document_185 spip_document spip_documents spip_document_file spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;116&#034; data-legende-lenx=&#034;xx&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt;
&lt;a href='http://clx.asso.fr/spip/IMG/exe/CREECIR.exe' class=&#034; spip_doc_lien&#034; title='EXEcutable i386 DOS/Windows - 29.8 kio' type=&#034;&#034;&gt;&lt;img src='http://clx.asso.fr/spip/local/cache-vignettes/L64xH64/defaut-edd74.svg?1773251889' width='64' height='64' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;creecir.exe
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_descriptif '&gt;Un outil de cr&#233;ation de ciruit (sous DOS) r&#233;alis&#233; par &lt;i&gt;Luc Rivi&#218;re&lt;/i&gt; en Turbo-Pascal. &lt;br /&gt;(version patch&#233;e)
&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;/td&gt;
&lt;td&gt;&lt;div class='spip_document_173 spip_document spip_documents spip_document_file spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;70&#034; data-legende-lenx=&#034;xx&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt;
&lt;a href='http://clx.asso.fr/spip/IMG/exe/Demo_2cv.exe' class=&#034; spip_doc_lien&#034; title='EXEcutable i386 DOS/Windows - 112.3 kio' type=&#034;&#034;&gt;&lt;img src='http://clx.asso.fr/spip/local/cache-vignettes/L64xH64/defaut-edd74.svg?1773251889' width='64' height='64' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;demo_2cv.exe
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_descriptif '&gt;Le pilote de d&#233;mo du Reporter (r&#233;alis&#233; par Luc Rivi&#218;re)
&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;&lt;div class='spip_document_174 spip_document spip_documents spip_document_file spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;67&#034; data-legende-lenx=&#034;xx&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt;
&lt;a href='http://clx.asso.fr/spip/IMG/exe/Testf1.exe' class=&#034; spip_doc_lien&#034; title='EXEcutable i386 DOS/Windows - 26.6 kio' type=&#034;&#034;&gt;&lt;img src='http://clx.asso.fr/spip/local/cache-vignettes/L64xH64/defaut-edd74.svg?1773251889' width='64' height='64' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;testf1.exe
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_descriptif '&gt;L'outil utilis&#233; pour v&#233;rifier la validit&#233; d'une course
&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;/td&gt;
&lt;td&gt;&lt;div class='spip_document_184 spip_document spip_documents spip_document_file spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;89&#034; data-legende-lenx=&#034;xx&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt;
&lt;a href='http://clx.asso.fr/spip/IMG/exe/VERIFCIR.exe' class=&#034; spip_doc_lien&#034; title='EXEcutable i386 DOS/Windows - 11.2 kio' type=&#034;&#034;&gt;&lt;img src='http://clx.asso.fr/spip/local/cache-vignettes/L64xH64/defaut-edd74.svg?1773251889' width='64' height='64' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;verifcir.exe
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_descriptif '&gt;L'outil utilis&#233; pour v&#233;rifier la conformit&#233; d'un circuit (version patch&#233;e)
&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Le patch, si vous avez d&#233;j&#224; r&#233;cup&#233;r&#233; les fichiers avant le 27/03/01 :&lt;/p&gt;
&lt;div class='spip_document_183 spip_document spip_documents spip_document_file spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;180&#034; data-legende-lenx=&#034;xxx&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt;
&lt;a href='http://clx.asso.fr/spip/IMG/zip/tppatch.zip' class=&#034; spip_doc_lien&#034; title='Zip - 9.4 kio' type=&#034;application/zip&#034;&gt;&lt;img src='http://clx.asso.fr/spip/local/cache-vignettes/L64xH64/zip-f045b.svg?1773251890' width='64' height='64' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;Patch correctif
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_descriptif '&gt;Si vous avez d&#233;j&#224; t&#233;l&#233;charg&#233; les fichiers, ce petit patch permettra de les ex&#233;cuter sans probl&#218;me sur un ordinateur r&#233;cent (&gt; PII). Voir aussi &lt;a href=&#034;http://www.immos-tm.com/lereporter/lerep7.html&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;la page de Cybermad&lt;/a&gt;
&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Et en cours d'&#233;criture, les outils en C pour tous les environnements o&#249; C a &#233;t&#233; port&#233;.&lt;/p&gt;
&lt;table class=&#034;table spip&#034;&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;&lt;div class='spip_document_187 spip_document spip_documents spip_document_file spip_documents_center spip_document_center spip_document_avec_legende' data-legende-len=&#034;69&#034; data-legende-lenx=&#034;xx&#034;
&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt;
&lt;a href='http://clx.asso.fr/spip/IMG/c/Bmp2.c' class=&#034; spip_doc_lien&#034; title='C source - 8.8 kio' type=&#034;text/x-csrc&#034;&gt;&lt;img src='http://clx.asso.fr/spip/local/cache-vignettes/L64xH64/c-b288c.svg?1773251890' width='64' height='64' alt='' /&gt;&lt;/a&gt;
&lt;figcaption class='spip_doc_legende'&gt; &lt;div class='spip_doc_titre '&gt;&lt;strong&gt;bmp2cir.c
&lt;/strong&gt;&lt;/div&gt; &lt;div class='spip_doc_descriptif '&gt;Un convertisseur simpliste de fichier BMP en fichier .cir
&lt;/div&gt; &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Bon courage.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_ps'&gt;&lt;p&gt;Vous ne trouverez ici que les fichiers originaux fournis par le Reporter. Ils fonctionnent sous DOS (pour les ex&#233;cutables), mais le concours est bel et bien sous Unix (Linux, *BSD, etc...)&lt;/p&gt;&lt;/div&gt;
		</content:encoded>


		

	</item>
	<item xml:lang="fr">
		<title>Le concours du reporter (2/3)</title>
		<link>http://clx.asso.fr/spip/?Le-concours-du-reporter-2-3</link>
		<guid isPermaLink="true">http://clx.asso.fr/spip/?Le-concours-du-reporter-2-3</guid>
		<dc:date>2003-01-16T12:58:52Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Ga&#233;tan RYCKEBOER</dc:creator>



		<description>&lt;p&gt;Une fois compris le principe du concours, voici les r&#218;gles un peu plus d&#233;taill&#233;es, les contraintes &#224; respecter, et la fa&#231;on dont tout cela va se d&#233;rouler.&lt;/p&gt;

-
&lt;a href="http://clx.asso.fr/spip/?-2003-Concours-de-programmation-" rel="directory"&gt;2003 : Concours de programmation&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Une fois compris le principe du concours, voici les r&#218;gles un peu plus d&#233;taill&#233;es, les contraintes &#224; respecter, et la fa&#231;on dont tout cela va se d&#233;rouler.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;&lt;a name=&#034;result&#034;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Syntaxe des fichiers r&#233;sultat&lt;/h2&gt;
&lt;p&gt;Le fichier r&#233;sultat (de m&#234;me nom que le pilote logiciel et d'extension F1) est le fichier que doit &#233;crire votre programme, contenant l'&#233;volution de votre voiture sur la piste.&lt;/p&gt;
&lt;p&gt;Le fichier doit &#234;tre de type 'ASCII' form&#233; de caract&#232;res regroup&#233;s en diff&#233;rentes lignes (s&#233;par&#233;es classiquement par les caract&#232;res &#034;carriage return&#034; et &#233;ventuellement &#034;linefeed&#034;).&lt;/p&gt;
&lt;p&gt;Par convention, la premi&#232;re ligne est une cha&#238;ne de caract&#232;res qui vous est propre, et permet d'identifier le pilote automatique qui a g&#233;n&#233;r&#233; le fichier.&lt;/p&gt;
&lt;p&gt;La deuxi&#232;me ligne doit indiquer le nom du fichier CIR (donc le nom du circuit) qui a &#233;t&#233; utilis&#233; pour donner ce r&#233;sultat.&lt;/p&gt;
&lt;p&gt;Les lignes suivantes (donc &#224; partir de la troisi&#232;me ligne) contiennent la liste des diff&#233;rentes positions de la voiture. La syntaxe impos&#233;e est d'abord la position en X (longueur de 0 &#224; 149), puis la position en Y (hauteur de 0 &#224; 99) s&#233;par&#233;s par une virgule ','.&lt;/p&gt;
&lt;p&gt;Le premier point indiqu&#233; est obligatoirement celui de la position de d&#233;part (40,4).&lt;/p&gt;
&lt;p&gt;Puisque la vitesse au d&#233;part est nulle, le point suivant est obligatoirement un voisin du point de d&#233;part, a priori de coordonn&#233;e X sup&#233;rieure (41) &#224; cause de la progression de la voiture dans le sens des aiguilles d'une montre..&lt;/p&gt;
&lt;p&gt;Le dernier point indiqu&#233; est celui qui a permis de passer la ligne d'arriv&#233;e (position x sup&#233;rieure ou &#233;gale &#224; 40).&lt;/p&gt;
&lt;p&gt;Voici un extrait de fichier r&#233;sultat correct :&lt;/p&gt;
&lt;p&gt;&lt;/code&gt;&lt;br class='autobr' /&gt;
Pilote automatique de Ferraro, &#233;crit par Jean Vazy&lt;br class='autobr' /&gt;
monaco.cir&lt;br class='autobr' /&gt;
40,4&lt;br class='autobr' /&gt;
41,4&lt;br class='autobr' /&gt;
(...)&lt;br class='autobr' /&gt;
38,6&lt;br class='autobr' /&gt;
42,5&lt;br class='autobr' /&gt;
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Entre (41,4) et (38,6) se trouvent bien entendu la s&#233;rie des coordonn&#233;es qui permettent de boucler le circuit...&lt;br class='autobr' /&gt;
&lt;a name=&#034;struct_pilote&#034;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Structure du pilote automatique&lt;/h2&gt;
&lt;p&gt;Voyons ensemble l'ordinogramme de base des traitements que doit &#234;tre en mesure d'accomplir votre pilote logiciel :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;. +-----------------+ &#166; Pilote Logiciel &#166; +-----------------+ &#166; +--------------------------------------------------------+ &#166; Chargement dans un tableau d'un fichier .CIR &#166; &#166; contenant la description d'un circuit sous la forme &#166; &#166; d'une matrice de 100 lignes de 150 caract&#232;res, ou un &#166; &#166; caract&#232;re espace repr&#233;sente la piste et tout autre &#166; &#166; le d&#233;cor. &#166; +--------------------------------------------------------+ &#166; +--------------------------------------------------------+ &#166; Ouverture du fichier destin&#233; &#224; contenir les &#166; &#166; d&#233;placements du bolide sur la piste. Fichier du m&#234;me &#166; &#166; nom que votre programme mais d'extension .F1. &#166; +--------------------------------------------------------+ &#166; +--------------------------------------------------------+ &#166; Positionnement dans le tableau sur la ligne de d&#233;part &#166; &#166; fix&#233; par d&#233;faut en ordre 40,4 et &#233;criture de cette &#166; &#166; position dans le fichier des d&#233;placements .F1 &#166; +--------------------------------------------------------+ &#166; +--------------------------------------------------------+ &#166; Calcul de prochaine position du bolide sur la piste &#166; +&gt;-&#166; (donc dans le tableau) en respectant les r&#232;gles de &#166; &#166; &#166; d&#233;placement et sans collision. &#166; &#166; +--------------------------------------------------------+ &#166; &#166; &#166; +--------------------------------------------------------+ &#166; &#166; Ecriture de la nouvelle position dans le fichier des &#166; &#166; &#166; d&#233;placements .F1 &#166; &#166; +--------------------------------------------------------+ &#166; &#166; &#166; +-----------------------------------+ &#166; N+----&#166; Test si une touche est press&#233;e * +----+O &#166; O&#166; +-----------------------------------+ &#166;U &#166; N&#166; &#166;I &#166; +-----------------------------+ &#166; &#166; &#166; Test si la ligne d'arriv&#233;e &#166; &#166; &#166; &#166; est franchie dans le bon &#166; &#166; &#166; &#166; sens (m&#234;me position dans +----+O &#166; &#166; &#166; le tableau que la ligne de &#166; &#166;U &#166; &#166; &#166; d&#233;part) &#166; &#166;I &#166; &#166; +-----------------------------+ &#166; &#166; &#166; &#166; &#166; &#166; &#166; +-----------------------------+ +-----------------------+ +&lt;-&#166; Non ? On continue &#166; &#166; Si oui fermeture du &#166; +-----------------------------+ &#166; fichier .F1 &#166; +-----------------------+ &#166; +-----------------------+ &#166; Sortie du programme &#166; +-----------------------+ -&#208;- +--------------------------------------------------------+ &#166; Validation et chronom&#233;trage du fichier .F1 pour le &#166; &#166; circuit trait&#233; par le programme fourni TESTF1.EXE &#166; +--------------------------------------------------------+&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Le temps allou&#233;&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb1&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;Sur un 486 DX2 66mhz&#034; id=&#034;nh1&#034;&gt;1&lt;/a&gt;]&lt;/span&gt; pour cr&#233;er un fichier .F1 des d&#233;placements &#233;tant limit&#233; &#224; 5 mn pour un circuit,le programme doit &#234;tre interruptible par simple pression d'une touche, avec un temps de r&#233;action ne d&#233;passant pas 10 secondes.&lt;/p&gt;
&lt;p&gt;Toutes les informations qui vous sont n&#233;cessaires pour la r&#233;alisation de ce programme sont d&#233;taill&#233;es dans les chapitres pr&#233;c&#233;dents (ie : r&#232;gles de d&#233;placement, formats des fichiers etc.)&lt;/p&gt;
&lt;p&gt;&lt;a name=&#034;creecir&#034;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Cr&#233;ation et v&#233;rification des circuits&lt;/h2&gt;
&lt;p&gt;D'abord pour ceux qui b&#233;n&#233;ficient d'un DOS, d'un &#233;cran VGA avec un driver de souris install&#233; : le programme CREECIR (sous DOS, fourni originellement par le Reporter) va vous faciliter la vie !&lt;/p&gt;
&lt;p&gt;Le programme CREECIR a un double but : celui de vous aider &#224; dessiner des circuits de fa&#231;on simple et visuelle, et celui de v&#233;rifier la conformit&#233; des circuits avec le r&#232;glement.&lt;/p&gt;
&lt;p&gt;Le programme n&#233;cessite un PC avec carte VGA, et une souris dont le driver est install&#233;.&lt;/p&gt;
&lt;p&gt;La syntaxe d'appel est :&lt;/p&gt;
&lt;p&gt; CREECIR [fichier CIR]&lt;/p&gt;
&lt;p&gt;Si le fichier CIR est indiqu&#233;, le programme va le charger et vous permettre de modifier ce circuit &#224; souhait.&lt;/p&gt;
&lt;p&gt;Si le fichier CIR est sp&#233;cifi&#233; mais n'existe pas sur disque, le programme va le cr&#233;er, en partant d'un circuit 'vierge', sauf la zone de d&#233;part impos&#233;e.&lt;/p&gt;
&lt;p&gt;Si le fichier CIR n'est pas indiqu&#233;, le programme va cr&#233;er un nouveau fichier de nom NOUVEAU.CIR, m&#234;me s'il existe d&#233;j&#224; un fichier de ce nom.&lt;/p&gt;
&lt;p&gt;Le programme est juste un programme de dessin 'minimal'. On ne peut charger un circuit &#224; l'int&#233;rieur du programme par exemple. Il faut quitter et relancer CREECIR. Pour la gestion de fichier, il faudra parfaire vos connaissances du DOS (COPY ou REN ;-)).&lt;/p&gt;
&lt;p&gt;En r&#233;alit&#233;, tout, dans le programme, se fait &#224; la souris. Oubliez donc le clavier !&lt;/p&gt;
&lt;p&gt;Bien entendu, la sauvegarde de vos cr&#233;ations est possible dans le programme (quand m&#234;me !).&lt;/p&gt;
&lt;p&gt;En faisant tourner le programme vous constaterez plusieurs zones :&lt;/p&gt;
&lt;p&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; 1) Sur la colonne de gauche, la palette de couleurs avec celle qui est s&#233;lectionn&#233;e entour&#233;e d'un fin trait blanc. Les couleurs sont celles de la palette de Windows, car c'est la convention utilis&#233;e pour les circuits.
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; 2) Au centre, le dessin du circuit.. &#233;tonnant non ?
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; 3) En bas &#224; gauche, une s&#233;rie d'icones &#034;outil&#034;, dont l'un est s&#233;lectionn&#233; (entour&#233; d'un liser&#233; rouge).&lt;/p&gt;
&lt;p&gt; On distingue 7 outils de cr&#233;ation graphique :&lt;/p&gt;
&lt;p&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; le crayon qui permet de dessiner pixel par pixel ;
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; le pinceau qui permet de dessiner par carr&#233; de 3*3 pixels (tr&#232;s pratique pour faire des circuits rapidement !) ; &lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; le trait qui permet de faire des lignes joignant 2 points (Bresenham) ;
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; le rectangle qui permet de remplir rapidement une grande zone ; &lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; le pot de peinture, qui effectue un remplissage (fill) de toute une zone. M&#233;fiez-vous car il n'y a pas de retour en arri&#232;re ! (sauvegardez souvent) ;
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; un outil qui permet de s&#233;lectionner une zone graphique et de la copier dans un presse-papier ; &lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; l'outil inverse, qui permet de recoller la zone du presse-papier sur le dessin.&lt;/p&gt;
&lt;p&gt; Puis on trouve 3 ic&#244;nes d'outils g&#233;n&#233;raux :&lt;/p&gt;
&lt;p&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; celui repr&#233;sent&#233; par le symbole OK, permet de v&#233;rifier la conformit&#233; du circuit au r&#232;glement ;
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; celui indiquant une disquette permet la sauvegarde de votre oeuvre ;
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; celui marqu&#233; EXIT permet de sortir du programme (eauvegardez avant, il n'y a pas encore de garde fou).&lt;/p&gt;
&lt;p&gt;Un essai valant mieux qu'un long discours, t&#233;l&#233;chargez le logiciel DOS CREECIR (garanti sans virus), avec comme circuit le fichier MONACO.CIR, fourni &#224; titre de circuit de d&#233;monstration.&lt;br class='autobr' /&gt; ! N&#233;cessite un driver Souris et un &#233;cran VGA (et surtout un DOS) !&lt;/p&gt;
&lt;p&gt;Pour ceux qui ne b&#233;n&#233;ficient pas d'&#233;cran VGA, ou de drivers de souris, ainsi que pour les inconditionnels de Windows..&lt;/p&gt;
&lt;p&gt;Vous trouverez dans les annexes de cette page quelques outils compl&#233;mentaires (sous DOS, pour le moment) :&lt;/p&gt;
&lt;p&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; VERIFCIR.EXE programme non graphique permettant de v&#233;rifier la conformit&#233; d'un circuit vis &#224; vis du r&#232;glement.&lt;/p&gt;
&lt;p&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; CIR2BMP.EXE programme permettant la conversion des fichiers CIR en fichiers BMP non compress&#233;s (16 couleurs). Ceci peut vous permettre d'utiliser vos outils classiques de dessin.&lt;/p&gt;
&lt;p&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; BMP2CIR.EXE programme inverse du pr&#233;c&#233;dent, permettant de g&#233;n&#233;rer un fichier CIR, &#224; partir d'un dessin BMP 16 couleurs non compress&#233;.&lt;/p&gt;
&lt;p&gt;Attention, pour &#234;tre compatible avec les circuits, les fichiers BMP doivent &#234;tre de taille 150*100 pixels et n'utiliser que les 16 couleurs standard de Windows dans leur ordre d'origine ! &lt;br class='autobr' /&gt;
&lt;a name=&#034;chrono&#034;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Chronom&#233;trage des r&#233;sultats&lt;/h2&gt;
&lt;p&gt; Vous avez d&#233;velopp&#233; un pilote automatique de comp&#233;tition, et il g&#233;n&#232;re un fichier r&#233;sultat (d'extension F1) tr&#232;s performant !&lt;/p&gt;
&lt;p&gt;Mais votre programme est-il correct ?&lt;/p&gt;
&lt;p&gt;C'est pas qu'on doute de votre bonne foi, mais une erreur est si vite arriv&#233;e (Argghhh ! L&#224; je suis pass&#233; trop pr&#232;s du bord !).&lt;/p&gt;
&lt;p&gt;Nous avons donc d&#233;cid&#233; d'&#233;crire un programme arbitre, sous DOS, fourni par le REPORTER orignellement et dont nous n'avons pas les sources, du nom TESTF1.EXE, qui v&#233;rifie que le fichier r&#233;sultat g&#233;n&#233;r&#233; par les pilotes logiciels est correct.&lt;/p&gt;
&lt;p&gt;A savoir, il v&#233;rifie que le tour de piste a &#233;t&#233; effectu&#233;, dans le bon sens et &#224; partir du point de d&#233;part impos&#233;. Il contr&#244;le, point par point, l'&#233;volution de votre voiture sur la piste, pour savoir si vous ne faites que des d&#233;placements autoris&#233;s et si vous n'entrez pas en collision avec le bord de la piste.&lt;/p&gt;
&lt;p&gt;De plus TESTF1 joue le r&#244;le de chronom&#232;tre officiel de chaque course.&lt;/p&gt;
&lt;p&gt;Il compte le nombre de coups n&#233;cessaires &#224; votre voiture pour effectuer le tour de piste et extrapole le dernier coup afin de donner un temps au centi&#232;me de seconde...&lt;/p&gt;
&lt;p&gt;Par ailleurs, il calcule la vitesse moyenne de votre Formule 1, qui sert de d&#233;partager des &#233;ventuels ex aequo.&lt;/p&gt;
&lt;p&gt;Vous verrez qu'&#224; l'usage, le programme TESTF1 est tr&#232;s utile, pour vous aider &#224; mettre au point votre pilote.&lt;/p&gt;
&lt;p&gt;Certaines options du programme ont en effet &#233;t&#233; rajout&#233;es juste pour vous faciliter le d&#233;boguage de vos sources.&lt;/p&gt;
&lt;p&gt;Le programme TESTF1.EXE joue donc &#224; la fois le r&#244;le d'arbitre et de chronom&#233;treur officiel du concours !&lt;/p&gt;
&lt;p&gt;TESTF1 se lance a partir du DOS, &#224; l'aide d'une ligne de commande de ce type :&lt;/p&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;TESTF1 fichier_r&#233;sultat [-nxxx] [-t] [-l]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Les param&#232;tres entre crochet [] sont des param&#232;tres facultatifs.&lt;/p&gt;
&lt;p&gt;En plus du nom du fichier r&#233;sultat que TESTF1 est cens&#233; contr&#244;ler, on peut lui indiquer diff&#233;rentes options :&lt;/p&gt;
&lt;p&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; &lt;strong&gt;-nxxx :&lt;/strong&gt; Dans cette option le xxx correspond &#224; un chiffre (par d&#233;faut le programme utilise -n100). Ce chiffre exprime, en centi&#232;mes de seconde, le temps d'attente entre l'affichage de deux points successifs du fichier r&#233;sultat.&lt;/p&gt;
&lt;p&gt;TESTF1 est en effet un programme qui vous permet aussi de visualiser la course, comme si vous y &#233;tiez ! (si votre ordinateur est &#233;quip&#233; d'une carte VGA)&lt;/p&gt;
&lt;p&gt;Ce param&#233;trage permet d'acc&#233;l&#233;rer &#224; volont&#233; l'affichage, pour ceux qui n'ont pas la patience d'attendre.&lt;/p&gt;
&lt;p&gt;A noter la possibilit&#233; d'indiquer -n0, qui commute le programme en mode pas &#224; pas (Il faut appuyer sur une touche du clavier entre chaque d&#233;placement...). C'est tr&#232;s pratique pour mettre son pilote logiciel au point !&lt;/p&gt;
&lt;p&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; &lt;strong&gt;-t :&lt;/strong&gt; Pour ceux qui n'ont vraiment pas la patience d'attendre, ou simplement ceux qui n'ont pas de carte VGA, l'option -t d&#233;sactive l'affichage graphique. Le r&#233;sultat est donn&#233;, brut de fonderie, en mode texte.&lt;/p&gt;
&lt;p&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; &lt;strong&gt;-l :&lt;/strong&gt; TESTF1 ne se contente pas de tout cela... Pour nous faciliter notre futur travail de d&#233;pouillement du r&#233;sultat des courses, TESTF1 g&#233;n&#232;re un fichier r&#233;sum&#233;, globalisant les r&#233;sultats obtenus sur un circuit donn&#233;. TESTF1 cr&#233;e et entretient un fichier de nom :&lt;/p&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;nom_du_circuit.LOG&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;pour chaque fichier circuit (extension .CIR). Par ce biais il recense tous les r&#233;sultats obtenus sur ce circuit.&lt;/p&gt;
&lt;p&gt;Cela peut vous &#234;tre aussi utile, pour analyser les progr&#232;s de votre programme.&lt;/p&gt;
&lt;p&gt;L'option -l interdit au programme TESTF1 d'ajouter le r&#233;sultat au fichier LOG du circuit.&lt;/p&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id=&#034;nb1&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh1&#034; class=&#034;spip_note&#034; title=&#034;Notes 1&#034; rev=&#034;appendix&#034;&gt;1&lt;/a&gt;] &lt;/span&gt;Sur un 486 DX2 66mhz&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		&lt;div class='rss_ps'&gt;&lt;p&gt;Attention, ce article est une copie de l'article original publi&#233; dans le Reporter n&#176;7.&lt;br class='autobr' /&gt;
Les logiciels dont on parle ici fonctionnenet sous DOS, vous pouvez utiliser soit DOSemu, sous linux, soit FreeDOS (qui est un OS &#224; part enti&#218;re).&lt;/p&gt;&lt;/div&gt;
		</content:encoded>


		

	</item>
	<item xml:lang="fr">
		<title>Le concours du reporter</title>
		<link>http://clx.asso.fr/spip/?Le-concours-du-reporter</link>
		<guid isPermaLink="true">http://clx.asso.fr/spip/?Le-concours-du-reporter</guid>
		<dc:date>2003-01-15T12:57:43Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Ga&#233;tan RYCKEBOER, Pascal Brognez</dc:creator>


		<dc:subject>Programmation</dc:subject>

		<description>&lt;p&gt;Un concours de programmation sous un environnement libre (de pr&#233;f&#233;rence sous Linux), ouvert &#224; tous, simple d'acc&#218;s, ne n&#233;cessitant que l'utilisation d'un cerveau en bonne et due forme, et un display X (ou une console) permettant de visualiser un circuit o&#249; faire circuler une formule 1.&lt;/p&gt;

-
&lt;a href="http://clx.asso.fr/spip/?-2003-Concours-de-programmation-" rel="directory"&gt;2003 : Concours de programmation&lt;/a&gt;

/ 
&lt;a href="http://clx.asso.fr/spip/?+-Programmation-+" rel="tag"&gt;Programmation&lt;/a&gt;

		</description>


 <content:encoded>&lt;img src='http://clx.asso.fr/spip/local/cache-vignettes/L150xH49/rep11-738ab.jpg?1759523438' alt='' class='spip_logo spip_logo_right' width='150' height='49' onmouseover='' onmouseout='' /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Pour les vacances 1995, p&#233;riode propice &#224; la m&#233;ditation, la r&#233;flexion et le jeu, &lt;a href=&#034;http://members.aol.com/cobalt60fr/reporter/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;le Reporter&lt;/a&gt; lan&#231;ait un concours de programmation aupr&#218;s de ses lecteurs.&lt;/p&gt;
&lt;p&gt; Cette p&#233;riode avait &#233;t&#233; choisie sp&#233;cialement en pensant aux &#233;tudiants qui auraient ainsi plus de temps &#224; y consacrer qu'en p&#233;riode scolaire (s'ils n'ont pas autre chose a penser bien sur :-).&lt;/p&gt;
&lt;p&gt;Aujourd'hui, CLX se propose de faire revivre ce concours sous Linux, en adaptant les r&#218;gles.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;L'objet du concours en lui-m&#234;me est tr&#232;s simple. Il va s'agir de cr&#233;er un pilote logiciel de formule 1.&lt;/p&gt;
&lt;p&gt; Ce concours se veut rester dans l'esprit qui anime le REPORTER depuis sa cr&#233;ation, &#224; savoir rester accessible &#224; tous quelque soit son niveau en programmation et &#234;tre un moyen de partager une passion via le plaisir du &#034;jeu&#034; et non pas pour l'app&#226;t du gain.&lt;/p&gt;
&lt;p&gt; Ce concours n'est donc pas prim&#233; selon le concept traditionnel Faire les choses comme tout le monde n'est pas notre sport favori :-). Ce qui ne veut pas dire que les participants n'y trouveront pas leur bonheur.&lt;/p&gt;
&lt;p&gt; Outre le plaisir de participer que procure un jeu collectif, les 50 premiers d'entre-vous qui nous auront fait parvenir le r&#233;sultat de leurs cogitations avant la cl&#244;ture du concours recevront tous un cadeau.&lt;/p&gt;
&lt;p&gt; Bien entendu cela ne concerne que les 50 premiers qui nous auront envoy&#233; un programme parfaitement op&#233;rationnel, c'est-&#224;-dire capable de traiter dans le respect des r&#232;gles et sans planter au moins 70% des circuits qu'il aura &#224; parcourir. Voil&#224; qui va d&#233;cevoir les astucieux qui esp&#232;raient envoyer un p'tit programme se contentant de s'ex&#233;cuter rien que pour obtenir un cadeau :-)&lt;/p&gt;
&lt;p&gt; Ici seul le m&#233;rite compte, il n'est pas n&#233;cessaire d'&#234;tre vainqueur pour avoir droit &#224; son cadeau.&lt;/p&gt;
&lt;p&gt; A l'&#233;poque, celui-ci se pr&#233;sentait sous la forme d'un abonnement gratuit d'un an (4 num&#233;ros) au Reporter.&lt;/p&gt;
&lt;p&gt; Les participants auraient re&#231;u donc dans leur boite &#224; lettre d&#232;s sa parution et en priorit&#233; le REPORTER sur disquette en version Dos et Windows. Et comme il restait de la place sur ces supports, Le reporter n'aurait pas manqu&#233; de la combler avec quelques petits bonus.&lt;/p&gt;
&lt;p&gt;Aujourd'hui, nous proposons des cadeaux de valeur comparable, c'est &#224; dire un abonnement gratuit &#224; la liste de diffusion du CLX, un acc&#232;s privil&#233;gi&#233; au site WEB de CLX ave la possibilit&#233; de publier des articles, et peut-&#234;tre d'autres bonus. Si d'aimables m&#233;c&#232;nes souhaitent apporter leur contribution &#224; la renaissance de ce concours en faisant b&#233;n&#233;ficier ces m&#234;mes 50 premiers candidats de petits cadeaux, ils seront les bienvenus.&lt;/p&gt;
&lt;p&gt;Nous ne manquerons pas de les signaler sur le site.&lt;/p&gt;
&lt;p&gt; Derni&#232;re petite chose, tous les mois pr&#233;c&#233;dant la cl&#244;ture du concours, nous ferons para&#238;tre les r&#233;sultats des programmes re&#231;us obtenus sur un circuit de r&#233;f&#233;rence (avec le nom de leur auteur bien s&#251;r).&lt;/p&gt;
&lt;p&gt; Il est temps maintenant que vous preniez connaissance des r&#232;gles du jeu, mais n'oubliez pas que si &lt;i&gt;l'important est de participer&lt;/i&gt; (Pierre de Coubertin), &lt;i&gt;l'essentiel est de s'amuser&lt;/i&gt; (Le Reporter).&lt;/p&gt;
&lt;p&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; &lt;i&gt;pr&#233;sentation g&#233;n&#233;rale du concours&lt;/i&gt;
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; &lt;a href=&#034;#evol_f1&#034; class=&#034;spip_ancre&#034;&gt;&lt;i&gt;r&#232;gles d'&#233;volution de la F1&lt;/i&gt;&lt;/a&gt;
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; &lt;a href=&#034;#desc_cir&#034; class=&#034;spip_ancre&#034;&gt;&lt;i&gt;r&#232;gles de description du circuit&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;en cours de r&#233;daction&lt;/strong&gt;
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; &lt;a href='http://clx.asso.fr/spip/?Le-concours-du-reporter-2-3' class=&#034;spip_in&#034;&gt;&lt;i&gt;syntaxe des fichiers r&#233;sultat&lt;/i&gt;&lt;/a&gt;
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; &lt;a href='http://clx.asso.fr/spip/?Le-concours-du-reporter-2-3' class=&#034;spip_in&#034;&gt;&lt;i&gt;structure du pilote automatique&lt;/i&gt;&lt;/a&gt; &lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; &lt;a href='http://clx.asso.fr/spip/?Le-concours-du-reporter-2-3' class=&#034;spip_in&#034;&gt;&lt;i&gt;cr&#233;ation et v&#233;rification des circuits&lt;/i&gt;&lt;/a&gt;
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; &lt;a href='http://clx.asso.fr/spip/?Le-concours-du-reporter-2-3' class=&#034;spip_in&#034;&gt;&lt;i&gt;chronom&#233;trage du r&#233;sultat&lt;/i&gt;&lt;/a&gt;
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; &lt;a href='http://clx.asso.fr/spip/?Le-concours-du-reporter-3-3' class=&#034;spip_in&#034;&gt;&lt;i&gt;r&#232;gles de participation&lt;/i&gt;&lt;/a&gt;
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; &lt;a href='http://clx.asso.fr/spip/?Le-concours-du-reporter-3-3' class=&#034;spip_in&#034;&gt;&lt;i&gt;&#233;preuves de qualification&lt;/i&gt;&lt;/a&gt;
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; &lt;a href='http://clx.asso.fr/spip/?Le-concours-du-reporter-3-3' class=&#034;spip_in&#034;&gt;&lt;i&gt;r&#233;sumons par un exemple concret&lt;/i&gt;&lt;/a&gt;
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; &lt;a href='http://clx.asso.fr/spip/?Le-concours-du-Reporter-Annexes' class=&#034;spip_in&#034;&gt;Le concours du Reporter : Annexes&lt;/a&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Pr&#233;sentation&lt;/h2&gt;
&lt;p&gt; A la base, il s'agit d'un concours de programmation : chaque participant doit &#233;crire un programme qui permet de piloter au plus vite une formule 1 sur un circuit quelconque dont il ne connait pas a priori le parcours.&lt;/p&gt;
&lt;p&gt; Il faut donc &#233;crire un programme de pilote automatique de formule 1.&lt;/p&gt;
&lt;p&gt; En fait ce concours s'apparente &#224; celui organis&#233; &#224; sa grande &#233;poque, par la revue Micro-Syst&#232;me. Ce concours avait passionn&#233; une bonne partie de la France, mais limitait fortement la participation car il fallait r&#233;aliser un vrai mod&#232;le r&#233;duit de voiture.&lt;/p&gt;
&lt;p&gt; La diff&#233;rence c'est qu'ici le concours est uniquement logiciel et chacun peut facilement participer : il suffit de poss&#233;der un ordinateur compatible PC. Peu de moyens sont donc n&#233;cessaires (c'est ouvert &#224; tous ou presque) et seule l'astuce du programmeur lui permettra de faire la diff&#233;rence.&lt;/p&gt;
&lt;p&gt; Pour cela, des r&#232;gles tr&#232;s simples d&#233;finissent le comportement 'physique' de la voiture sur la piste. Le programme doit respecter ces r&#232;gles, tout en suivant le trac&#233; de la piste qui constitue le circuit, et joindre au plus vite la ligne d'arriv&#233;e.&lt;/p&gt;
&lt;p&gt; L'originalit&#233; de ce concours r&#233;side dans le fait que m&#234;me les organisateurs du concours (nous-m&#234;me) ignorent sur quelles pistes se d&#233;rouleront les courses !&lt;/p&gt;
&lt;p&gt; En effet chaque participant doit aussi fournir un fichier 'circuit' contenant une piste dont le trac&#233; est laiss&#233; &#224; sa discr&#233;tion, (et qui a priori favorisera son propre pilote).&lt;/p&gt;
&lt;p&gt; Chacun des participants fera tourner sa voiture sur son propre circuit, mais aussi sur les circuits de ses adversaires.&lt;/p&gt;
&lt;p&gt; Bref pour gagner, il faut jouer sur les deux tableaux :&lt;/p&gt;
&lt;p&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; 1) D&#233;velopper un pilote logiciel qui puisse tourner vite sur n'importe quel circuit sans en connaitre a priori le parcours.
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; 2) D&#233;crire un circuit s&#233;lectif, qui tendra &#224; pieger et ralentir au maximum les pilotes adversaires par sa complexit&#233; tout en favorisant le sien.&lt;/p&gt;
&lt;p&gt; Bien entendu il n'est pas question que vous perdiez du temps &#224; cr&#233;er un circuit ou un programme de chronom&#233;trage.&lt;/p&gt;
&lt;p&gt; Sont donc fournis gratuitement avec ce num&#233;ro un programme vous permettant de dessiner graphiquement un circuit conforme ainsi qu'un programme de chronom&#233;trage et de validation qui utilise le fichier des d&#233;placements g&#233;n&#233;r&#233; par votre pilote logiciel pour &#233;valuer ses performances.&lt;/p&gt;
&lt;p&gt; L'&#233;diteur de circuits originel n&#233;cessite une carte vga, mais n'est pas indispensable pour cr&#233;er un circuit. Un simple &#233;diteur de texte suffit comme expliqu&#233; plus loin, ce afin de rendre le concours accessible ind&#233;pendamment du mat&#233;riel PC utilis&#233;. Par contre, le programme tourne sous DOS.&lt;/p&gt;
&lt;p&gt; De m&#234;me, ce n'est pas parce que l'on parle de 'tourner vite' ou de 'chronom&#233;trage' qu'il s'agit d'un concours favorisant un langage rapide (ASM par exemple). Comme vous le comprendrez en lisant cet article en d&#233;tail, les temps en question sont des temps relatifs.&lt;/p&gt;
&lt;p&gt; Plus que le langage et sa rapidit&#233;, c'est l'astuce du programmeur qui lui permettra de faire la diff&#233;rence. Tout le monde a ses chances dans ce concours, que ce soit un habitu&#233; du C ou du basic. &lt;br class='autobr' /&gt;
&lt;a name=&#034;evol_f1&#034;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;R&#232;gles d'&#233;volution de la F1&lt;/h2&gt;
&lt;p&gt; Les r&#232;gles qui r&#233;gissent le d&#233;placement d'une voiture sur la piste d'un circuit quelconque sont assez simples.&lt;/p&gt;
&lt;p&gt; Elles sont bas&#233;es sur un petit jeu qui se pratiquait (et se pratique s&#251;rement encore !) alors que nous usions nos fonds de culottes sur les bancs du lyc&#233;e...&lt;/p&gt;
&lt;p&gt; Imaginez une feuille de papier quadrill&#233;e sur laquelle on a d&#233;limit&#233; une piste &#224; l'aide de deux trac&#233;s continus formant un circuit boucl&#233; sur lui-m&#234;me (vous voyez, ce n'est que du mat&#233;riel classique pour les cancres du fond de la classe : juste des stylos et du papier !).&lt;/p&gt;
&lt;p&gt; &#199;a se jouait &#224; deux (voire plus), et chacun utilisait un stylo-bille de couleur diff&#233;rente, qui correspondait &#224; la couleur de sa voiture f&#233;tiche.&lt;/p&gt;
&lt;p&gt; La position de la voiture - qui devait bien s&#251;r toujours rester sur la piste - &#233;tait indiqu&#233;e par un petit point, &#224; l'intersection d'une ligne horizontale et d'une ligne verticale du quadrillage de la feuille.&lt;/p&gt;
&lt;p&gt; Chacun, &#224; tour de r&#244;le, d&#233;pla&#231;ait sa voiture, en respectant la r&#232;gle simple r&#233;currente suivante.&lt;/p&gt;
&lt;p&gt; La nouvelle position de la voiture s'obtenait en reportant le d&#233;placement pr&#233;c&#233;dent de la voiture, et en choisissant soit le point obtenu, soit l'un de ses 8 voisins imm&#233;diats.&lt;/p&gt;
&lt;div class='spip_document_161 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='http://clx.asso.fr/spip/local/cache-vignettes/L440xH72/rep5-c28ef.gif?1759571039' width='440' height='72' alt='' /&gt;
&lt;/figure&gt;
&lt;/div&gt; &lt;p&gt;Dans l'exemple repr&#233;sent&#233; ci dessus, la voiture, dont le d&#233;placement pr&#233;c&#233;dent &#233;tait de un point vers le haut et de 4 vers la droite, peut maintenant choisir l'un des 9 points indiqu&#233; par '&lt;font color=&#034;red&#034;&gt; ?&lt;/font&gt;' comme nouvelle position.&lt;/p&gt;
&lt;p&gt; On constate que par ce simple m&#233;canisme, on pouvait acc&#233;l&#233;rer (augmenter le d&#233;placement d'un point), freiner (diminuer d'un point) ou rester &#224; vitesse constante ind&#233;pendamment dans les deux directions.&lt;/p&gt;
&lt;p&gt; On obtenait ainsi un comportement similaire &#224; celui d'une voiture (essayez et vous verrez qu'il ne faut pas prendre des virages tendus &#224; vitesse trop &#233;lev&#233;e !).&lt;/p&gt;
&lt;p&gt; Bien entendu, il fallait aussi s'&#233;vertuer &#224; &#233;viter les collisions, soit avec les voitures adverses, soit avec la bord de la piste.&lt;/p&gt;
&lt;p&gt; Les diff&#233;rences entre ce jeu scolaire et le concours sont peu nombreuses :&lt;/p&gt;
&lt;p&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; Pour des raisons de simplification, la position de la voiture est au centre d'un carr&#233; (appelons-le &#034;pixel&#034;, m&#234;me si ce n'est pas une d&#233;nomination parfaite). Les bords de piste ne sont pas une ligne continue, mais sont aussi d&#233;finis par des pixels carr&#233;s.&lt;/p&gt;
&lt;p&gt; Voir ci-dessous un 'zoom' sur une portion de circuit :&lt;/p&gt;
&lt;div class='spip_document_162 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='http://clx.asso.fr/spip/local/cache-vignettes/L500xH60/rep6-86973.jpg?1759571039' width='500' height='60' alt='' /&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; Le programme que vous avez &#224; &#233;crire (le pilote logiciel) doit d&#233;crire l'&#233;volution d'une seule voiture sur la piste.&lt;/p&gt;
&lt;p&gt; En fait, il s'agit plut&#244;t d'essais de qualification que de la course en elle m&#234;me. Chaque nouveau d&#233;placement de la voiture correspond &#224; un temps factice d'une seconde. La taille d'un&lt;br class='autobr' /&gt; 'pixel' correspond de fa&#231;on arbitraire &#224; celle d'un carr&#233; de 10 m&#232;tres par 10 m&#232;tres. Ces conventions permettent d'obtenir les vitesses de notre voiture virtuelle, exprim&#233;es en km/h, de fa&#231;on assez r&#233;alistes.&lt;/p&gt;
&lt;p&gt; Le chronom&#232;trage de votre voiture correspond donc &#224; un chiffre tout &#224; fait identique quelque soit l'ordinateur, car il correspond au nombre de coups n&#233;cessaires pour boucler un circuit donn&#233;.&lt;/p&gt;
&lt;p&gt; Le but, donc, c'est d'&#233;crire un programme qui d&#233;finit les positions successives de la voiture, en respectant les r&#232;gles des d&#233;placements, et suivant un trac&#233; donn&#233;, afin de boucler un tour en moins de coups que les autres programmes.&lt;/p&gt;
&lt;p&gt; Pour ce faire, le circuit est repr&#233;sent&#233; dans un fichier &#224; l'aide de caract&#232;res Ascii dispos&#233;s dans une matrice rectangulaire de 100 lignes par 150 colonnes. Un caract&#232;re espace repr&#233;sente la&lt;br class='autobr' /&gt; piste tandis que tout autre repr&#233;sente le d&#233;cor. Les r&#232;gles d&#233;finissant le format de ce fichier sont d&#233;crites plus loin.&lt;/p&gt;
&lt;p&gt; Le point de d&#233;part est fix&#233; (c'est le point de coordonn&#233;es x=40 y=4), ainsi que le sens dans lequel il faut faire le tour du circuit (D&#233;part vers la droite, soit un sens qui suit globalement celui des aiguilles d'une montre).&lt;/p&gt;
&lt;p&gt; La vitesse au d&#233;part est nulle, ce qui signifie que le point d'arriv&#233; du premier d&#233;placement est un des 8 voisins du point de d&#233;part (ou plus exactement un des trois plac&#233;s &#224; sa droite, sinon le d&#233;part se ferait en marche arri&#232;re :-)&lt;/p&gt;
&lt;p&gt; Le but du programme est donc d'&#233;crire un fichier r&#233;sultat donnant les diff&#233;rentes positions de la voiture calcul&#233;es pour un circuit donn&#233; jusqu'&#224; la ligne d'arriv&#233;e (de m&#234;me coordonn&#233;es que le point de d&#233;part).&lt;/p&gt;
&lt;p&gt; Il est, &#233;videmment, interdit d'entrer en collision avec les bords de la piste, faute de quoi votre formule 1 sera consid&#233;r&#233;e comme d&#233;truite et votre tour ne sera pas pris en compte ! (Ce n'est pas tr&#232;s solide ces bolides...)&lt;/p&gt;
&lt;p&gt; Le fichier r&#233;sultat est ensuite pass&#233; en param&#232;tre au programme TESTF1.EXE qui se charge de v&#233;rifier que le circuit est bien boucl&#233;, qu'il n'y a pas collisions, que les r&#232;gles de d&#233;placement sont respect&#233;es, et en final d'afficher les temps.&lt;/p&gt;
&lt;p&gt; Il convient de pr&#233;ciser en d&#233;tail la mani&#232;re dont s'effectue les tests de collisions&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb1&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;Ci-joint un exemple en Pascal de l'algorithme de test de (&#8230;)&#034; id=&#034;nh1&#034;&gt;1&lt;/a&gt;]&lt;/span&gt;, qui vous emp&#234;chent de 'mordre' sur les bas&lt;br class='autobr' /&gt; cot&#233;s pour couper un virage.&lt;/p&gt;
&lt;p&gt; La r&#232;gle est simple : on trace la ligne entre le point de d&#233;part et d'arriv&#233;e de la voiture, et si l'un des points interm&#233;diaires n'est pas sur la piste, il y a collision !&lt;/p&gt;
&lt;p&gt; Mais, me diront &#224; juste titre certains d'entre vous, cette r&#232;gle apparemment simple peut poser un probl&#232;me, tr&#232;s connu par ceux qui ont d&#233;j&#224; &#233;crit des routines de trac&#233; de lignes...&lt;/p&gt;
&lt;p&gt; En effet certains cas particuliers peuvent devenir des cas litigieux, comme illustr&#233; par l'exemple suivant :&lt;/p&gt;
&lt;div class='spip_document_166 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='http://clx.asso.fr/spip/local/cache-vignettes/L127xH41/rep10-5a59a.jpg?1759571039' width='127' height='41' alt='' /&gt;
&lt;/figure&gt;
&lt;/div&gt; &lt;p&gt;Le d&#233;placement de la voiture est de 5 pixels vers la droite et de 1 pixels vers le haut (joignant les deux points jaunes. Pour les deux premiers et les deux derniers pixels, il n'y a pas de probl&#232;me : si l'un des points gris n'est pas sur la piste, il y a collision.&lt;/p&gt;
&lt;p&gt; Par contre pour un d&#233;calage de 5 pixels vers la droite, la voiture passe juste au milieu de deux pixels : ceux repr&#233;sent&#233;s en rouge. Il n'a pas de raison de privil&#233;gier a priori plus une solution que l'autre ! (alors que les routines de trac&#233; de lignes feront un choix ou l'autre selon la mani&#232;re dont elles sont programm&#233;es)&lt;/p&gt;
&lt;p&gt; Nous avons donc d&#233;cid&#233; d'utiliser une routine de test de collision souple, &#224; savoir de d&#233;clarer qu'il n'y a pas collision si l'un OU l'autre des deux pixels reste sur la piste.&lt;/p&gt;
&lt;p&gt; Bien entendu si les deux pixels (l'un ET l'autre) sont hors de la piste, il y a collision.&lt;/p&gt;
&lt;p&gt; Ainsi, quel que soit la routine de 'trac&#233;' que vous utiliserez, le d&#233;placement sera conforme, &#233;vitant toute ambigu&#239;t&#233;.&lt;/p&gt;
&lt;p&gt; Pour &#233;viter toute discussion concernant la routine de &lt;i&gt;test de collision&lt;/i&gt; un exemple de cet algorithme est donn&#233;, en langage Pascal (adaptation facile &#224; tout autre langage).&lt;/p&gt;
&lt;p&gt; Pour bien comprendre tout ce m&#233;canisme tr&#232;s simple (bien que difficile &#224; expliquer), vous trouverez ci-apr&#232;s quelques exemples illustrant les principes d'&#233;volution.&lt;/p&gt;
&lt;p&gt; Notez qu'il s'agit &#224; chaque fois de portions de circuits.&lt;/p&gt;
&lt;p&gt; Dans les exemples pr&#233;sent&#233;s, les positions pr&#233;c&#233;dentes de la voiture sont repr&#233;sent&#233;es en jaune&lt;/p&gt;
&lt;div class='spip_document_159 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='http://clx.asso.fr/spip/local/cache-vignettes/L500xH122/rep3-c08d5.jpg?1759571039' width='500' height='122' alt='' /&gt;
&lt;/figure&gt;
&lt;/div&gt; &lt;p&gt;Pas de probl&#232;me pour la voiture, elle contr&#244;le bien sa vitesse, ce qui lui permet d'aborder le virage en toute qui&#233;tude...&lt;/p&gt;
&lt;div class='spip_document_163 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='http://clx.asso.fr/spip/local/cache-vignettes/L500xH122/rep7-f7392.jpg?1759571039' width='500' height='122' alt='' /&gt;
&lt;/figure&gt;
&lt;/div&gt; &lt;p&gt;Sur cet exemple, la voiture va trop vite.. Bien que restant toujours sur la piste, la trajectoire d'un point &#224; l'autre coupe le bord, amenant la routine de test de collision &#224; constater un accident.&lt;/p&gt;
&lt;div class='spip_document_160 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='http://clx.asso.fr/spip/local/cache-vignettes/L500xH123/rep4-ef8fc.jpg?1759571039' width='500' height='123' alt='' /&gt;
&lt;/figure&gt;
&lt;/div&gt; &lt;p&gt;Sur cet exemple la voiture ne va pas trop vite.. Elle reste&lt;br class='autobr' /&gt; toujours sur la piste, et sur le point litigieux clignotant vert, la routine de test de collision, de par sa souplesse,&lt;br class='autobr' /&gt; accepte la trajectoire, consid&#233;rant que la voiture est pass&#233;e&lt;br class='autobr' /&gt; juste &#224; gauche.&lt;/p&gt;
&lt;div class='spip_document_165 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='http://clx.asso.fr/spip/local/cache-vignettes/L500xH124/rep9-56d67.jpg?1759571039' width='500' height='124' alt='' /&gt;
&lt;/figure&gt;
&lt;/div&gt; &lt;p&gt;Dans ce cas, le programme d&#233;clarera la position de la voiture comme illicite. En effet, le dernier d&#233;placement &#233;tait de trois pixels vers la droite et la voiture se 'permet' brusquement un&lt;br class='autobr' /&gt; d&#233;placement que de un pixel.. La position permise de la voiture est l'un des points voisins du point blanc clignotant, ce qui signifie que le crash est in&#233;vitable...&lt;/p&gt;
&lt;div class='spip_document_167 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='http://clx.asso.fr/spip/local/cache-vignettes/L500xH163/rep11-39c5d.jpg?1759571039' width='500' height='163' alt='' /&gt;
&lt;/figure&gt;
&lt;/div&gt; &lt;p&gt;La voiture va trop vite, mais heureusement une impasse lui permet de d&#233;c&#233;l&#233;rer.. Il ne lui reste plus qu'&#224; freiner &#224; fond (jusqu'&#224; un d&#233;placement nul en X) pour reprendre le bon chemin, dans&lt;br class='autobr' /&gt; l'autre sens.&lt;br class='autobr' /&gt;
&lt;a name=&#034;desc_cir&#034;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;R&#232;gles de description du circuit&lt;/h2&gt;
&lt;p&gt; Le fichier de description du circuit, d'extension CIR par convention, a pour but de d&#233;limiter la piste sur laquelle doit &#233;voluer la voiture par rapport au reste du dessin.&lt;/p&gt;
&lt;p&gt; Par convention, le circuit est compris dans un rectangle de longueur 150 et de hauteur 100 (limites ext&#233;rieures).&lt;/p&gt;
&lt;p&gt; Le fichier est donc simplement constitu&#233; d'un ensemble de 100 lignes de cha&#238;nes de caract&#232;res ASCII. Chaque cha&#238;ne de caract&#232;res est constitu&#233;e de 150 caract&#232;res utiles, plus les classiques &#034;carriage return&#034; et &#034;line feed&#034; &#233;ventuels qui s&#233;parent les lignes.&lt;/p&gt;
&lt;p&gt; On pourra donc relire ais&#233;ment ce fichier et mettre les donn&#233;es dans un tableau de caract&#232;res de type (par exemple)&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;. donnee: array[0..149,0..99] 0 1 2 3 146 147 148 149 +-------------- -----------------+ 0 &#166; &#166; &#166; &#166; &#166; &#166; &#166; &#166; &#166; +---+---+---+-- -+---+---+---+---&#166; 1 &#166; &#166; &#166; &#166; &#166; &#166; &#166; &#166; &#166; +---+---+---+-- -+---+---+---+---&#166; 99 &#166; &#166; &#166; &#166; &#166; &#166; &#166; &#166; &#166; +-------------- -----------------+ &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt; La premi&#232;re valeur du tableau, comprise entre 0 et 149, comporte les coordonn&#233;es en X (longueur) du dessin, avec la valeur 0 repr&#233;sent&#233;e classiquement &#224; gauche sur l'&#233;cran.&lt;/p&gt;
&lt;p&gt; La deuxi&#232;me valeur du tableau, comprise entre 0 et 99, comporte les coordonn&#233;es en Y (hauteur) du dessin, avec la valeur 0 repr&#233;sent&#233;e classiquement en haut sur l'&#233;cran et correspondant &#224; la premi&#232;re ligne du fichier CIR.&lt;/p&gt;
&lt;p&gt; Pour distinguer la piste du reste du circuit, une convention simple : un point de la piste est indiqu&#233; dans le fichier par le caract&#232;re ' ' (espace, code ASCII 32).&lt;/p&gt;
&lt;p&gt; Tout autre caract&#232;re ASCII doit &#234;tre consid&#233;r&#233; par le programme pilote comme ne faisant pas partie de la piste, donc inaccessible &#224; la voiture (rappel : une voiture hors piste provoque un accident qui l'&#233;limine).&lt;/p&gt;
&lt;p&gt; N&#233;anmoins, pour permettre une repr&#233;sentation plus avenante du circuit, j'ai d&#233;cid&#233; d'utiliser une convention faisant correspondre une couleur &#224; certains caract&#232;res ASCII.&lt;br class='autobr' /&gt;
Cette convention utilise les couleurs typiques de Windows, plut&#244;t que celles de la carte VGA, pour permettre une conversion facile &#224; partir d'un fichier &#034;BMP&#034; non compress&#233; &#224; 16 couleurs.&lt;/p&gt;
&lt;p&gt; Cette convention est la suivante :&lt;/p&gt;
&lt;table class=&#034;table spip&#034;&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;caract&#232;re&lt;/td&gt;
&lt;td&gt;couleur&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;Noir&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;B&lt;/td&gt;
&lt;td&gt;Rouge fonc&#233;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;C&lt;/td&gt;
&lt;td&gt;Vert fonc&#233;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;D&lt;/td&gt;
&lt;td&gt;Jaune fonc&#233;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;E&lt;/td&gt;
&lt;td&gt;Bleu fonc&#233;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;F&lt;/td&gt;
&lt;td&gt;Magenta fonc&#233;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;G&lt;/td&gt;
&lt;td&gt;Cyan fonc&#233;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;H&lt;/td&gt;
&lt;td&gt;Gris clair&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;J&lt;/td&gt;
&lt;td&gt;Rouge vif&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;K&lt;/td&gt;
&lt;td&gt;Vert vif&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;L&lt;/td&gt;
&lt;td&gt;Jaune vif&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;M&lt;/td&gt;
&lt;td&gt;Bleu vif&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;N&lt;/td&gt;
&lt;td&gt;Magenta vif&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;O&lt;/td&gt;
&lt;td&gt;Cyan vif&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;P&lt;/td&gt;
&lt;td&gt;Blanc&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; Il faut noter que la couleur gris fonc&#233; est attribu&#233;e par convention au caract&#232;re espace (la piste) et non pas &#224; la lettre 'I'.&lt;/p&gt;
&lt;p&gt; Tous les autres caract&#232;res ASCII sont dessin&#233;s, dans les outils fournis, avec la couleur 'Vert vif'.&lt;/p&gt;
&lt;p&gt; Rappelons cependant que ces codes de couleurs n'existent que pour faire joli, et qu'un circuit peut tr&#232;s bien &#234;tre d&#233;fini uniquement &#224; l'aide de 'X' et ' ' via un &#233;diteur de textes !&lt;/p&gt;
&lt;p&gt; Mais rassurez-vous, vous pouvez compl&#232;tement ignorer et oublier ces conventions de couleurs : un programme de dessin, CREECIR, est fourni ! Il est document&#233; plus loin, et va vous aider &#224; cr&#233;er votre circuit, ainsi que le colorier &#224; votre (bon) go&#251;t.&lt;/p&gt;
&lt;p&gt; Pour qu'un circuit soit consid&#233;r&#233; comme conforme, il faut qu'il v&#233;rifie les diff&#233;rentes r&#232;gles suivantes :&lt;/p&gt;
&lt;p&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; &lt;strong&gt;(1)&lt;/strong&gt; La surface totale occup&#233;e par le circuit (piste et d&#233;cors) doit &#234;tre de taille 150*100, &#224; savoir 100 lignes de 150 caract&#232;res (rappel)&lt;/p&gt;
&lt;p&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; &lt;strong&gt;(2)&lt;/strong&gt; La piste ne peut pas affleurer les bords du dessin. Plus pr&#233;cis&#233;ment, on ne pas mettre de caract&#232;re ' ' en ligne 0 ou 99, ou en colonne 0 et 149. Le but de cette r&#232;gle est de d&#233;limiter facilement le terrain sans avoir &#224; y rajouter un bord fictif (et ainsi faciliter les tests !).&lt;/p&gt;
&lt;p&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; &lt;strong&gt;(3)&lt;/strong&gt; Une zone de piste est impos&#233;e : c'est le rectangle d&#233;limit&#233; par les points x=20, y=2 et x=59, y=6. C'est au milieu de cette zone que se situe le point de d&#233;part (x=40, y=4).&lt;/p&gt;
&lt;p&gt; Apr&#232;s avoir boucl&#233; un tour complet, en partant vers la droite (sens x croissant), la ligne d'arriv&#233;e est une ligne verticale, de la largeur de la piste, et situ&#233;e en x=40.&lt;/p&gt;
&lt;p&gt; Le but de cette r&#232;gle est, bien entendu, de fixer pr&#233;cis&#233;ment les points de d&#233;part et la ligne d'arriv&#233;e, ainsi qu'une largeur et longueur de piste suffisante pour bien d&#233;marrer et passer la la ligne d'arriv&#233;e en acc&#233;l&#233;ration.&lt;/p&gt;
&lt;p&gt; Le sens de rotation est fix&#233; (globalement celui des aiguilles d'une montre), car la voiture doit se d&#233;placer au d&#233;part dans le sens des x croissant (droite). Elle coupera la ligne d'arriv&#233;e lorsqu'elle aura atteint ou d&#233;pass&#233; la coordonn&#233;e x=40, en venant bien entendu d'une position x plus faible (pas question de couper la ligne d'arriv&#233;e dans le mauvais sens !!!) :&lt;/p&gt;
&lt;div class='spip_document_164 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='http://clx.asso.fr/spip/local/cache-vignettes/L500xH86/rep8-d3b86.jpg?1759571039' width='500' height='86' alt='' /&gt;
&lt;/figure&gt;
&lt;/div&gt; &lt;p&gt;La vitesse de d&#233;part est nulle, ce qui signifie, en pratique, que le premier point apr&#232;s la position (40,4) est l'un des voisins du point de d&#233;part.&lt;/p&gt;
&lt;p&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; &lt;strong&gt;(4)&lt;/strong&gt; Un seul chemin doit mener du d&#233;part vers l'arriv&#233;e. Le circuit doit donc &#234;tre &#233;videmment boucl&#233; sur lui-m&#234;me, mais il ne peut pas comporter d'il&#244;ts au milieu de la piste. Par il&#244;t, j'entend un ou plusieurs caract&#232;res au beau milieu de la piste.&lt;/p&gt;
&lt;p&gt; Par exemple ce genre de configurationest interdit :&lt;/p&gt;
&lt;div class='spip_document_157 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='http://clx.asso.fr/spip/local/cache-vignettes/L500xH61/rep1-cea83.jpg?1759571039' width='500' height='61' alt='' /&gt;
&lt;/figure&gt;
&lt;/div&gt; &lt;p&gt;Attention, ceci ne vous interdit pas certains 'pi&#232;ges' amusants dans votre circuit. Par exemple la cr&#233;ation d'impasses, ayant pour but de tromper les voitures adverses est permise.&lt;/p&gt;
&lt;div class='spip_document_158 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='http://clx.asso.fr/spip/local/cache-vignettes/L500xH59/rep2-43126.jpg?1759571039' width='500' height='59' alt='' /&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; &lt;strong&gt;(5)&lt;/strong&gt; La largeur de la piste est au minimum de 2. Le but de ce concours est d'&#233;crire un pilote de Formule 1, et pas d'auto cross ! Cette r&#232;gle peut s'&#233;noncer plus pr&#233;cis&#233;ment comme suit :&lt;br class='autobr' /&gt; aucun point de la piste ne peut avoir pour &#034;voisin&#034; (i.e. une des 8 cases qui l'entoure) &#224; la fois un bord de piste int&#233;rieur et un bord de piste ext&#233;rieur. Il faut donc toujours au minimum deux caract&#232;res de piste (pixels) pour s&#233;parer les deux bords, y compris en diagonale.&lt;/p&gt;
&lt;p&gt; Dans tous les cas de figure, si vous avez un doute sur la conformit&#233; de votre piste au r&#232;glement, le programme CREECIR est l&#224; pour vous aider en effectuant toutes les v&#233;rifications sur votre fichier CIR, et en indiquant, si n&#233;cessaire, pour quelle(s) raison(s) un circuit donn&#233; n'est pas conforme.&lt;/p&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id=&#034;nb1&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh1&#034; class=&#034;spip_note&#034; title=&#034;Notes 1&#034; rev=&#034;appendix&#034;&gt;1&lt;/a&gt;] &lt;/span&gt;Ci-joint un exemple en Pascal de l'algorithme de test de collision.&lt;/p&gt;
&lt;p&gt; C'est une fonction &lt;i&gt;surPiste&lt;/i&gt;, qui retourne vraie (TRUE) si la voiture reste sur la piste et faux (FALSE) lorsqu'il y a une collision dans le d&#233;placement.&lt;/p&gt;
&lt;p&gt; On suppose au d&#233;part que le joueur a plac&#233; son circuit dans un tableau donnee[x,y] et que le test donnee[x,y]=piste consiste &#224; savoir si le point concern&#233; est sur la piste.&lt;/p&gt;
&lt;p&gt; Facile &#224; adapter si on utilise une autre structure de donn&#233;es.&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;function surPiste(x,y,xf,yf:integer):boolean; { Teste si une ligne joignant x,y &#224; xf,yf est sur le circuit. algorithme de Bresenham l&#233;g&#232;rement modifi&#233; pour les cas litigieux. retourne vrai (true) si on reste sur la piste, retourne faux (false) si on casse la voiture sur un bord. L. Rivi&#232;re } var dx,dy,total,xi,yi:integer; ok:boolean; begin surPiste:=false; { Commen&#231;ons par &#233;liminer les cas triviaux } if donnee[x,y]&lt;&gt;piste then exit; { Retourne FAUX si on est pas d&#233;j&#224; sur la piste! } if (x=xf) and (y=yf) then begin { Si on est sur la piste et que l'on bouge pas.. } surPiste:=true; exit; end; { Le cas g&#233;n&#233;ral.. } ok:=true; { On commence, comme dans la plupart des algo de trac&#233;, &#224; se mettre dans le premier quadrant, pour raisonner avec des d&#233;placement relatifs positifs } { D'abord en X.. dx toujours positif, xi prend le signe (&#177;1) } if (x&lt;xf) then begin xi:=1; dx:=xf-x; end else begin xi:=-1; dx:=x-xf; end; { Ensuite en Y.. dy toujours positif, yi prend le signe (&#177;1) } if (y&lt;yf) then begin yi:=1; dy:=yf-y; end else begin yi:=-1; dy:=y-yf; end; { on se d&#233;place toujours d'un pixel &#224; la fois selon la direction qui n&#233;cessite le plus de pixel. C'est pourquoi on fait les tests pour savoir quel d&#233;placement est le plus grand.. } if (dx&gt;dy) then begin { Comme le d&#233;placement en X est plus grand, on va y aller de x &#224; xf avec l'incr&#233;mentant d'un xi &#224; chaque fois. Le reste c'est quasi du Bresenham classique, &#224; savoir que l'on incr&#233;mente un compteur (ici total) d'une valeur &#233;gale &#224; deux fois le d&#233;placement y. } total:=0; repeat x:=x+xi; total:=total+2*dy; if (total=dx) then ok:=(donnee[x,y]=piste) else ok:=false; { Le cas litigieux signal&#233; pour le test de collision se rep&#232;re au fait que le compteur tombe pile sur la valeur de dx. Dans ce cas on met une valeur bool&#233;enne (ok) &#224; jour selon le fait que l'on soit sur la piste ou non, ceci avant la modification de Y. Si on est pas sur le cas litigieux, on met OK &#224; false (comme si on &#233;tait pas sur la piste), car par la suite on fera un OU logique... } if (total&gt;=dx) then begin y:=y+yi; total:=total-2*dx; end; { Comme tout Bresenham, lorsque l'on atteint ou d&#233;passe dx, on incr&#233;mente la valeur d'un cran } ok:=(ok or (donnee[x,y]=piste)); { Toute l'astuce du ok pr&#233;c&#233;dent. Si on &#233;tait dans un cas litigieux on fait un 'ou' entre avant et apr&#232;s la d&#233;cr&#233;mentation Y, donc on est sur la piste lorsque l'un ou l'autre des pixels l'est.. Sinon (cas non litigieux) on teste bien le seul pixel concern&#233; car on fait un 'ou' avec une valeur initialement false } until (x=xf) or not(ok); { On arr&#234;te quand on est plus sur la piste ou que l'on a atteint l'objectif x=xf } end else begin { Idem mais avec un d&#233;placement de base suivant Y } total:=0; repeat y:=y+yi; total:=total+2*dx; if (total=dy) then ok:=(donnee[x,y]=piste) else ok:=false; if (total&gt;=dy) then begin x:=x+xi; total:=total-2*dy; end; ok:=(ok or (donnee[x,y]=piste)); until(y=yf) or not(ok); end; surPiste:=ok; end;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
		&lt;div class='rss_ps'&gt;&lt;p&gt;Notez-bien qu'actuellement CLX n'a pas red&#233;velopp&#233; sous Linux, les outils initiaux, fournis par le Reporter et programm&#233;s par &lt;i&gt;Luc Rivi&#218;re&lt;/i&gt;. Par contre, si vous avez install&#233; &lt;a href=&#034;http://www.freedos.org/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;FreeDOS&lt;/a&gt; (un DOS sous GPL) sur votre machine ou &lt;a href=&#034;http://www.dosemu.org/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Dosemu&lt;/a&gt; (un &#233;mulateur DOS sous linux), vous pourrez les utiliser.&lt;/p&gt;
&lt;p&gt;Nous allons r&#233;&#233;crire des versions minimales de ces outils sous linux et les mettre sous licence GPL. Nous les publieront ici dans un avenir plus ou moins proche (&#224; moins que vous ne vous sentiez le courage de le faire vous-m&#234;me et d'en faire profiter la communaut&#233; enti&#218;re, bien s&#251;r).&lt;/p&gt;
&lt;p&gt;Notez &#233;galement que la participation au pr&#233;sent concours implique que votre pilote soit publi&#233; sur le site de CLX &#224; l'issue du concours sous la license libre de votre choix.&lt;/p&gt;
&lt;p&gt;Vous trouverez tous les num&#233;ros du Reporter sur le site de l'un des ancien &lt;a href=&#034;http://www.immos-tm.com/lereporter/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;R.O.R.&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
		</content:encoded>


		

	</item>


 
	


 
	

</channel>
</rss>
