# Commande principale: demo pour compte.a :cible initvar si jejoue? :cible [jejoue 0 :cible] [vousjouez 0 :cible] ftpt :oldtpt fct noir fin pour c :cible compte.a :cible fin pour cpart :debut :cible initvar ec ph [Partie partielle. On démarre à] :debut ec " si jejoue? :cible [jejoue :debut :cible] [vousjouez :debut :cible] ftpt :oldtpt fct noir fin pour fixempan :n si non entier? :n [ec ph [fixempan n'aime pas] :n stop] si ou :n < 3 :n> 10 [ec ph [fixempan n'aime pas] :n stop] definis "initvar rplac3 ( :n -1) fin pour initvar # NE MODIFIEZ QUE LA VARIABLE "MAX OU... donne "MAX 2 # ...OU LA VARIABLE "ORDIJOUEMAL ( "VRAI ou "FAUX ) donne "ORDIJOUEMAL "FAUX # MAIS NE TOUCHEZ SURTOUT PAS AUX LIGNES CI - DESSOUS donne "EMPAN SOMME :MAX 1 donne "JOUABLES ORDINAUX [ ] :MAX fsep 0 vt donne "oldtpt tpt ftpt 24 fin pour ordijouemal? ret :ordijouemal fin pour plp? :a :b ret (:a < :b) fin pour diff :a :b ret :a - :b fin pour ordinaux :r :m si plp? :m 1 [ret :r] [ret ordinaux mp :m :r DIFF :m 1] fin pour nimportequoi ret item somme 1 hasard compte :jouables :jouables fin pour ecoute :caradmis soit "clav liscar # pb du portable : les valeurs numériques ne sont atteintes que par appui sur la touche shift (-16 # tantque [egal? moins 16 :clav] [donne "clav liscar ] tantque [:clav < 0] [donne "clav liscar] # en sortie on doit tenir le bon code donne "clav car :clav si membre? :clav :caradmis [ret :clav] [ret ecoute :caradmis] fin pour vousjouez :depart :cible fct vertfonce tape ( ph [VOUS AJOUTEZ COMBIEN? ( 1 ...] :MAX [) ou 0 pour abandonner : ]) soit "ecart ecoute mp 0 :jouables ec :ecart ec " si egal? 0 :ecart [ fct noir EC [Vous abandonnez ... VOUS AVEZ PERDU !] stop] soit "visee somme :depart :ecart ec ph [> > On est maintenant en] :visee si egal? :visee :cible [ fct noir ec [... VOUS AVEZ GAGNE!] STOP] jejoue :visee :cible fin pour jejoue :depart :cible donne "ecart diff :cible :depart donne "visee diff :cible produit :empan quotient :ecart :empan si ou ordijouemal? egal? :visee :depart [donne "visee somme :depart nimportequoi] fct rougefonce tape ph [J'ajoute] diff :visee :depart tape car 32 ec ph [> > On est maintenant en] :visee fct noir si egal? :visee :cible [fct noir ecC [... ET J'AI GAGNE!] stop] ec " vousjouez :visee :cible fin pour jejoue? :cible EC [VOULEZ - VOUS JOUER EN PREMIER? ( O / N )] soit "rep membre? ecoute [O o N n] [N n] ec "---------------------- si non :rep [ec [Vous jouez en premier !]] [ec [Je joue en premier !]] ec "---------------------- ec (ph [Rappel : il faut atteindre ] :cible) ec "---------------------- ret :rep fin pour d :a :b tape car 91 tape car 32 tape quotient :a :b tape car 32 tape reste :a :b tape car 32 ec car 93 fin pour e :a :b donnelocale "q quotient :a :b tape car 91 tape car 32 tape :a * :q tape car 32 tape :a * (:q + 1) tape car 32 ec car 93 fin pour m9 :x donne "oldtpt tpt ftpt 32 ec sm9 mp :x [] 1 :x ftpt :oldtpt fin pour sm9 :l :c :x si :c > 9 [ret :l] donnelocale "nx somme der :l :x ret sm9 md :nx :l (1 + :c) :x fin pour rplac3 :n # valide uniquement pour initvar soit "textproc [[] [rem [NE MODIFIEZ QUE LA VARIABLE "MAX OU...]] [donne "MAX 3] [rem [...OU LA VARIABLE "ORDIJOUEMAL ( "VRAI ou "FAUX )]] [donne "ORDIJOUEMAL "FAUX] [rem [MAIS NE TOUCHEZ SURTOUT PAS AUX LIGNES CI - DESSOUS]] [donne "EMPAN SOMME :MAX 1] [donne "JOUABLES ORDINAUX [] :MAX] [fsep 0 vt donne "oldtpt tpt ftpt 24] ] donne "textproc remplace :textproc 3 md :n [donne "MAX] ret :textproc fin pour rem :o fin #-------------------- pour demo c 20 fin