detailElement

This commit is contained in:
flo 2017-04-12 20:18:14 +02:00
parent 99036f74f1
commit cee4fc97a4
6 changed files with 150 additions and 104 deletions

BIN
obj/modern.bmp.o Normal file

Binary file not shown.

BIN
obj/periodiq.c.o Normal file

Binary file not shown.

BIN
periodiq.bin Executable file

Binary file not shown.

BIN
periodiq.elf Executable file

Binary file not shown.

BIN
periodiq.g1a Normal file

Binary file not shown.

View File

@ -200,6 +200,7 @@ char *etat[9]={
extern Font modern;
#define floor(x) ((int)(x))
int main()
{
@ -212,10 +213,10 @@ void Mini(char* chaine, int n ) // fonc defini le numero de la fonction
{
short j;
drect(n*21+2, 56, n*21+20, 63, color_black);
dtext(n*21+strlen(chaine), 58, chaine);
drect(n*21+2, 56, n*21+20, 63, color_invert);
//ML_display_vram();
}
@ -297,7 +298,7 @@ text_configure(&modern, color_black);
case KEY_UP : y--; break;
// case KEY_F4 : chang=tableauEleMini(chang); break;
//case KEY_F2 : chang=find(chang); break;
case KEY_F2 : chang=find(chang); break;
// case KEY_F3 : calcul_mole(); break;
case KEY_F6 : case KEY_EXE : chang=detailsElement(3); break;
@ -450,7 +451,7 @@ char i=0, y;
int detailsElement(int a)
{
unsigned char buffer[50];
int descente=0;
unsigned char page = 0;
unsigned char i, j = 0;
@ -458,77 +459,96 @@ int detailsElement(int a)
while (1)
{
dclear();
dprint(20, descente+4, "%s", elements[a].symbol);
dprint(20, 2, "%s", elements[a].symbol);
dprint(40, 2, "%s", elements[a].nom);
dprint((10-a/25), 4, "%d", a+1);
dline(0, 10, 128, 10, color_black);
dprint(40, descente+4, "%s", elements[a].nom);
dline(127, 22*page + 12, 127, 22*page + 42, color_black);
dprint((10-a/25), descente+6, "%d", a+1);
dprint(1, descente+14, "masse molaire %d.%03d g/mol", elements[a].masse_mol/1000, elements[a].masse_mol % 1000);
dprint(1, descente + 31, "propriete de base");
sprintf(buffer, "groupe : %d ", elements[a].groupe);
if(elements[a].famille==6 || elements[a].famille==7)
switch(page)
{
sprintf(buffer, "groupe inconnu");
}
case 0 :
{
dprint(1, 12, "masse molaire %d.%03d g/mol", elements[a].masse_mol/1000, elements[a].masse_mol % 1000);
dtext(1, descente+41, buffer);
dprint(20, 22, "propriete de base");
sprintf(buffer, "periode : %d ", elements[a].periode);
dtext(1, descente+51, buffer);
sprintf(buffer, "groupe : %d ", elements[a].groupe);
j=0;
if(elements[a].famille==6 || elements[a].famille==7)
{
sprintf(buffer, "groupe inconnu");
}
for(i=0; i < 7; i++)
{
buffer[j++] = elements[a].config_electro[i] + '0';
buffer[j++] = '-';
dtext(1, 32, buffer);
}
j--;
buffer[j]=0;
sprintf(buffer, "periode : %d ", elements[a].periode);
dtext(1, 42, buffer);
sprintf(buffer, "couch electro %s", buffer);
dtext(1, descente+70, buffer);
j=0;
sprintf(buffer, "famille %s", family[elements[a].famille]);
dtext(1, descente+80, buffer);
/*
sprintf(buffer, "decouvert en %d", ajout[a].annee);
dtext(1, descente+90, buffer);
for(i = 0; i < strlen(elements[a].config_electro); i++)
{
if(elements[a].config_electro[i]>=10)
{
buffer[j++] = (int)elements[a].config_electro[i]/10 + '0';
buffer[j++] = elements[a].config_electro[i]%10 + '0';
}
else
{
buffer[j++] = elements[a].config_electro[i] + '0';
}
sprintf(buffer, "etat a 293.15 K : %s", etat[ajout[a].etat]);
dtext(1, descente+100, buffer);
buffer[j++] = '-';
}
dtext(20, descente+120, "reactivite :"); //
j--;
if (elements[a].electro_neg==0)
{
dtext(1, descente+130, "electro neg inconnue");
}
else
{
sprintf(buffer, "electro neg : %f ", elements[a].electro_neg);
dtext(1, descente+130, buffer);
}
buffer[j]=0;
if (elements[a].valence>=0)
{
sprintf(buffer, "valence : %d ", elements[a].valence);
dtext(1, descente+140, buffer);
}
else
{
dtext(1, descente+140, "valence inconnue");
}
sprintf(buffer, "couch electro %s", buffer);
dtext(1, 52, buffer);
Mini("ret", 5);*/
break;
}
case 1 :
{
dprint(1, 12, "famille %s", family[elements[a].famille]);
dprint(1, 22, "etat a 293.15 K : %s", etat[elements[a].etat]);
dtext(20, 32, "reactivite :");
if (elements[a].electro_neg == -1)
{
sprintf(buffer, "electro neg inconnue");
}
else
{
sprintf(buffer, "electro neg : %d.%02d ", elements[a].electro_neg/100, elements[a].electro_neg%100);
}
dtext(1, 42, buffer);
if (elements[a].valence == -1)
{
sprintf(buffer, "valence inconnue ");
}
else
{
sprintf(buffer, "valence : %d", elements[a].valence);
}
dtext(1, 52, buffer);
break;
}
}
Mini("ret", 5);
dupdate();
@ -536,83 +556,109 @@ int detailsElement(int a)
switch (key)
{
case KEY_LEFT : a-=1, descente=0; break;
case KEY_RIGHT : a+=1, descente=0; break;
case KEY_DOWN : descente-=4; break;
case KEY_UP : descente+=4; break;
case KEY_LEFT : a-=1; break;
case KEY_RIGHT : a+=1; break;
case KEY_DOWN : page = (page <= 1 ? 1 : page + 1); break;
case KEY_UP : page = (page >=0 ? 0 : page - 1); break;
case KEY_F6 : case KEY_EXE : case KEY_EXIT : return a;
}
a=(a<0 ? 117 : a>117 ? 0 : a);
descente=(descente>0 ? 0 : descente<-85 ? -85 : descente); // on fixe les limites de la page
}
}
unsigned char* input(unsigned char* ask, unsigned char size, unsigned char* char_allowed)
{
unsigned char buffer[50];
unsigned char j,i;
j=0;
while(1)
{
dclear();
dtext(1, 1, ask);
dtext(1, 20, buffer);
dupdate();
key=getkey();
for(i = 0; i < strlen(char_allowed); i++)
{
if(char_allowed[i]==key_char(key) && j < size)
{
buffer[j++] = key_char(key);
buffer[j]=0;
}
}
if(key == KEY_DEL)
{
j--;
buffer[j]=0;
}
if(key == KEY_EXE || key == KEY_EXIT)
{
return buffer;
}
}
}
int find(chang)
{/*
{
char *numero=NULL;
char i=0, j;
char i=0, j=0;
const char buffer[50];
unsigned char buffer[50];
Bdisp_AllClr_DDVRAM();
dclear();
dtext(10, 1, "Vous cherchez :");
dtext(10, 15, "1. numero de l'element");
dtext(10, 25, "2. masse molaire");
dtext(10, 35, "3. Symbole de l'element");
dtext(10, 45, "4. Nom de l'element");
dupdate();
while (1)
{
EI_init();
EI_manage_config(EI_SET_COLUMN, 1);
EI_manage_config(EI_SET_ROW, 3);
EI_manage_config(EI_SET_START_MODE, EI_NORMAL);
GetKey(&key);
key=getkey();
switch(key)
{
case 72 :
{
while(1)
{
Bdisp_AllClr_DDVRAM();
dtext(1, 1, "Vous cherchez l'element n :");
case KEY_1 :
{
numero=input("Element num :", 3, "0123456789");
numero=EI_input_string(3, (const char*)"0123456789");
// ça coupe ici
if (atoi(numero)>0 && atoi(numero)<119) // ça arrête le curseur
{
return atoi(numero)-1;
}
}
if (atoi(numero)>0 && atoi(numero)<119)
{
return atoi(numero)-1;
}
break;
}
case 62 :
{
while(1)
{
Bdisp_AllClr_DDVRAM();
dtext(1, 1, "Vous cherchez une masse");
dtext(1, 7, "molaire de :");
numero=EI_input_string(3, (const char*)"0123456789");
case KEY_2 :
{
while(1)
{
numero=input("Masse molaire de :", 3, "0123456789");
for (i=0;i<118;i++)
{
if (atoi(numero)==floor(elements[i].masse_mol+0.5))
if (atoi(numero)==floor(elements[i].masse_mol/1000+0.5))
{
return i;
}
}
}
break;
}
case 52 :
/*
case KEY_3 :
{
while(1)
{
@ -638,7 +684,7 @@ while (1)
}
}
case 73 :
case KEY_4 :
{
while(1)
{
@ -662,12 +708,12 @@ while (1)
}
}
}
}
}*/
case 47 : return chang;
case KEY_EXIT : return chang;
}
}*/
}
}
void calcul_mole()