Changes between Version 89 and Version 90 of Archi-1-TP9


Ignore:
Timestamp:
Dec 6, 2020, 1:03:00 PM (4 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Archi-1-TP9

    v89 v90  
    891891     - exécute en boucle jusqu'à réussite
    892892       - demande d'un chiffre
    893        - comparaison avec le tirage et affichage des messages `"trop grand"`, `"trop petit"` ou `"bravo"`
     893       - comparaison avec le tirage et affichage des messages `"trop grand"`, `"trop petit"` ou `"gagné"`
    894894  - Vous devrez modifier le Makefile puisque vous avez un fichier à compiler en plus.
    895895  - Si c'est trop facile, vous pouvez complexifier en utilisant des nombres à 2 chiffres ou plus.
     896{{{#!protected
     897**kinit.h**
     898{{{#!c
     899#include <harch.h>
     900#include <guess.h>
     901
     902char hello[] = "Hello World!\n\n";
     903char end[] = "\nend!\n";
     904
     905void kinit (void)
     906{
     907    tty_write (0, hello, sizeof (hello) );          // print hello string
     908    guess();
     909    tty_write (0, end, sizeof (end));               // print end string on terminal 0
     910    while (1);                                      // infinite loop
     911}
     912}}}
     913**guess.h**
     914{{{#!c
     915#ifndef _GUESS_H_
     916#define _GUESS_H_
     917
     918extern void guess (void);
     919
     920#endif
     921}}}
     922**guess.c**
     923{{{#!c
     924include <guess.h>
     925#include <harch.h>
     926#include <hcpu.h>
     927
     928#define msg(s) tty_write(0,s,sizeof(s))
     929#define get(c) tty_read(0,&c,1)
     930
     931void guess (void)
     932{
     933    char c;
     934    int num;
     935    int random;
     936
     937    do {
     938        random = clock() % 10;  // only one digit
     939        do {
     940            do {
     941                msg("Donnez un nombre : ");
     942                get(c);
     943            } while ( (c < '0') && (c > '9') );
     944            num = c - '0';
     945
     946            if (num < random)
     947                msg(" —> trop petit\n");
     948            else if (num > random)
     949                msg(" —> trop grand\n");
     950
     951        } while (random != num);
     952
     953        msg("\nGagné\n");
     954        msg("\nOn recommence [Y]/N ? ");
     955        get(c);
     956        msg("\n\n");
     957
     958    } while (c != 'N');
     959}
     960}}}
     961}}}