Section courante

A propos

Section administrative du site

 Langage  Elément  Tutoriel  Programmation  Emulateur  Annexe  Aide 
ABAP/4
Ada
Assembleur
Assembly & bytecode
ASP (Active Server Pages)
Basic
C
C++
C# (C Sharp)
Cobol
ColdFusion
Fortran
HTML
Java
JavaScript
LISP
Logo
LotusScript
Oberon
Pascal
Perl
PHP
PL/1
Prolog
Python
Rebol
REXX
Ruby
SAS
NoSQL
SQL
Swift
X++ (Axapta)
GNAT
SMALLAda
VHDL
Assembleur 370
Assembleur 1802
Assembleur 4004
Assembleur 6502
Assembleur 6800
Assembleur 68000
Assembleur 8080 et 8085
Assembleur 8089
Assembleur 80x86
Assembleur AGC4
Assembleur ARM
Assembleur DPS 8000
Assembleur i860
Assembleur Itanium
Assembleur MIPS
Assembleur PDP-11
Assembleur PowerPC
Assembleur RISC-V
Assembleur SPARC
Assembleur SuperH
Assembleur UNIVAC I
Assembleur VAX
Assembleur Z80
Assembleur Z8000
Assembleur z/Architecture
ASSEMBLER/MONITOR 64
Micol Assembler
GFA Assembler
A86
MASM (Macro Assembler)
TASM (Turbo Assembler)
CIL
Jasmin
LLVM
MSIL
Parrot
P-Code (PCode)
SWEET16
G-Pascal
ASP 1.0
ASP 2.0
ASP 3.0
ASP.NET
ASP.NET Core
ABasiC (Amiga)
Adam SmartBASIC
Altair BASIC
AmigaBASIC (Amiga)
AMOS Basic (Amiga)
Atari Basic (Atari 400, 600 XL, 800, 800XL)
Basic Apple II (Integer BASIC/APPLESOFT)
Basic Commodore 64 (CBM-BASIC)
Basic Commodore 128 (BASIC 7.0)
Basic Commodore VIC-20 (CBM-BASIC 2.0)
Basic Coco 1 (Color Basic)
Basic Coco 2 (Extended Color Basic)
Basic Coco 3 (Extended Color Basic 2.0)
BASICA (PC DOS)
Basic Pro
BBC BASIC
Blitz BASIC (Amiga)
DarkBASIC
Dartmouth BASIC
GFA-Basic (Atari ST/Amiga)
GWBASIC (MS-DOS)
Liberty BASIC
Locomotive BASIC (Amstrad CPC)
MSX-Basic
Omikron Basic (Atari ST)
Oric Extended Basic
Power Basic
Quick Basic/QBasic (MS-DOS)
Sinclair BASIC (ZX80, ZX81, ZX Spectrum)
ST BASIC (Atari ST)
Turbo Basic
Vintage BASIC
VBScript
Visual Basic (VB)
Visual Basic .NET (VB .NET)
Visual Basic pour DOS
Yabasic
BeckerBASIC
SIMONS' BASIC
Basic09 d'OS-9
Disk Extended Color Basic
Basic09 d'OS-9
Disk Extended Color Basic
Access
Excel
Visual Basic pour Windows
Visual Basic .NET pour Windows
C Shell Unix (csh)
C pour Amiga
C pour Atari ST
C pour DOS
C pour Falcon030
C pour GEMDOS (Atari ST)
C pour Linux
C pour PowerTV OS
C pour OS/2
C pour Unix
C pour Windows
Aztec C
CoCo-C
GNU C
HiSoft C
IBM C/2
Introl-C
Lattice C
Microsoft C
MinGW C
MSX-C
Open Watcom C
OS-9 C Compiler
Pure C
Quick C
Turbo C
HiSoft C for Atari ST
HiSoft C for CP/M (Amstrad CPC)
C++ pour OS/2
C++ pour Windows
Borland C++
C++Builder
IBM VisualAge C++
Intel C++
MinGW C++
Open Watcom C++
Symantec C++
Turbo C++
Visual C++
Visual C++ .NET
Watcom C++
Zortech C++
C# (C Sharp) pour Windows
Apple III Cobol
Microsoft Cobol
BlueDragon
Lucee
OpenBD
Railo
Smith Project
Microsoft Fortran
WATFOR-77
CSS
FBML
Open Graph
SVG
XML
XSL/XSLT
LESS
SASS
GCJ (GNU)
JSP
Jython
Visual J++
Node.js
TypeScript
AutoLISP
ACSLogo
LotusScript pour Windows
Amiga Oberon
Oberon .NET
Apple Pascal
Delphi/Kylix/Lazarus
Free Pascal
GNU Pascal
HighSpeed Pascal
IBM Personal Computer Pascal
Lisa Pascal
Maxon Pascal
MPW Pascal
OS-9 Pascal
OSS Personal Pascal
Pascal-86
Pascal du Cray Research
Pascal/VS
Pascal-XT
PURE Pascal
QuickPascal
RemObjets Chrome
Sun Pascal
THINK Pascal
Tiny Pascal (TRS-80)
Turbo Pascal
UCSD Pascal
VAX Pascal
Virtual Pascal
Turbo Pascal for CP/M-80
Turbo Pascal for DOS
Turbo Pascal for Macintosh
Turbo Pascal for Windows
CodeIgniter (Cadre d'application)
Drupal (Projet)
Joomla! (Projet)
Phalanger (PHP .NET)
phpBB (Projet)
Smarty (balise)
Twig (balise)
Symfony (Cadre d'application)
WordPress (Projet)
Zend (Cadre d'application)
PL360
PL/M-80
PL/M-86
Turbo Prolog
CPython
IronPython
Jython
PyPy
AREXX
Regina REXX
JMP
Btrieve
Cassandra
Clipper
CouchDB
dBASE
Hbase
Hypertable
MongoDB
Redis
Access
BigQuery
DB2
H2
Interbase
MySQL
Oracle
PostgreSQL
SAP HANA
SQL Server
Sybase
U-SQL
Introduction
Les remarques
Les opérateurs
Les instructions conditionnelles
Les instrucions de boucles
Référence de commandes et fonctions
Les premiers pas
Introduction à la programmation
Traitement des chiffres
Programmes - analyse, mots clefs et jetons
Réviser et pratiquer GW-BASIC
L'éditeur d'écran GW-BASIC
Créer et utiliser des fichiers
Constantes, variables, expressions et opérateurs
Graphiques
Communications désynchronisées
Sous-programmes de langage d'assemblage (code machine)
Conversion des programmes BASIC en GW-BASIC
Bonjour
Application
Biochimie
Géométrie
Jeux & stratégies
Météorologie
Sport
Temps
Trigonométrie
Dessin Bitmap
Calcul du calcium corrigé
Aire d'un cercle
Aire d'une surface de prisme rectangulaire
Aire d'un triangle
Distance entre deux points
L25
Unité de mesure
Hockey
Année bissextile
ArcCos
ArcSin
DOSBox
PCE - PC Emulator
PCem
Raccourci clavier (Shortcut Keys)
Références des codes d'erreur du GWBASIC
Fonctions mathématiques
Codes de caractères ASCII
Équivalents hexadécimaux
Codes de balayage des touches
Caractères reconnus par GW-BASIC
Références des adresses de cellule mémoire du «PC IBM»
Encodage des fichiers «.BAS» du GWBASIC
Vocabulaire
Table ASCII
Table de codes ANSI et page de codes
Préface
Notes légal
Dictionnaire
Recherche

Voici un petit jeu que j'ai inventé lorsque j'étais enfant. Le but du jeu est de remplir 25 cases (5 x 5) en se déplaçant comme un cheval au échec sans jamais touchés deux fois la même case.

Le code source GWBASIC du jeu :

  1. 10 DIM T(5,5)
  2. 20 SCREEN 0:WIDTH 40:CLS:KEY OFF:COLOR 7,0
  3. 30 PRINT "+=====================================+"
  4. 40 PRINT "|                                     |"
  5. 50 PRINT "|                                     |"
  6. 60 PRINT "|                                     |"
  7. 70 PRINT "|                                     |"
  8. 80 PRINT "|                                     |"
  9. 90 PRINT "|                                     |"
  10. 100 PRINT "|                                     |"
  11. 110 PRINT "|                                     |"
  12. 120 PRINT "|           SYLVAIN MALTAIS           |"
  13. 130 PRINT "|                                     |"
  14. 140 PRINT "|               PRESENTE              |"
  15. 150 PRINT "|                                     |"
  16. 160 PRINT "|";:COLOR 30,0:PRINT "           |     ---+  +--           ";:COLOR 7,0:PRINT "|"
  17. 170 PRINT "|";:COLOR 30,0:PRINT "           |     +--+  +-+           ";:COLOR 7,0:PRINT "|"
  18. 180 PRINT "|";:COLOR 30,0:PRINT "           |     |       |           ";:COLOR 7,0:PRINT "|"
  19. 190 PRINT "|";:COLOR 30,0:PRINT "           +--- ++--   --+           ";:COLOR 7,0:PRINT "|"
  20. 200 PRINT "|                                     |"
  21. 210 PRINT "|                                     |"
  22. 220 PRINT "|                                     |"
  23. 230 PRINT "|                                     |"
  24. 240 PRINT "+=====================================+"
  25. 250 FOR A=0 TO 3000:NEXT
  26. 320 GOTO 1020
  27. 460 IF A$=CHR$(27) THEN RUN"MAITRE"
  28. 470 A$=INKEY$:IF A$="" THEN 470
  29. 480 SCREEN 0,1,0:WIDTH 40:COLOR 7,0:CLS
  30. 490 PRINT TAB(9),"   L 2 5"
  31. 500 PRINT TAB(9),"+-+-+-+-+-+"
  32. 510 PRINT TAB(9),"| | | | | |5"
  33. 520 PRINT TAB(9),"+-+-+-+-+-´"
  34. 530 PRINT TAB(9),"| | | | | |4"
  35. 540 PRINT TAB(9),"+-+-+-+-+-´"
  36. 550 PRINT TAB(9),"| | | | | |3"
  37. 560 PRINT TAB(9),"+-+-+-+-+-´"
  38. 570 PRINT TAB(9),"| | | | | |2"
  39. 580 PRINT TAB(9),"+-+-+-+-+-´"
  40. 590 PRINT TAB(9),"| | | | | |1"
  41. 600 PRINT TAB(9),"+-+-+-+-+-+":PRINT TAB(9)," A B C D E":LOCATE 18,1:COLOR 6:PRINT "A1-":CP$="A1-"
  42. 610 XA=18:YA=4:NO=1:B$="A1":A=1:LOCATE 11,16:COLOR 6:PRINT "X":COLOR 7
  43. 620 FOR C=1 TO 5:FOR B=1 TO 5:T(C,B)=0:NEXT B,C:T(1,1)=1:B=1
  44. 630 A$="":COLOR 6,0:LOCATE 15,6:PRINT "VOTRE DERNIER COUP:"B$:PRINT SPACE$(40):PRINT SPACE$(40)
  45. 640 A$="":LOCATE 16,1:PRINT SPACE$(40):LOCATE 16,6:PRINT "VOTRE COUP(EX:C2) ?";:COLOR 22:PRINT "_";:COLOR 6
  46. 645 C$=INKEY$:IF C$="" THEN 645 ELSE IF C$=CHR$(13) THEN 630
  47. 646 PRINT CHR$(29)+C$;:COLOR 22:PRINT "_";:COLOR 6:A$=A$+C$:IF LEN(A$)=2 THEN 660 ELSE 645
  48. 660 X=ASC(LEFT$(A$,1))-64:Y=VAL(RIGHT$(A$,1))
  49. 670 IF X=1 AND Y=1 AND T(2,3)=1 AND T(3,2)=1 THEN 990
  50. 680 IF X=1 AND Y=2 AND T(3,1)=1 AND T(3,3)=1 AND T(2,4)=1 THEN 990
  51. 690 IF X=1 AND Y=3 AND T(2,1)=1 AND T(2,5)=1 AND T(3,2)=1 AND T(3,4)=1 THEN 990
  52. 700 IF X=1 AND Y=4 AND T(2,2)=1 AND T(3,3)=1 AND T(3,5)=1 THEN 990
  53. 705 IF X=1 AND Y=5 AND T(2,3)=1 AND T(3,4)=1 THEN 990
  54. 710 IF X=2 AND Y=1 AND T(1,3)=1 AND T(3,3)=1 AND T(4,2)=1 THEN 990
  55. 720 IF X=2 AND Y=2 AND T(1,4)=1 AND T(3,4)=1 AND T(4,1)=1 AND T(4,3)=1 THEN 990
  56. 730 IF X=2 AND Y=3 AND T(1,1)=1 AND T(1,5)=1 AND T(3,1)=1 AND T(3,5)=1 AND T(4,2)=1 AND T(4,4)=1 THEN 990
  57. 740 IF X=2 AND Y=4 AND T(1,2)=1 AND T(3,2)=1 AND T(4,3)=1 AND T(4,5)=1 THEN 990
  58. 750 IF X=2 AND Y=5 AND T(1,3)=1 AND T(3,3)=1 AND T(4,4)=1 THEN 990
  59. 760 IF X=3 AND Y=1 AND T(1,2)=1 AND T(2,3)=1 AND T(4,3)=1 AND T(5,2)=1 THEN 990
  60. 770 IF X=3 AND Y=2 AND T(1,1)=1 AND T(1,3)=1 AND T(2,4)=1 AND T(4,4)=1 AND T(5,1)=1 AND T(5,3)=1 THEN 990
  61. 780 IF X=3 AND Y=3 AND T(1,2)=1 AND T(1,4)=1 AND T(2,1)=1 AND T(2,5)=1 AND T(4,1)=1 AND T(4,5)=1 AND T(5,2)=1 AND T(5,4)=1 THEN 990
  62. 790 IF X=3 AND Y=4 AND T(1,3)=1 AND T(1,5)=1 AND T(2,2)=1 AND T(4,2)=1 AND T(5,3)=1 AND T(5,5)=1 THEN 990
  63. 800 IF X=3 AND Y=5 AND T(1,4)=1 AND T(2,3)=1 AND T(4,3)=1 AND T(5,4)=1 THEN 990
  64. 810 IF X=4 AND Y=1 AND T(2,2)=1 AND T(3,3)=1 AND T(5,3)=1 THEN 990
  65. 820 IF X=4 AND Y=2 AND T(2,1)=1 AND T(2,3)=1 AND T(3,4)=1 AND T(5,4)=1 THEN 990
  66. 830 IF X=4 AND Y=3 AND T(2,2)=1 AND T(2,4)=1 AND T(3,1)=1 AND T(3,5)=1 AND T(5,1)=1 AND T(5,5)=1 THEN 990
  67. 840 IF X=4 AND Y=4 AND T(2,3)=1 AND T(2,5)=1 AND T(3,2)=1 AND T(5,2)=1 THEN 990
  68. 850 IF X=4 AND Y=5 AND T(2,4)=1 AND T(3,3)=1 AND T(5,3)=1 THEN 990
  69. 860 IF X=5 AND Y=1 AND T(3,2)=1 AND T(4,3)=1 THEN 990
  70. 870 IF X=5 AND Y=2 AND T(3,1)=1 AND T(3,3)=1 AND T(4,4)=1 THEN 990
  71. 880 IF X=5 AND Y=3 AND T(3,2)=1 AND T(3,4)=1 AND T(4,1)=1 AND T(4,5)=1 THEN 990
  72. 890 IF X=5 AND Y=4 AND T(3,3)=1 AND T(3,5)=1 AND T(4,2)=1 THEN 990
  73. 900 IF X=5 AND Y=5 AND T(3,4)=1 AND T(4,3)=1 THEN 990
  74. 910 IF ((A=X-1 OR A=X+1) AND (B=Y-2 OR B=Y+2)) OR ((A=X-2 OR A=X+2) AND (B=Y-1 OR B=Y+1)) THEN 920 ELSE 980
  75. 920 IF X>5 OR Y>5 THEN 980
  76. 930 IF T(X,Y)=1 THEN 980
  77. 940 IF NO=24 THEN 1000
  78. 950 LOCATE XA,YA:PRINT MID$(A$,1,2)+"-":CP$=CP$+MID$(A$,1,2)+"-":YA=YA+3:NO=NO+1:LOCATE 13-2*Y,14+2*X:PRINT "X":T(X,Y)=1:A=X:B=Y:B$=A$
  79. 960 IF YA>39 THEN YA=1:XA=XA+1
  80. 970 GOTO 630
  81. 980 LOCATE 17,4:COLOR 28,0:PRINT "VOUS NE POUVEZ JOUEZ CE COUP.":COLOR 6,0:GOTO 640
  82. 990 SCREEN 0:WIDTH 40:COLOR 15,0:CLS:LOCATE 12,12:PRINT "VOUS AVEZ PERDUE.":GOTO 1010
  83. 1000 SCREEN 0:WIDTH 40:COLOR 15,0:CLS:LOCATE 12,12:PRINT "BRAVO! TU AS GAGNER!"
  84. 1010 FOR A=0 TO 3000:NEXT
  85. 1020 SCREEN 0,1,0:WIDTH 80:COLOR 15,0:CLS:R=7
  86. 1030 LOCATE 2,18:COLOR 30:PRINT "MENU":COLOR 7
  87. 1040 PRINT STRING$(80,"_"):LOCATE 25,1:COLOR 0,15:PRINT "PRESSE LES FLECHES("+CHR$(24)+" "+CHR$(25)+")POUR CHOISIR ET <ENTER> POUR EXECUTER . . .             ":COLOR 15,0
  88. 1050 COLOR 15,0:LOCATE 7,1:PRINT "  1-POUR IMPRIMER LES COUPS SUR L'IMPRIMENTE"
  89. 1060 LOCATE 8,1:PRINT "  2-POUR IMPRIMER LES COUPS SUR L'ECRAN"
  90. 1070 LOCATE 9,1:PRINT "  3-POUR JOUER UNE AUTRE PARTIE DE L25"
  91. 1080 LOCATE 10,1:PRINT "  4-POUR LES INSTRUCTIONS"
  92. 1090 LOCATE 11,1:PRINT "  5-POUR RETOURNER AU PRE-MENU"
  93. 1100 IF R=7 THEN B$="1-POUR IMPRIMER LES COUPS SUR L'IMPRIMENTE"
  94. 1110 IF R=8 THEN B$="2-POUR IMPRIMER LES COUPS SUR L'ECRAN"
  95. 1120 IF R=9 THEN B$="3-POUR JOUER UNE AUTRE PARTIE DE L25"
  96. 1130 IF R=10 THEN B$="4-POUR LES INSTRUCTIONS"
  97. 1140 IF R=11 THEN B$="5-POUR RETOURNER AU PRE-MENU"
  98. 1150 LOCATE R,1:COLOR 20,0:PRINT CHR$(16)" ";:COLOR 30,1:PRINT B$
  99. 1160 A$=INKEY$:IF A$="" THEN 1160
  100. 1170 K=VAL(A$):IF A$=CHR$(0)+"H" OR A$="8" THEN R=R-1
  101. 1180 IF A$=CHR$(0)+"P" THEN R=R+1 ELSE IF A$=CHR$(13) THEN K=R-6
  102. 1190 IF R=6 THEN R=11 ELSE IF R=12 THEN R=7
  103. 1200 ON K GOTO 2040,1210,480,3200,1400
  104. 1205 GOTO 1050
  105. 1210 SCREEN 0:WIDTH 40:CLS:LOCATE 10,1:PRINT "LA DERNIERE PARTIE"
  106. 1220 LOCATE 12,1:IF CP$="" THEN PRINT "VOUS N'AVEZ PAS ENCORS JOUER DE PARTIE" ELSE PRINT CP$
  107. 1230 LOCATE 15,1:PRINT "PRESSE UNE TOUCHE POUR CONTINUER . . .  "
  108. 1240 A$=INKEY$:IF A$="" THEN 1240 ELSE 1020
  109. 1400 RUN"MAITRE"
  110. 2040 LPRINT "                 L25                    ":LPRINT :LPRINT CP$
  111. 3200 SCREEN 0:WIDTH 40:CLS:LOCATE 3,14:COLOR 30,0:PRINT "INSTRUCTION":COLOR 7,0
  112. 3300 PRINT "_______________________________________"
  113. 3400 PRINT :PRINT " L25 est un jeux de logique qui consi-"
  114. 3500 PRINT "ste à jouer le plus de coup possible de"
  115. 3600 PRINT "la manière suivante:Il se déplace d'une"
  116. 3700 PRINT "case VERTICALEMENT  ou  HORIZONTALEMENT"
  117. 3800 PRINT "et puis d'une case en DIAGONALE ,lequel"
  118. 3900 PRINT "ne doit pas être ADJACENT a cel  quitté"
  119. 4000 PRINT "de tous les déplacements constitues  un"
  120. 4100 PRINT "seul déplacement ou en d'autres mots,il"
  121. 4200 PRINT "se déplace comme un cavalier au ECHEC."
  122. 4300 PRINT "_______________________________________"
  123. 4400 LOCATE 18,18:COLOR 1:PRINT "BONNE CHANCE!!":COLOR 7,0
  124. 4490 LOCATE 21,1:COLOR 0,7:PRINT "PRESSE UNE TOUCHE POUR CONTINUER...    "
  125. 4510 A$=INKEY$:IF A$="" THEN 4510 ELSE 1020

Solution

Voici une des solutions gagnant, la technique en losange:

1 14 9 20 3
24 19 2 15 10
13 8 25 4 21
18 23 6 11 16
7 12 17 22 5


PARTAGER CETTE PAGE SUR
Dernière mise à jour : Samedi, le 24 janvier 2015