{"id":465,"date":"2009-10-13T08:30:18","date_gmt":"2009-10-13T06:30:18","guid":{"rendered":"http:\/\/blogs.wittwer.fr\/whiler\/?p=465"},"modified":"2023-03-12T15:09:22","modified_gmt":"2023-03-12T14:09:22","slug":"delphi-puissance4","status":"publish","type":"post","link":"https:\/\/blogs.wittwer.fr\/whiler\/2009\/10\/13\/delphi-puissance4\/","title":{"rendered":"Delphi, console, souvenirs, \u2026"},"content":{"rendered":"<p>J&rsquo;ai eu envie de faire un peu de <a href=\"\/whiler\/2009\/06\/03\/mise-en-place-de-la-coloration-syntaxique\/\">coloration syntaxique<\/a> sur mon blog&#8230; dans un langage que je n&rsquo;avais pas encore test\u00e9 avec <a href=\"http:\/\/fr.wikipedia.org\/wiki\/GeSHi\" rel=\"glossary\" target=\"_blank\" title=\"Wikipedia, D&eacute;finition de&nbsp;: GeSHi\" style=\"\" >GeSHi<\/a><sup style=\"font-family: Georgia, Times New Roman, Serif; font-weight: bold; color: #AAAAAA\" ><em>W<\/em><\/sup>&#8230; <img src=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-includes\/images\/smilies\/skype\/\/dull.gif\" alt=\"|-(\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/>  alors, j&rsquo;ai ressorti un vieux dossier&nbsp;:<\/p>\n<ul>\n<li>il y a deux ans et demi, un d\u00e9fi avait eu lieu pour d\u00e9velopper un jeu de <a href=\"http:\/\/fr.wikipedia.org\/wiki\/Puissance_4\" rel=\"glossary\" target=\"_blank\" title=\"Wikipedia, D&eacute;finition de&nbsp;: Puissance 4\" style=\"\" >Puissance 4<\/a><sup style=\"font-family: Georgia, Times New Roman, Serif; font-weight: bold; color: #AAAAAA\" ><em>W<\/em><\/sup><\/li>\n<li>il fallait juste utiliser <a href=\"https:\/\/www.embarcadero.com\/fr\/products\/delphi\" target=\"_blank\" rel=\"noopener\">Delphi<\/a><\/li>\n<\/ul>\n<div style=\"width: 230px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/whiler.developpez.com\/defis\/borland\/codegear\/bds\/delphi\/puissance4\/\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" alt=\"Puissance 4\" src=\"https:\/\/www.whiler.com\/freewares\/imgs\/wp4c.jpg\" title=\"Visiter la page d\u00e9di\u00e9e\" width=\"220\" height=\"215\" \/><\/a><p class=\"wp-caption-text\">Interface du Puissance 4<\/p><\/div>\n<p>Voici le source que j&rsquo;avais pr\u00e9sent\u00e9 un peu trop tard&nbsp;:<br \/>\n<!--more--><\/p>\n<div class=\"codecolorer-container delphi dawn\" style=\"overflow:auto;white-space:nowrap;width:480px;height:300px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/>52<br \/>53<br \/>54<br \/>55<br \/>56<br \/>57<br \/>58<br \/>59<br \/>60<br \/>61<br \/>62<br \/>63<br \/>64<br \/>65<br \/>66<br \/>67<br \/>68<br \/>69<br \/>70<br \/>71<br \/>72<br \/>73<br \/>74<br \/>75<br \/>76<br \/>77<br \/>78<br \/>79<br \/>80<br \/>81<br \/>82<br \/>83<br \/>84<br \/>85<br \/>86<br \/>87<br \/>88<br \/>89<br \/>90<br \/>91<br \/>92<br \/>93<br \/>94<br \/>95<br \/>96<br \/>97<br \/>98<br \/>99<br \/>100<br \/>101<br \/>102<br \/>103<br \/>104<br \/>105<br \/>106<br \/>107<br \/>108<br \/>109<br \/>110<br \/>111<br \/>112<br \/>113<br \/>114<br \/>115<br \/>116<br \/>117<br \/>118<br \/>119<br \/>120<br \/>121<br \/>122<br \/>123<br \/>124<br \/>125<br \/>126<br \/>127<br \/>128<br \/>129<br \/>130<br \/>131<br \/>132<br \/>133<br \/>134<br \/>135<br \/>136<br \/>137<br \/>138<br \/>139<br \/>140<br \/>141<br \/>142<br \/>143<br \/>144<br \/>145<br \/>146<br \/>147<br \/>148<br \/>149<br \/>150<br \/>151<br \/>152<br \/>153<br \/>154<br \/>155<br \/>156<br \/>157<br \/>158<br \/>159<br \/>160<br \/>161<br \/>162<br \/>163<br \/>164<br \/>165<br \/>166<br \/>167<br \/>168<br \/>169<br \/>170<br \/>171<br \/>172<br \/>173<br \/>174<br \/>175<br \/>176<br \/>177<br \/>178<br \/>179<br \/>180<br \/>181<br \/>182<br \/>183<br \/>184<br \/>185<br \/>186<br \/>187<br \/>188<br \/>189<br \/>190<br \/>191<br \/>192<br \/>193<br \/>194<br \/>195<br \/>196<br \/>197<br \/>198<br \/>199<br \/>200<br \/>201<br \/>202<br \/>203<br \/>204<br \/>205<br \/>206<br \/>207<br \/>208<br \/>209<br \/>210<br \/>211<br \/>212<br \/>213<br \/>214<br \/>215<br \/>216<br \/>217<br \/>218<br \/>219<br \/>220<br \/>221<br \/>222<br \/>223<br \/>224<br \/>225<br \/>226<br \/>227<br \/>228<br \/>229<br \/>230<br \/>231<br \/>232<br \/>233<br \/>234<br \/>235<br \/>236<br \/>237<br \/>238<br \/>239<br \/>240<br \/>241<br \/>242<br \/>243<br \/>244<br \/>245<br \/>246<br \/>247<br \/>248<br \/>249<br \/>250<br \/>251<br \/>252<br \/>253<br \/>254<br \/>255<br \/>256<br \/>257<br \/>258<br \/>259<br \/>260<br \/>261<br \/>262<br \/>263<br \/>264<br \/>265<br \/>266<br \/>267<br \/>268<br \/>269<br \/>270<br \/>271<br \/>272<br \/>273<br \/>274<br \/>275<br \/>276<br \/>277<br \/>278<br \/>279<br \/>280<br \/>281<br \/>282<br \/>283<br \/>284<br \/>285<br \/>286<br \/>287<br \/>288<br \/><\/div><\/td><td><div class=\"delphi codecolorer\"><span class=\"kw1\">program<\/span> wp4c<span class=\"sy1\">;<\/span><br \/>\n<br \/>\n<span class=\"co2\">{$APPTYPE CONSOLE}<\/span><br \/>\n<br \/>\n<span class=\"kw1\">uses<\/span><br \/>\n&nbsp; Windows<span class=\"sy1\">,<\/span><br \/>\n&nbsp; SysUtils<span class=\"sy1\">;<\/span><br \/>\n<br \/>\n<span class=\"co2\">{$R wp4c.res}<\/span><br \/>\n<br \/>\n<br \/>\n<span class=\"kw1\">type<\/span><br \/>\n&nbsp; TAuthorizedChars <span class=\"sy3\">=<\/span> <span class=\"kw1\">set<\/span> <span class=\"kw1\">of<\/span> <span class=\"kw4\">Char<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">const<\/span><br \/>\n&nbsp; BG &nbsp; &nbsp;<span class=\"sy3\">=<\/span> <span class=\"nu0\">1<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; FG &nbsp; &nbsp;<span class=\"sy3\">=<\/span> <span class=\"nu0\">15<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; J1 &nbsp; &nbsp;<span class=\"sy3\">=<\/span> <span class=\"nu0\">12<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; J2 &nbsp; &nbsp;<span class=\"sy3\">=<\/span> <span class=\"nu0\">14<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; COL &nbsp; <span class=\"sy3\">=<\/span> <span class=\"nu0\">10<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; WINJ1 <span class=\"sy3\">=<\/span> <span class=\"nu0\">3<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; WINJ2 <span class=\"sy3\">=<\/span> <span class=\"nu0\">4<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; DRAW &nbsp;<span class=\"sy3\">=<\/span> <span class=\"nu0\">5<\/span><span class=\"sy1\">;<\/span> <br \/>\n<br \/>\n<span class=\"kw1\">var<\/span><br \/>\n&nbsp; hci &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy1\">:<\/span> <span class=\"kw4\">THandle<\/span><span class=\"sy1\">;<\/span> &nbsp; <span class=\"co1\">\/\/ handle de l'input clavier<\/span><br \/>\n&nbsp; nextPlayer <span class=\"sy1\">:<\/span> <span class=\"kw4\">Smallint<\/span><span class=\"sy1\">;<\/span> &nbsp;<span class=\"co1\">\/\/ Joueur qui va jouer ou 0 en fin de partie<\/span><br \/>\n&nbsp; key &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy1\">:<\/span> <span class=\"kw4\">char<\/span><span class=\"sy1\">;<\/span> &nbsp; &nbsp; &nbsp;<span class=\"co1\">\/\/ Touche frapp\u00e9e en cours de jeu<\/span><br \/>\n&nbsp; lastRows &nbsp; <span class=\"sy1\">:<\/span> <span class=\"kw4\">string<\/span><span class=\"sy1\">;<\/span> &nbsp; &nbsp;<span class=\"co1\">\/\/ Hauteur de jetons par colonne<\/span><br \/>\n&nbsp; lastRow &nbsp; &nbsp;<span class=\"sy1\">:<\/span> <span class=\"kw4\">Smallint<\/span><span class=\"sy1\">;<\/span> &nbsp;<span class=\"co1\">\/\/ Derni\u00e8re ligne jou\u00e9e<\/span><br \/>\n&nbsp; lastCol &nbsp; &nbsp;<span class=\"sy1\">:<\/span> <span class=\"kw4\">Smallint<\/span><span class=\"sy1\">;<\/span> &nbsp;<span class=\"co1\">\/\/ Derni\u00e8re colonne jou\u00e9e<\/span><br \/>\n&nbsp; grid &nbsp; &nbsp; &nbsp; <span class=\"sy1\">:<\/span> <span class=\"kw1\">array<\/span><span class=\"br0\">&#91;<\/span><span class=\"nu0\">1<\/span><span class=\"sy1\">..<\/span><span class=\"nu0\">7<\/span><span class=\"br0\">&#93;<\/span> <span class=\"kw1\">of<\/span> <span class=\"kw1\">array<\/span><span class=\"br0\">&#91;<\/span><span class=\"nu0\">1<\/span><span class=\"sy1\">..<\/span><span class=\"nu0\">6<\/span><span class=\"br0\">&#93;<\/span> <span class=\"kw1\">of<\/span> <span class=\"kw4\">Smallint<\/span><span class=\"sy1\">;<\/span> <span class=\"co1\">\/\/ Matrice du jeu (0=vide;1|2=J1|J2)<\/span><br \/>\n<br \/>\n<span class=\"kw1\">procedure<\/span> SetColor<span class=\"br0\">&#40;<\/span>fg<span class=\"sy1\">:<\/span> <span class=\"kw4\">byte<\/span><span class=\"sy1\">;<\/span> bg<span class=\"sy1\">:<\/span> <span class=\"kw4\">byte<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">begin<\/span><br \/>\n&nbsp; SetConsoleTextAttribute<span class=\"br0\">&#40;<\/span>GetStdHandle<span class=\"br0\">&#40;<\/span>STD_OUTPUT_HANDLE<span class=\"br0\">&#41;<\/span><span class=\"sy1\">,<\/span>fg <span class=\"sy3\">+<\/span> <span class=\"br0\">&#40;<\/span>bg <span class=\"sy3\">*<\/span> <span class=\"nu0\">16<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">procedure<\/span> ClrScr<span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">var<\/span><br \/>\n&nbsp; position <span class=\"sy1\">:<\/span> TCoord<span class=\"sy1\">;<\/span><br \/>\n&nbsp; h &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy1\">:<\/span> HWND<span class=\"sy1\">;<\/span><br \/>\n&nbsp; sbi &nbsp; &nbsp; &nbsp;<span class=\"sy1\">:<\/span> TConsoleScreenBufferInfo<span class=\"sy1\">;<\/span><br \/>\n&nbsp; len<span class=\"sy1\">:<\/span> <span class=\"kw4\">LongWord<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; nbr_ecrits<span class=\"sy1\">:<\/span> <span class=\"kw4\">LongWord<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">begin<\/span><br \/>\n&nbsp; position<span class=\"sy1\">.<\/span><span class=\"me1\">X<\/span> <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; position<span class=\"sy1\">.<\/span><span class=\"me1\">Y<\/span> <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n&nbsp; h <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> GetStdHandle<span class=\"br0\">&#40;<\/span>STD_OUTPUT_HANDLE<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; GetConsoleScreenBufferInfo<span class=\"br0\">&#40;<\/span>h<span class=\"sy1\">,<\/span> sbi<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; len <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> sbi<span class=\"sy1\">.<\/span><span class=\"me1\">dwSize<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">x<\/span> <span class=\"sy3\">*<\/span> sbi<span class=\"sy1\">.<\/span><span class=\"me1\">dwSize<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">y<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; FillConsoleOutputCharacter<span class=\"br0\">&#40;<\/span>h<span class=\"sy1\">,<\/span> <span class=\"re1\">#32<\/span><span class=\"sy1\">,<\/span> len<span class=\"sy1\">,<\/span> position<span class=\"sy1\">,<\/span> nbr_ecrits<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; FillConsoleOutputAttribute<span class=\"br0\">&#40;<\/span>h<span class=\"sy1\">,<\/span> sbi<span class=\"sy1\">.<\/span><span class=\"me1\">wAttributes<\/span><span class=\"sy1\">,<\/span> len<span class=\"sy1\">,<\/span> &nbsp;position<span class=\"sy1\">,<\/span> nbr_ecrits<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; SetConsoleCursorPosition<span class=\"br0\">&#40;<\/span>h<span class=\"sy1\">,<\/span> position<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"co2\">{$ENDREGION}<\/span><br \/>\n<br \/>\n<span class=\"kw1\">function<\/span> GetKey<span class=\"br0\">&#40;<\/span>authorized<span class=\"sy1\">:<\/span> TAuthorizedChars<span class=\"br0\">&#41;<\/span><span class=\"sy1\">:<\/span> <span class=\"kw4\">char<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">var<\/span><br \/>\n&nbsp; noer &nbsp; <span class=\"sy1\">:<\/span> <span class=\"kw4\">DWord<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; buffer <span class=\"sy1\">:<\/span> TInputRecord<span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">begin<\/span><br \/>\n&nbsp; FlushConsoleInputBuffer<span class=\"br0\">&#40;<\/span>hci<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">repeat<\/span><br \/>\n&nbsp; &nbsp; noer <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; ReadConsoleInput<span class=\"br0\">&#40;<\/span>hci<span class=\"sy1\">,<\/span> buffer<span class=\"sy1\">,<\/span> <span class=\"nu0\">1<\/span><span class=\"sy1\">,<\/span> noer<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">until<\/span> <span class=\"br0\">&#40;<\/span>buffer<span class=\"sy1\">.<\/span><span class=\"me1\">EventType<\/span> <span class=\"sy3\">=<\/span> KEY_EVENT<span class=\"br0\">&#41;<\/span> <span class=\"kw1\">and<\/span> <span class=\"br0\">&#40;<\/span>buffer<span class=\"sy1\">.<\/span><span class=\"me1\">Event<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">KeyEvent<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">AsciiChar<\/span> <span class=\"kw1\">in<\/span> authorized<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n&nbsp; <span class=\"kw3\">WriteLn<\/span><span class=\"br0\">&#40;<\/span>buffer<span class=\"sy1\">.<\/span><span class=\"me1\">Event<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">KeyEvent<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">AsciiChar<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw3\">Sleep<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">250<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n&nbsp; Result <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> buffer<span class=\"sy1\">.<\/span><span class=\"me1\">Event<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">KeyEvent<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">AsciiChar<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">procedure<\/span> PrintGrid<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">var<\/span><br \/>\n&nbsp; x<span class=\"sy1\">,<\/span> y <span class=\"sy1\">:<\/span> <span class=\"kw4\">Smallint<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">begin<\/span><br \/>\n&nbsp; ClrScr<span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">for<\/span> y <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"nu0\">6<\/span> <span class=\"kw1\">downto<\/span> <span class=\"nu0\">1<\/span> <span class=\"kw1\">do<\/span><br \/>\n&nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">for<\/span> x <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"nu0\">1<\/span> <span class=\"kw1\">to<\/span> <span class=\"nu0\">7<\/span> <span class=\"kw1\">do<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; SetColor<span class=\"br0\">&#40;<\/span>FG<span class=\"sy1\">,<\/span> BG<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">Write<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'|'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">case<\/span> grid<span class=\"br0\">&#91;<\/span>x<span class=\"sy1\">,<\/span>y<span class=\"br0\">&#93;<\/span> <span class=\"kw1\">of<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">1<\/span><span class=\"sy1\">:<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SetColor<span class=\"br0\">&#40;<\/span>J1<span class=\"sy1\">,<\/span> BG<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">2<\/span><span class=\"sy1\">:<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SetColor<span class=\"br0\">&#40;<\/span>J2<span class=\"sy1\">,<\/span> BG<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">else<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SetColor<span class=\"br0\">&#40;<\/span>BG<span class=\"sy1\">,<\/span> BG<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">Write<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'o'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; SetColor<span class=\"br0\">&#40;<\/span>FG<span class=\"sy1\">,<\/span> BG<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw3\">Writeln<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'|'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">for<\/span> x <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"nu0\">1<\/span> <span class=\"kw1\">to<\/span> <span class=\"nu0\">7<\/span> <span class=\"kw1\">do<\/span><br \/>\n&nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>x <span class=\"sy3\">=<\/span> lastCol<span class=\"br0\">&#41;<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; SetColor<span class=\"br0\">&#40;<\/span>COL<span class=\"sy1\">,<\/span> BG<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">end<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">else<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; SetColor<span class=\"br0\">&#40;<\/span>FG<span class=\"sy1\">,<\/span> BG<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">Write<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">' '<\/span> <span class=\"sy3\">+<\/span> <span class=\"kw3\">IntToStr<\/span><span class=\"br0\">&#40;<\/span>x<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw3\">Writeln<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">''<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">procedure<\/span> InitGame<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">var<\/span><br \/>\n&nbsp; x<span class=\"sy1\">,<\/span> y <span class=\"sy1\">:<\/span> <span class=\"kw4\">Smallint<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">begin<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ Affichage<\/span><br \/>\n&nbsp; SetColor<span class=\"br0\">&#40;<\/span>FG<span class=\"sy1\">,<\/span> BG<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; ClrScr<span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw3\">Writeln<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'Qui commence ? (1|2) '<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ Donn\u00e9es<\/span><br \/>\n&nbsp; nextPlayer <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw3\">StrToInt<\/span><span class=\"br0\">&#40;<\/span>GetKey<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#91;<\/span><span class=\"st0\">'1'<\/span><span class=\"sy1\">,<\/span> <span class=\"st0\">'2'<\/span><span class=\"br0\">&#93;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">for<\/span> y <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"nu0\">1<\/span> <span class=\"kw1\">to<\/span> <span class=\"nu0\">6<\/span> <span class=\"kw1\">do<\/span><br \/>\n&nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">for<\/span> x <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"nu0\">1<\/span> <span class=\"kw1\">to<\/span> <span class=\"nu0\">7<\/span> <span class=\"kw1\">do<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; grid<span class=\"br0\">&#91;<\/span>x<span class=\"sy1\">,<\/span>y<span class=\"br0\">&#93;<\/span> <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; lastRows <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"st0\">'0000000'<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; lastCol &nbsp;<span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; PrintGrid<span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n<br \/>\n<span class=\"kw1\">function<\/span> HasWin<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">:<\/span><span class=\"kw4\">Boolean<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">function<\/span> HowMany<span class=\"br0\">&#40;<\/span>dX<span class=\"sy1\">,<\/span> dY<span class=\"sy1\">:<\/span> <span class=\"kw4\">Smallint<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">:<\/span> <span class=\"kw4\">Smallint<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">var<\/span><br \/>\n&nbsp; &nbsp; x<span class=\"sy1\">,<\/span> y <span class=\"sy1\">:<\/span> <span class=\"kw4\">Smallint<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; Result <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; x <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> lastCol <span class=\"sy3\">+<\/span> dX<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; y <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> lastRow <span class=\"sy3\">+<\/span> dY<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">while<\/span> <span class=\"br0\">&#40;<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span>&lt;<span class=\"sy3\">=<\/span>x<span class=\"br0\">&#41;<\/span> <span class=\"kw1\">AND<\/span> <span class=\"br0\">&#40;<\/span>x&lt;<span class=\"sy3\">=<\/span><span class=\"nu0\">7<\/span><span class=\"br0\">&#41;<\/span> <span class=\"kw1\">AND<\/span> <span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span>&lt;<span class=\"sy3\">=<\/span>y<span class=\"br0\">&#41;<\/span> <span class=\"kw1\">AND<\/span> <span class=\"br0\">&#40;<\/span>y&lt;<span class=\"sy3\">=<\/span><span class=\"nu0\">6<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"kw1\">do<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>grid<span class=\"br0\">&#91;<\/span>x<span class=\"sy1\">,<\/span> y<span class=\"br0\">&#93;<\/span> <span class=\"sy3\">=<\/span> nextPlayer<span class=\"br0\">&#41;<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw3\">Inc<\/span><span class=\"br0\">&#40;<\/span>Result<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; x <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> x <span class=\"sy3\">+<\/span> dX<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; y <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> y <span class=\"sy3\">+<\/span> dY<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">else<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Exit<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">begin<\/span><br \/>\n<br \/>\n&nbsp; <span class=\"co1\">\/\/ Vertical<\/span><br \/>\n&nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>HowMany<span class=\"br0\">&#40;<\/span><span class=\"nu0\">0<\/span><span class=\"sy1\">,<\/span> <span class=\"sy3\">-<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span> &gt;<span class=\"sy3\">=<\/span> <span class=\"nu0\">3<\/span><span class=\"br0\">&#41;<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; Result <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw2\">True<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ Horizontal<\/span><br \/>\n&nbsp; <span class=\"kw1\">else<\/span> <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"br0\">&#40;<\/span>HowMany<span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"sy1\">,<\/span> <span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy3\">+<\/span>HowMany<span class=\"br0\">&#40;<\/span><span class=\"sy3\">-<\/span><span class=\"nu0\">1<\/span><span class=\"sy1\">,<\/span> <span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> &gt;<span class=\"sy3\">=<\/span> <span class=\"nu0\">3<\/span><span class=\"br0\">&#41;<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; Result <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw2\">True<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ SO - NE<\/span><br \/>\n&nbsp; <span class=\"kw1\">else<\/span> <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"br0\">&#40;<\/span>HowMany<span class=\"br0\">&#40;<\/span><span class=\"sy3\">-<\/span><span class=\"nu0\">1<\/span><span class=\"sy1\">,<\/span> <span class=\"sy3\">-<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy3\">+<\/span>HowMany<span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"sy1\">,<\/span> <span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> &gt;<span class=\"sy3\">=<\/span> <span class=\"nu0\">3<\/span><span class=\"br0\">&#41;<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; Result <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw2\">True<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ NO - SE<\/span><br \/>\n&nbsp; <span class=\"kw1\">else<\/span> <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"br0\">&#40;<\/span>HowMany<span class=\"br0\">&#40;<\/span><span class=\"sy3\">-<\/span><span class=\"nu0\">1<\/span><span class=\"sy1\">,<\/span> <span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy3\">+<\/span>HowMany<span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"sy1\">,<\/span> <span class=\"sy3\">-<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> &gt;<span class=\"sy3\">=<\/span> <span class=\"nu0\">3<\/span><span class=\"br0\">&#41;<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; Result <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw2\">True<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ Pas gagnant !<\/span><br \/>\n&nbsp; <span class=\"kw1\">else<\/span><br \/>\n&nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; Result <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw2\">False<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n<span class=\"co1\">\/\/-----------------------------------------------------------------------<\/span><br \/>\n<span class=\"kw1\">begin<\/span><br \/>\n&nbsp; <span class=\"co1\">\/\/ R\u00e9cup\u00e9ration du handle du clavier<\/span><br \/>\n&nbsp; hci <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> GetStdHandle<span class=\"br0\">&#40;<\/span>STD_INPUT_HANDLE<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">repeat<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ Nouvelle grille<\/span><br \/>\n&nbsp; &nbsp; InitGame<span class=\"sy1\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ D\u00e9but concr\u00eat de la partie<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">while<\/span> <span class=\"br0\">&#40;<\/span><span class=\"br0\">&#40;<\/span>nextPlayer <span class=\"sy3\">=<\/span> <span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span> <span class=\"kw1\">or<\/span> <span class=\"br0\">&#40;<\/span>nextPlayer <span class=\"sy3\">=<\/span> <span class=\"nu0\">2<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"kw1\">do<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">case<\/span> nextPlayer <span class=\"kw1\">of<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">1<\/span><span class=\"sy1\">:<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SetColor<span class=\"br0\">&#40;<\/span>J1<span class=\"sy1\">,<\/span> BG<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">Write<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'Joueur 1 ? (1-7|0) '<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">2<\/span><span class=\"sy1\">:<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SetColor<span class=\"br0\">&#40;<\/span>J2<span class=\"sy1\">,<\/span> BG<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">Write<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'Joueur 2 ? (1-7|0) '<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; key <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> GetKey<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#91;<\/span><span class=\"st0\">'0'<\/span><span class=\"sy1\">,<\/span><span class=\"st0\">'1'<\/span><span class=\"sy1\">,<\/span><span class=\"st0\">'2'<\/span><span class=\"sy1\">,<\/span><span class=\"st0\">'3'<\/span><span class=\"sy1\">,<\/span><span class=\"st0\">'4'<\/span><span class=\"sy1\">,<\/span><span class=\"st0\">'5'<\/span><span class=\"sy1\">,<\/span><span class=\"st0\">'6'<\/span><span class=\"sy1\">,<\/span><span class=\"st0\">'7'<\/span><span class=\"br0\">&#93;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">case<\/span> key <span class=\"kw1\">of<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st0\">'0'<\/span><span class=\"sy1\">:<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; nextPlayer <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">else<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lastCol <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw3\">StrToInt<\/span><span class=\"br0\">&#40;<\/span>key<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lastRow <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw3\">StrToIntDef<\/span><span class=\"br0\">&#40;<\/span>lastRows<span class=\"br0\">&#91;<\/span>lastCol<span class=\"br0\">&#93;<\/span><span class=\"sy1\">,<\/span> <span class=\"nu0\">6<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy3\">+<\/span> <span class=\"nu0\">1<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ Colonne pleine ?<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>lastRow&lt;&gt;<span class=\"nu0\">7<\/span><span class=\"br0\">&#41;<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ Ajouter dernier jeton \/ colonne<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lastRows<span class=\"br0\">&#91;<\/span>lastCol<span class=\"br0\">&#93;<\/span> <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"kw3\">IntToStr<\/span><span class=\"br0\">&#40;<\/span>lastRow<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#91;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ Ajouter jeton<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; grid<span class=\"br0\">&#91;<\/span>lastCol<span class=\"sy1\">,<\/span> lastRow<span class=\"br0\">&#93;<\/span> <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> nextPlayer<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Beep<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ V\u00e9rifie si le joueur gagn\u00e9<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> HasWin <span class=\"kw1\">then<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; nextPlayer <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> nextPlayer <span class=\"sy3\">+<\/span> <span class=\"nu0\">2<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">else<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ On v\u00e9rifie si le jeu est rempli<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> lastRows <span class=\"sy3\">=<\/span> <span class=\"st0\">'6666666'<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; nextPlayer <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> DRAW<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">else<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ Changer de joueur<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\">\/\/ 2-&gt;1 &nbsp;1-&gt;2<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw3\">Dec<\/span><span class=\"br0\">&#40;<\/span>nextPlayer<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; nextPlayer <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"nu0\">1<\/span> <span class=\"sy3\">-<\/span> nextPlayer<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw3\">Inc<\/span><span class=\"br0\">&#40;<\/span>nextPlayer<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PrintGrid<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw3\">Writeln<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">''<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ Si un joueur a gagn\u00e9<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">case<\/span> nextPlayer <span class=\"kw1\">of<\/span><br \/>\n&nbsp; &nbsp; &nbsp; WINJ1<span class=\"sy1\">:<\/span> <span class=\"co1\">\/\/ J1 gagne<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; SetColor<span class=\"br0\">&#40;<\/span>J1<span class=\"sy1\">,<\/span> BG<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw3\">Writeln<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'Le joueur 1 gagne !'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; WINJ2<span class=\"sy1\">:<\/span> <span class=\"co1\">\/\/ J2 gagne<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; SetColor<span class=\"br0\">&#40;<\/span>J2<span class=\"sy1\">,<\/span> BG<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw3\">Writeln<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'Le joueur 2 gagne !'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; DRAW<span class=\"sy1\">:<\/span> <span class=\"co1\">\/\/ Match nul<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; SetColor<span class=\"br0\">&#40;<\/span>FG<span class=\"sy1\">,<\/span> BG<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw3\">Writeln<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'Match nul !'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/ Rejouer ?<\/span><br \/>\n&nbsp; &nbsp; SetColor<span class=\"br0\">&#40;<\/span>FG<span class=\"sy1\">,<\/span> BG<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw3\">Writeln<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'Rejouer ? (O|N) '<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">until<\/span> <span class=\"br0\">&#40;<\/span><span class=\"kw3\">LowerCase<\/span><span class=\"br0\">&#40;<\/span>GetKey<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#91;<\/span><span class=\"st0\">'o'<\/span><span class=\"sy1\">,<\/span><span class=\"st0\">'O'<\/span><span class=\"sy1\">,<\/span><span class=\"st0\">'n'<\/span><span class=\"sy1\">,<\/span><span class=\"st0\">'N'<\/span><span class=\"br0\">&#93;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy3\">=<\/span> <span class=\"st0\">'n'<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">.<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<ul>\n<li>L&rsquo;application compil\u00e9e peut-\u00eatre t\u00e9l\u00e9charg\u00e9e sur cette page&nbsp;:<br \/>\n<a href=\"https:\/\/www.whiler.com\/freewares\/\" target=\"_blank\" rel=\"noopener\">https:\/\/www.whiler.com\/freewares\/<\/a><\/li>\n<li>Les sources et les explications sont sur celle-ci&nbsp;:<br \/>\n<a href=\"https:\/\/whiler.developpez.com\/defis\/borland\/codegear\/bds\/delphi\/puissance4\/\" target=\"_blank\" rel=\"noopener\">https:\/\/whiler.developpez.com\/defis\/borland\/codegear\/bds\/delphi\/puissance4\/<\/a><\/li>\n<li>Les r\u00e9sultats du d\u00e9fi&nbsp;:<br \/>\n<a href=\"https:\/\/delphi.developpez.com\/defi\/puissance4\/#LIV\" target=\"_blank\" rel=\"noopener\">https:\/\/delphi.developpez.com\/defi\/puissance4\/<\/a><\/li>\n<\/ul>\n<div class=\"thanks_button_div\" \n                  style=\"float: right; margin-right: 10px; margin-top:10px;\"><div id=\"thanksButtonDiv_465_1\" style=\"background-image:url(https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/plugins\/thanks-you-counter-button\/images\/thanks_compact_brown1.png); background-repeat:no-repeat; float: left; display: inline;\"\n                onmouseover=\"javascript:thankYouChangeButtonImage('thanksButtonDiv_465_1', true);\" \n                onmouseout=\"javascript:thankYouChangeButtonImage('thanksButtonDiv_465_1', false);\"\n                onclick=\"javascript:thankYouChangeButtonImage('thanksButtonDiv_465_1', false);\" >\n                <input type=\"button\" onclick=\"thankYouButtonClick(465, 'You left &ldquo;Thanks&rdquo; already for this post')\" value=\"Merci\u00a0 0\"\n                  class=\"thanks_button thanks_compact thanks_brown1\"\n                  style=\"  font-family: Verdana, Arial, Sans-Serif; font-size: 14px; font-weight: normal;; color:#00f;\"\n                  id=\"thanksButton_465_1\" title=\"Click to leave &ldquo;Thanks&rdquo; for this post\"\/>\n             <\/div><div id=\"ajax_loader_465_1\" style=\"display:inline;visibility: hidden;\"><img decoding=\"async\" alt=\"ajax loader\" src=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/plugins\/thanks-you-counter-button\/images\/ajax-loader.gif\" \/><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Code source en Delphi pour jouer au Puissance 4.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_links_to":"","_links_to_target":""},"categories":[7,6],"tags":[27,93,30,108],"class_list":["post-465","post","type-post","status-publish","format-standard","hentry","category-delphi","category-dev","tag-coloration-syntaxique","tag-freeware","tag-geshi","tag-script"],"_links":{"self":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts\/465","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/comments?post=465"}],"version-history":[{"count":1,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts\/465\/revisions"}],"predecessor-version":[{"id":6411,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts\/465\/revisions\/6411"}],"wp:attachment":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/media?parent=465"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/categories?post=465"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/tags?post=465"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}