/* jeu des allumettes sur SCI en connextion avec terminal WINDIOWS    C.Dupaty 01/2003*/

#include <stdlib.h>
#include <libpd2.h>
#include <p18f452.h>

unsigned char chaine[20];



/* envoie une chaine de caractère en ROM*/
int putrstsci(rom unsigned char *s)
	{
	int n;

	for (n = 0; *s; n++, s++) putsci(*s);
//	putsci('\n\r');
	return 1;
	}



int nbal,max;
char couppic;

void touche(void)     /* attend une touche */
{
	putrstsci("Appuyes sur s");
	while (getsci()!='s');
}

void affiche(void)  /* affiche le nombre d'allumettes restant*/
{
int i;
putrstsci(" \n\r");
for(i=1;i<=nbal;i++)
                {
                 putsci('I');
                 putsci(' ');
                }
putrstsci(" \n\r");
}

int pic(void)        /* c'est au pic de jouer*/
{
int ote,m;
	affiche();
	m=max+1;
	ote=nbal-(((nbal-1)/m)*m+1);   /* tout se joue ici !!!!! */
	if (ote<=0) ote=1;
	putrstsci("j'ote ");
	putstsci(btoa(ote,chaine));
	putrstsci(" allumette");

	if (ote>1) putsci('s');
	nbal-=ote;
	couppic=1;
	return(nbal);
}

int joueur(void)  /* c'est au joueur de jouer*/
{
int ote;
affiche();
do
{
	putrstsci("combien otez vous d'allumettes ? \n\r");
	getstsci(chaine,'*');
	ote=atoi(chaine);
}
while (ote>max);
nbal-=ote;
couppic=0;
return(nbal);
}

void resultat(void) /* on affiche le vainqueur*/
{
affiche();
if (couppic==1) putrstsci("je gagne et tu perds nananerre \n\r"); else putrstsci("je perd et tu gagnes\n\r");
}



void main(void)
{
	initsci();

    while(1)
    {
putrstsci("\r\n\n\n ------------------------------------------------------------------------------");    								
putrstsci("\r\n Le jeux des allumettes \n\r Le perdant prendra la derniere allumette \r\n");
putrstsci(" Tapez * apres avoir tape vos nombres ");
putrstsci("\r\n ------------------------------------------------------------------------------ \r\n\n"); 
putrstsci("Combien y a-t-il d allumettes au depart (je recommande 15)\r\n");
getstsci(chaine,'*');
nbal=atoi(chaine);
putrstsci("\n\rCombien d'allumettes peut on prendre au maximum a chaque tour (je recommande 3)\n\r");
getstsci(chaine,'*');
max=atob(chaine);

while((joueur()>1)&&(pic()>1)) ;
resultat();
touche();

	}
	
}

