Re: Periodic table for HP Prime Message #13 Posted by Mic on 20 Oct 2013, 3:21 a.m., in response to message #9 by Tim Wessman
I added code : when you keep ENTER key pressed down on an element, informations about it are displayed. I also added ESC key.
symbol:={"H","He","Li","Be","B","C","N","O","F","Ne","Na","Mg","Al","Si","P","S","Cl","Ar","K","Ca","Sc","Ti","V","Cr","Mn","Fe","Co","Ni","Cu",
"Zn","Ga","Ge","As","Se","Br","Kr","Rb","Sr","Y","Zr","Nb","Mo","Tc","Ru","Rh","Pd","Ag","Cd","In","Sn","Sb","Te","I","Xe","Cs","Ba",
"La","Ce","Pr","Nd","Pm","Sm","Eu","Gd","Tb","Dy","Ho","Er","Tm","Yb","Lu","Hf","Ta","W","Re","Os","Ir","Pt","Au","Hg","Tl","Pb","Bi",
"Po","At","Rn","Fr","Ra","Ac","Th","Pa","U","Np","Pu","Am","Cm","Bk","Cf","Es","Fm","Md","No","Lr","Rf","Db","Sg","Bh","Hs","Mt","Ds","Rg","Cn"};
l2:={"Hydrogène","Hélium","Lithium","Béryllium","Bore","Carbone","Azote","Oxygène","Fluor","Néon","Sodium","Magnésium","Aluminium","Silicium","Phosphore","Soufre","Chlore","Argon","Potassium","Calcium","Scandium","Titane","Vanadium","Chrome","Manganèse","Fer","Cobalt","Nickel","Cuivre","Zinc","Gallium","Germanium","Arsenic","Sélénium","Brome","Krypton","Rubidium","Strontium","Yttrium","Zirconium","Niobium","Molybdène","Technétium","Ruthénium","Rhodium","Palladium","Argent","Cadmium","Indium","Etain","Antimoine","Tellure","Iode","Xénon","Césium","Baryum","Lanthane","Cérium","Praséodyme","Néodyme","Prométhium","Samarium","Europium","Gadolinium","Terbium","Dysprosium","Holmium","Erbium","Thulium","Ytterbium","Lutétium","Hafnium","Tantale","Tungstène","Rhénium","Osmium","Iridium","Platine","Or","Mercure","Thallium","Plomb","Bismuth","Polonium","Astate","Radon","Francium","Radium","Actinium","Thorium","Protactinium","Uranium","Neptunium","Plutonium","Américium","Curium","Berkélium","Californium","Einsteinium","Fermium","Mendélévium","Nobélium","Lawrencium","Rutherfordium","Dubnium","Seaborgium","Bohrium","Hassium","Meitnerium","Darmstadtium","Roentgenium","Copernicium"};
//masse molaire
l3:={1,4,6.9,9,10.8,12,14,16,19,20.2,23,24.3,27,28.1,31,32.1,35.5,39.9,39.1,40.1,45.0,47.9,50.9,52.0,54.9,55.8,58.9,58.7,63.5,65.4,69.7,72.6,74.9,79,79.9,83.8,85.5,87.6,88.9,91.2,92.9,95.9,98.9,101.1,102.9,106.4,107.9,112.4,114.8,118.7,121.8,127.6,126.9,131.3,132.9,137.3,138.9,140.1,140.9,144.2,145,150.4,152,157.3,158.9,162.5,164.9,167.3,168.9,173,175,178.5,180.9,183.9,186.2,190.2,192.2,195.1,197,200.6,204.4,207.2,209,209,210,222,223,226,227,232,231,238,237,244,243,247,247,251,252,257,258,259,260,261,262,263,262,265,266,269,280,285};
//densité
l4:={0.0000899,0.0001785,0.535,1.848,2.46,2.26,0.001251,0.001429,0.001696,0.0009,0.968,1.738,2.7,2.33,1.823,1.96,0.003214,0.001784,0.856,1.55,2.985,4.507,6.11,7.14,7.47,7.874,8.9,8.908,8.92,7.14,5.904,5.323,5.727,4.819,3.12,0.00375,1.532,2.63,4.472,6.511,8.57,10.28,11.5,12.37,12.45,12.023,10.49,8.65,7.31,7.31,6.697,6.24,4.94,0.0059,1.879,3.51,6.146,6.689,6.64,7.01,7.264,7.353,5.244,7.901,8.219,8.551,8.795,9.066,9.321,6.57,9.841,13.31,16.65,19.25,21.02,22.59,22.56,21.09,19.3,13.534,11.85,11.34,9.78,9.196,0,0.00973,0,5,10.07,11.724,15.37,19.05,20.45,19.816,0,13.51,14.78,15.1,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
//rayon
l5:={53,31,167,112,87,67,56,48,42,38,190,145,118,111,98,88,79,71,243,194,184,176,171,166,161,156,152,149,145,142,136,125,114,103,94,88,265,219,212,206,198,190,183,178,173,169,165,161,156,145,133,123,115,108,298,253,195,158,247,206,205,238,231,233,225,228,226,226,222,222,217,208,200,193,188,185,180,177,174,171,156,154,143,135,127,120,0,215,195,180,180,175,175,175,175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
//électronégativité
l6:={2.2,0,0.98,1.57,2.04,2.55,3.04,3.44,3.9,0,0.93,1.31,1.61,1.9,2.19,2.58,3.16,0,0.82,1,1.36,1.54,1.63,1.66,1.55,1.83,1.88,1.91,1.9,1.65,1.81,2.01,2.18,2.55,2.96,0,0.82,0.95,1.22,1.33,1.6,2.16,2.1,2.2,2.28,2.2,1.93,1.69,1.78,1.96,2.05,2.1,2.66,0,0.79,0.89,1.1,1.12,1.13,1.14,0,1.17,0,1.2,0,1.22,1.23,1.24,1.25,0,1,1.3,1.5,1.7,1.9,2.2,2.2,2.2,2.4,1.9,1.8,1.8,1.9,2,2.2,0,0.7,0.9,1.1,1.3,1.5,1.7,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.3,0,0,0,0,0,0,0,0,0,0};
//fusion
l7:={−259,0,181,1278,2300,3370,−210,−218,−220,−249,98,649,660,1410,44,119,−101,−189,64,840,1539,1660,1890,1860,1224,1535,1495,1453,1083,420,30,937,0,217,−7,−157,39,769,1520,1852,2470,2617,2172,2310,1966,1552,962,321,157,232,631,450,114,−112,28,725,920,798,931,1010,1168,1070,822,1211,1360,1412,1474,1522,1500,824,1656,2230,2996,3410,3180,3050,2410,1772,1067,−39,304,328,271,254,302,−71,27,700,1050,1750,1600,1132,640,641,994,1340,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
//ébullition
l8:={−253,−269,1347,2970,2550,4827,−196,−183,−188,−246,883,1090,2467,2355,280,445,−35,−186,774,1484,2832,3287,3380,2672,1962,2750,2870,2732,2567,907,2403,2830,613,685,59,−152,688,1384,3337,4377,4742,4612,4877,3900,3700,3140,2212,765,2080,2260,1750,990,184,−107,678,1640,3454,3257,3212,3127,2460,1778,1597,3233,3041,2562,2695,2510,1727,1193,3315,4602,5400,5660,5627,5030,4130,3800,2807,357,1460,1740,1560,962,337,−62,677,1140,3200,4790,0,3818,3902,3232,2607,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
//découverte
l9:={1766,1895,1817,1798,1808,0,1772,1774,1886,1898,1807,1755,1827,1824,1669,0,1774,1894,1807,1808,1878,1791,1801,1797,1774,0,1735,1751,0,0,1875,1886,0,1817,1826,1898,1861,1808,1794,1789,1801,1782,1937,1844,1803,1803,0,1817,1863,0,0,1782,1811,1898,1860,1808,1839,1803,1885,1885,1945,1879,1901,1880,1843,1886,1878,1842,1879,1878,1907,1923,1802,1783,1925,1803,1803,1735,0,0,1861,0,0,1898,1940,1900,1939,1898,1899,1828,1913,1789,1940,1940,1944,1944,1949,1950,1952,1952,1955,1958,1961,1964,1967,1974,1981,1984,1982,1994,1994,1996};
l0:={1,16,3,10,8,10,72,27,14,4,14,0};
//color
m1:={#00EE00,#66AAFF,#FFAA00,#F3F300,#FFC1DC,#00DDBB,#FF93C2,#99BBAA,#B2AAFF,#B2F0FF};
m2:={1,2,3,4,7,1,1,1,8,2,3,4,6,7,1,1,8,2,3,4,5,5,5,5,5,5,5,5,5,5,6,7
,7,1,8,2,3,4,5,5,5,5,5,5,5,5,5,5,6,6,7,7,8,2,3,4,9,9,9,9,9,9,9,9,9,9
,9,9,9,9,9,5,5,5,5,5,5,5,5,5,6,6,6,7,8,2,3,4,10,10,10,10,10,10,10,10
,10,10,10,10,10,10,10,5,5,5,5,5,5,5,5,5};
//position
position:= [
[ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2 ],
3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 6, 7, 8, 9, 10,
11, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 14, 15, 16, 17, 18,
19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
55, 56, 57, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
87, 88, 89,104,105,106,107,108,109,110,111,112, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 0,
0, 0, 0, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,100,101,102,103, 0
];
startX:=2,startY:=2,width:=22,height:=21;
offset:=0; //offest for graphical shift
selEl:=1; //selected element
DrawTable()
begin
DIMGROB_P(G1,320,220); RECT(G1);
local x:=startX-offset,y:=startY,i,j;
local tablePos=1;
for j:=1 to 10 do
for i:=1 to 18 do
if tablePos:=position(j,i) then
RECT_P(G1,x,y,x+width,y+height,RGB(0,0,0),m1(m2(tablePos)));
if selEl== tablePos then
RECT_P(G1,x+1,y+1,x+width-1,y+height-1,RGB(0,0,0),RGB(0,0,0,255));
end;
TEXTOUT_P(tablePos,G1,x+2,y+1,1);
TEXTOUT_P(symbol(tablePos),G1,x+8,y+10,1);
end;
x:=x+width;
end;
x:=x-18*width;
y:=y+height;
end;
x:=2*width-offset+width/4+startX; y:=7*height+startY;
LINE_P(G1,x,y,x,y+2*height+height/2);
LINE_P(G1,x,y+2*height+height/2,x+width*3/4,y+2*height+height/2);
x:=x+width/2;
LINE_P(G1,x,y,x,y+height+height/2);
LINE_P(G1,x,y+height+height/2,x+width/4,y+height+height/2);
blit_p(G0,G1);
end;
FindEl(x,y)
begin
local el,tempX:=(x-startX+offset)/width,tempY:=(y-startY)/height;
position(ip(tempY)+1,ip(tempX)+1)▶B;
return B;
end;
EXPORT elements()
BEGIN
DrawTable();
DRAWMENU({"","Fiche","Aide","Quitter"});
local touch;
WHILE 1 DO
blit_p(G0,G1,0,0);
touch:=mouse();
if ISKEYDOWN(4) THEN BREAK; END;
if ISKEYDOWN(30) THEN
RECT_P(G0);
TEXTOUT_P(symbol(B),G0,180,2,3,RGB(255,105,0));
TEXTOUT_P(l2[B],G0,7,2,3,RGB(255,0,110));
TEXTOUT_P(B,G0,210,2,3,RGB(38,127,0));
IF (B==43 OR B==61 OR (93≤B AND B≤112)) THEN TEXTOUT_P("Elément de synthèse",G0,10,22,1); ELSE IF l8[B]<26 AND l8[B] THEN TEXTOUT_P("Etat gazeux à 25°C",G0,10,22,1); END;
IF (l7[B]<26 AND l7[B] AND l8[B]>25) THEN TEXTOUT_P("Etat liquide à 25°",G0,10,22,1); END;
IF l7[B]>26 OR B==33 THEN TEXTOUT_P("Etat solide à 25°C",G0,10,22,1); END;
TEXTOUT_P("Masse molaire: ",G0,10,34,1,RGB(0,124,240));
TEXTOUT_P(l3[B]+" g.mol",G0,105,34,1);
TEXTOUT_P("Densité: ",G0,10,46,1,RGB(0,124,240));
TEXTOUT_P(IFTE(l4[B],l4[B],"inconnu"),G0,105,46,1);
TEXTOUT_P("Rayon atomique:",G0,10,58,1,RGB(0,124,240));
TEXTOUT_P(IFTE(l5[B],l5[B]+" pm","inconnu"),G0,105,58,1);
TEXTOUT_P("Electronégativité: ",G0,10,70,1,RGB(0,124,240));
TEXTOUT_P(IFTE(l6[B],l6[B],"inexistante ou inconnue"),G0,105,70,1);
TEXTOUT_P("Point de fusion:",G0,10,82,1,RGB(0,124,240));
TEXTOUT_P(IFTE(l7[B],l7[B]+"°C","inexistant ou inconnu"),G0,105,82,1);
TEXTOUT_P("Point d'ébullition:",G0,10,94,1,RGB(0,124,240));
TEXTOUT_P(IFTE(l8[B],l8[B]+"°C","inconnu"),G0,105,94,1);
TEXTOUT_P("Découverte:",G0,10,106,1,RGB(0,124,240));
TEXTOUT_P(IFTE(l9[B],l9[B],"antique"),G0,105,106,1);
TEXTOUT_P("҉ Elements ҉ HP Prime",G0,200,215,1,RGB(255,0,110));
TEXTOUT_P("Par Marc Coudriau, Mickaël Nicotera & Tim Wessman",G0,70,228,1,RGB(65,65,65));
elements()
END;
END;
if size(touch(1)) then //something in our mouse
case
if touch(1,5)==0 then //touch
local el:= FindEl(touch(1,1),touch(1,2));
if el then
selEl:=el;
DrawTable();
end;
end;
if touch(1,5)==1 then "incomplete" end;
if touch(1,5)==2 then //drag
offset:=touch(1,3)-touch(1,1);
DrawTable();
end;
if touch(1,5)==3 then return "stretch"; end;
if touch(1,5)==4 then return "rotate"; end;
if touch(1,5)==5 then return "long click"; end;
end;
end;
END;
END;
Edited: 20 Oct 2013, 3:26 a.m.
|