化学家1.1.0更新:
1,更新了烧杯模式你可以更自由的混合化学物质!
#include<iostream>
#include<windows.h>
#include<stdio.h>
#include<conio.h>
#define cls system("cls");
#define c(p) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),p);
using namespace std;
string s1,s2,c1;
int f;
COORD pos;
string ss;
struct S
{
int O2,H2,H2O,CaO,Ca_OH_2,Ca,CaO2,HCl,CaCl2;
bool RS;
};
S m;
void fanying();
void s();
void w(int x,int y)
{
pos.X=x;
pos.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}
void b()
{
system("color 4C");
Sleep(30);
system("color 0F");
system("color 4C");
Sleep(30);
system("color 0F");
}
void jiaocheng()
{
int x;
x=MessageBox(GetForegroundWindow(),"============气体============\nH2(氢气) O2(氧气) F2(氟气) N2(氮气) NH3(氨气)\nCO2(二氧化碳) CO(一氧化碳)\n============液体============\nH2O2(双氧水) HCl(盐酸) H2SO4(硫酸) \nH2O(水) C2H5OH(酒精) \n============固体============\nNaOH(氢氧化钠)\nCaO(氧化钙)\nP(磷) C6H6(苯) CuO(氧化铜)\nAl(OH)3(氢氧化铝) BaCl2(氯化钡)\nFeCl2(氯化亚铁) 3NaAlO2(偏铝酸钠)\n AlCl3(氯化铝) H2CO3(碳酸) BaO(氧化钡)\nAl(铝) Si(硅) C(碳) Mg(镁)","化学符号教程",1);
x=MessageBox(GetForegroundWindow(),"如果想空出其中的一个栏位,请输入'NONE' \n如果你输入的化学元素是溶液,那就以 [化学元素名称]+H2O的格式输入\n例:KI(碘化钾)溶液 输入时表示为'KI+H2O'\n 作弊码:\nHELP:帮助\nELETAB:元素周期表\nBAKSOPEN:自由模式","输入教程",1);
x=MessageBox(GetForegroundWindow(),"部分化学反应:\n2H2O →通电→ 2H2↑O2↑\n H2O+CaO === H2O+Ca(OH)2\nH2+O2 =点燃= H2O\n3HCl+Al(OH)3 === 3H2O+AlCl3\nCaO+2HCl === CaCl2\n剩下的自己摸索哦","反应教程",1);
printf("%d\n",x);
fanying();
}
void e()
{
cls;
printf("H He\n");
printf("Li Be B C N O F Ne\n");
printf("Na Mg Al Si P S Cl Ar\n");
printf("K Ca Sc Ti V Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr\n");
printf("Rb Sr Y Zr Nb Mo Tc Ru Rh Pd Ag Cd In Sn Sb Te I Xe\n");
printf("Cs Ba Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn\n");
printf("Fr Ra Lf Db Sg Bh Hs Mt Ds Rg Cn Nh Fl Mc Lv Ts Og\n");
printf("La ~ Lu La Ce Pr Nd Pm Sm Eu Gd Td Dy Ho Er Tm Yb Lu\n");
printf("Ac ~ Lr Ac Th Pa U Np Pu (未搭建完成)");
getch();
fanying();
}
void sbjc()
{
int x=MessageBox(GetForegroundWindow(),"烧杯模式目前支持的化学物质:\nH2(氢气) O2(氧气) H2O(水) Ca(钙) \nCaO2(二氧化钙) Ca(OH)2(氢氧化钙) CaO(氧化钙) HCl(盐酸)\n提示:\n反应可能不健全,发现问题告诉坐着QQ2099008248来登上光荣榜!","烧杯模式",1);
printf("%d\n",x);
}
void s()
{
cls;
sbjc();
while(1)
{
cls;
w(0,3);// H2(氢气) O2(氧气) H2O(水) Ca(钙) CaO2(二氧化钙) Ca(OH)2(氢氧化钙) CaO(氧化钙)
if(m.H2>0)printf("H2(氢气):%d\n",m.H2);
if(m.O2>0)printf("O2(氧气):%d\n",m.O2);
if(m.H2O>0)printf("H2O(水):%d\n",m.H2O);
if(m.Ca>0)printf("Ca(钙):%d\n",m.Ca);
if(m.HCl>0)printf("HCl(盐酸):%d\n",m.HCl);
if(m.CaCl2>0)printf("CaCl2(氯化钙):%d\n",m.CaCl2);
if(m.Ca>0)printf("Ca(钙):%d\n",m.Ca);
if(m.CaO2)printf("CaO2(二氧化钙):%d\n",m.CaO2);
if(m.Ca_OH_2>0)printf("Ca(OH)2(氢氧化钙):%d\n",m.Ca_OH_2);
if(m.CaO>0)printf("CaO(氧化钙):%d\n",m.CaO);
if(m.RS==true){c(64);printf("!_烧杯中正在燃烧-!\n");c(15);}
w(0,0);
printf("向烧杯中加入:___________(写化学式)\n");
printf("反应:______________\n");
printf("向烧杯中加入'RS'可以燃烧 加入'MS'灭火\n");
w(14,0);
cin>>ss;
if(ss=="H2")m.H2++;
else if(ss=="O2")m.O2++;
else if(ss=="CaO")m.CaO++;
else if(ss=="H2O")m.H2O++;
else if(ss=="Ca")m.Ca++;
else if(ss=="CaO2")m.CaO2++;
else if(ss=="CaCl2")m.CaCl2++;
else if(ss=="Ca(OH)2")m.Ca_OH_2++;
else if(ss=="HCl")m.HCl++;
else if(ss=="RS")m.RS=true;
else if(ss=="MS")m.RS=false;
else if(ss=="HELP")sbjc();
if(m.H2>=2&&m.O2>=1&&m.RS==true)
{
while(1)
{
if((m.H2>=2&&m.O2>=1)==false)break;
m.H2-=2;
m.O2-=1;
m.H2O++;
}
w(5,1);
c(240);printf("2H2+O2 =点燃= 2H2O");c(15);
Sleep(1000);
}//2H2+O2 =点燃= 2H2O
else if(m.H2O>=1&&m.CaO>=1)
{
while(1)
{
if((m.H2O>=1&&m.CaO>=1)==false)break;
m.H2O-=1;
m.CaO-=1;
m.Ca_OH_2++;
}
w(5,1);
c(240);printf("H2O+CaO === H2O+Ca(OH)2");c(15);
Sleep(1000);
}//H2O+CaO === H2O+Ca(OH)2
else if(m.H2>=1&&m.CaO>=1&&m.RS==true)
{
while(1)
{
if((m.H2>=1&&m.CaO>=1)==false)break;
m.H2-=1;
m.CaO-=1;
m.Ca++;
m.H2O++;
}
w(5,1);
c(240);printf("H2+CaO =高温= Ca+H2O");c(15);
Sleep(1000);
}//H2+CaO =高温= Ca+H2O
else if(m.Ca>=1&&m.O2>=1&&m.RS==true)
{
while(1)
{
if((m.Ca>=1&&m.O2>=1)==false)break;
m.O2-=1;
m.Ca-=1;
m.CaO2++;
}
w(5,1);
c(240);printf("Ca+O2 =燃烧= CaO2");c(15);
Sleep(1000);
}//Ca+O2==燃烧==CaO2
else if(m.CaO2>=2&&m.H2O>=2)
{
while(1)
{
if((m.CaO2>=2&&m.H2O>=2)==false)break;
m.CaO2-=2;
m.H2O-=2;
m.Ca_OH_2+=2;
m.O2+=2;
}
w(5,1);
c(240);printf("2CaO2+2H2O === Ca(OH)2+O2");c(15);
Sleep(1000);
}//2CaO2+2H2O=2Ca(OH)2+O2
else if(m.Ca>=1&&m.H2O>=2)
{
while(1)
{
if((m.Ca>=1&&m.H2O>=2)==false)break;
m.Ca-=1;
m.H2O-=2;
m.H2+=2;
m.Ca_OH_2++;
}
w(5,1);
c(240);printf("Ca+2H2O == Ca(OH)2+H2↑");c(15);
Sleep(1000);
}Ca+2H2O == Ca(OH)2+H2↑
else if(m.HCl>=2&&m.CaO>=1)
{
while(1)
{
if((m.HCl>=2&&m.CaO>=1)==false)break;
m.CaO-=1;
m.HCl-=2;
m.CaO-=1;
m.H2O++;
m.CaCl2++;
}
w(5,1);
c(240);printf("CaO+2HCl === CaCl2+H2O");c(15);
Sleep(1000);
}//CaO+2HCl=CaCl2+H2O
else if(m.HCl>=2&&m.Ca_OH_2>=1)
{
while(1)
{
if((m.HCl>=2&&m.Ca_OH_2>=1)==false)break;
m.HCl-=2;
m.Ca_OH_2-=1;
m.H2O+=2;
m.CaCl2++;
}
w(5,1);
c(240);printf("2HCl+Ca(OH)2 === CaCl2+2H2O");c(15);
Sleep(1000);
}//2HCl+Ca(OH)2==CaCl2+2H2O
}
}
void fanying()
{
while(1)
{
cls;
printf("请输入化学物质的化学式");
c(10);
printf("[如果想弹出教程,请输入'HELP']\n");
c(15);
printf("物质1:______________ [ ]\n");
printf("物质2:______________ [ ]\n");
printf("请选择反应:按1通电 按2混合 按3加热 按4降温 按5燃烧\n");
printf("请选择反应:按6催化 \n");
printf("[__]");
w(8,1);
cin>>s1;
if(s1=="H2O")w(23,1),printf("水");
else if(s1=="NONE")w(23,1),printf("空"),w(8,1),printf("____________");
else if(s1=="H2SO4")w(23,1),printf("硫酸");
else if(s1=="O2")w(23,1),printf("氧气");
else if(s1=="H2")w(23,1),printf("氢气");
else if(s1=="NaOH")w(23,1),printf("氢氧化钠");
else if(s1=="NaCl")w(23,1),printf("氯化钠");
else if(s1=="CaO")w(23,1),printf("氧化钙");
else if(s1=="Cl2")w(23,1),printf("氯气");
else if(s1=="C6H6")w(23,1),printf("苯");
else if(s1=="C")w(23,1),printf("碳");
else if(s1=="Na")w(23,1),printf("钠");
else if(s1=="Mg")w(23,1),printf("镁");
else if(s1=="Al")w(23,1),printf("铝");
else if(s1=="CuO")w(23,1),printf("氧化铜");
else if(s1=="HCl")w(23,1),printf("盐酸");
else if(s1=="CaCO3")w(23,1),printf("碳酸钙");
else if(s1=="H2CO3")w(23,1),printf("碳酸");
else if(s1=="H2O2")w(23,1),printf("双氧水");
else if(s1=="CO2")w(23,1),printf("二氧化碳");
else if(s1=="CO")w(23,1),printf("一氧化碳");
else if(s1=="HCl")w(23,1),printf("盐酸");
else if(s1=="F2")w(23,1),printf("氟气");
else if(s1=="C2H5OH")w(23,1),printf("酒精");
else if(s1=="Al(OH)3")w(23,1),printf("氢氧化铝");
else if(s1=="C2H5OH+H2O")w(23,1),printf("酒精溶液");
else if(s1=="HClO")w(23,1),printf("次氯酸");
else if(s1=="H2S")w(23,1),printf("硫化氢");
else if(s1=="BaCl2")w(23,1),printf("氯化钡");
else if(s1=="KMnO4")w(23,1),printf("高锰酸钾");
else if(s1=="Si")w(23,1),printf("硅");
else if(s1=="N2")w(23,1),printf("氮气");
else if(s1=="BaO")w(23,1),printf("氧化钡");
else if(s1=="NH3")w(23,1),printf("氨气");
else if(s1=="Fe2O3")w(23,1),printf("三氧化二铁");
else if(s1=="P")w(23,1),printf("磷");
else if(s1=="ELETAB")e();
else if(s1=="BAKSOPEN")s();
else if(s1=="HELP")jiaocheng();
else w(23,1),printf("未知物质");
w(8,2);
cin>>s2;
if(s2=="H2O")w(23,2),printf("水");
else if(s2=="NONE")w(23,2),printf("空"),w(8,2),printf("____________");
else if(s2=="H2SO4")w(23,2),printf("硫酸");
else if(s2=="O2")w(23,2),printf("氧气");
else if(s2=="H2")w(23,2),printf("氢气");
else if(s2=="NaOH")w(23,2),printf("氢氧化钠");
else if(s2=="NaCl")w(23,2),printf("氯化钠");
else if(s2=="CaO")w(23,2),printf("氧化钙");
else if(s2=="Cl2")w(23,2),printf("氯气");
else if(s2=="C6H6")w(23,2),printf("苯");
else if(s2=="C")w(23,2),printf("碳");
else if(s2=="Na")w(23,2),printf("钠");
else if(s2=="Mg")w(23,2),printf("镁");
else if(s2=="Al")w(23,2),printf("铝");
else if(s2=="CuO")w(23,2),printf("氧化铜");
else if(s2=="HCl")w(23,2),printf("盐酸");
else if(s2=="CaCO3")w(23,2),printf("碳酸钙");
else if(s2=="H2CO3")w(23,2),printf("碳酸");
else if(s2=="H2O2")w(23,2),printf("双氧水");
else if(s2=="CO2")w(23,2),printf("二氧化碳");
else if(s2=="CO")w(23,2),printf("一氧化碳");
else if(s2=="HCl")w(23,2),printf("盐酸");
else if(s2=="F2")w(23,2),printf("氟气");
else if(s2=="C2H5OH")w(23,2),printf("酒精");
else if(s2=="Al(OH)3")w(23,2),printf("氢氧化铝");
else if(s2=="C2H5OH+H2O")w(23,2),printf("酒精溶液");
else if(s2=="HClO")w(23,2),printf("次氯酸");
else if(s2=="H2S")w(23,2),printf("硫化氢");
else if(s1=="BaCl2")w(23,2),printf("氯化钡");
else if(s2=="KMnO4")w(23,2),printf("高锰酸钾");
else if(s2=="Si")w(23,2),printf("硅");
else if(s2=="N2")w(23,2),printf("氮气");
else if(s2=="BaO")w(23,2),printf("氧化钡");
else if(s2=="NH3")w(23,2),printf("氨气");
else if(s2=="Fe2O3")w(23,2),printf("三氧化二铁");
else if(s2=="P")w(23,2),printf("磷");
else if(s2=="ELETAB")e();
else if(s2=="BAKSOPEN")s();
else if(s2=="HELP")jiaocheng();
else w(23,2),printf("未知物质");
w(1,5);
cin>>f;
if(f==6)
{
printf("请输入催化剂:_____ [ ]\n");
w(14,6);
cin>>c1;
if(c1=="Ni")w(22,6),printf("镍");
else if(c1=="MnO2")w(22,6),printf("二氧化锰");
else w(22,6),printf("未知物质");
w(1,7);
}
if((s1=="H2O"&&s2=="H2O"&&f==1)||(s1=="NONE"&&s2=="H2O"&&f==1)||(s1=="H2O"&&s2=="NONE"&&f==1))
{
printf("本次反应生成物质: H2(氢气) O2(氧气)\n");
printf("过程:2H2O →通电→ 2H2↑O2↑\n");
}
else if((s1=="H2O"&&s2=="H2SO4"&&f==2)||(s1=="H2SO4"&&s2=="H2O"&&f==2))
{
printf("本次反应生成物质: H2SO4+H2O(稀硫酸)\n");
printf("过程:H2O+H2SO4 → H2O+H2SO4\n");
}
else if((s1=="C6H6"&&s2=="H2"&&f==6&&c1=="Ni")||(s1=="H2"&&s2=="C6H6"&&f==6&&c1=="Ni"))
{
printf("本次反应生成物质: C6H12(环已烷)\n");
printf("过程:C6H6+3H2 →Ni△→ C6H12\n");
}
else if((s1=="H2O"&&s2=="CaO"&&f==2)||(s1=="CaO"&&s2=="H2O"&&f==2))
{
printf("本次反应生成物质: Ca(OH)2(氢氧化钙)\n");
printf("过程:H2O+CaO === H2O+Ca(OH)2\n");
}
else if((s1=="Na"&&s2=="Cl"&&f==5)||(s1=="Cl"&&s2=="Na"&&f==5))
{
printf("本次反应生成物质: NaCl(氯化钠)\n");
printf("过程:2Na+Cl2 =点燃= 2NaCl\n");
printf("备注:钠在氯气中燃烧\n");
}
else if((s1=="NaCl"&&s2=="H2O"&&f==2)||(s1=="H2O"&&s2=="NaCl"&&f==2))
{
printf("本次反应生成物质: NaCl+H2O(盐水)\n");
printf("过程:NaCl+H2O === NaCl+H2O\n");
printf("备注:氯化钠溶解于水中\n");
}
else if((s1=="Fe"&&s2=="O2"&&f==5)||(s1=="O2"&&s2=="Fe"&&f==5))
{
printf("本次反应生成物质: Fe3O4(四氧化三铁)\n");
printf("过程:3Fe+2O2 =点燃= Fe3O4\n");
printf("备注:铁在氧气中燃烧\n");
}
else if((s1=="CuO"&&s2=="H2"&&f==3)||(s1=="H2"&&s2=="CuO"&&f==3))
{
printf("本次反应生成物质: Cu(单质铜) H2O(水)\n");
printf("过程:H2+CuO =高温= Cu+H2O\n");
printf("备注:氢气还原氧化铜\n");
}
else if((s1=="FATHER"&&s2=="LOVE"&&f==2)||(s1=="LOVE"&&s2=="FATHER"&&f==2))
{
cls;
printf("When you blow the conch, I will come to your side\n");
}
else if((s1=="CaO"&&s2=="HCl"&&f==2)||(s1=="HCl"&&s2=="CaO"&&f==2))
{
printf("本次反应生成物质: CaCl2(氯化钙)\n");
printf("过程:CaO+2HCl === CaCl2\n");
}
else if((s1=="H2"&&s2=="O2"&&f==5)||(s1=="O2"&&s2=="H2"&&f==5))
{
b();
printf("本次反应生成物质: H2O(水)\n");
printf("过程:H2+O2 =点燃= H2O\n");
}
else if((s1=="H2CO3"&&s2=="NONE"&&f==3)||(s1=="NONE"&&s2=="H2CO3"&&f==3)||(s1=="H2CO3"&&s2=="H2CO3"&&f==3))
{
printf("本次反应生成物质: H2O(水) CO2(二氧化碳)\n");
printf("过程:H2CO3 === H2O+CO2\n");
}
else if((s1=="H2O2"&&s2=="NONE"&&f==6)||(s1=="NONE"&&s2=="H2O2"&&f==6)||(s1=="H2O2"&&s2=="H2O2"&&f==6))
{
printf("本次反应生成物质: H2O(水) O2(氧气)\n");
printf("过程:2H2O2 →MnO2△→ 2H2O+O2↑\n");
}
else if((s1=="CO2"&&s2=="NaOH"&&f==7)||(s1=="NaOH"&&s2=="CO2"&&f==7))
{
printf("本次反应生成物质: NaHCO3(小苏打)\n");
printf("过程:CO2+NaOH === NaHCO3\n");
}
else if((s1=="F2"&&s2=="H2"&&f==2)||(s1=="H2"&&s2=="F2"&&f==2))
{
b();
printf("本次反应生成物质: HF(氟化氢)\n");
printf("过程:H2+F2 === 2HF\n");
}
else if((s1=="Mg"&&s2=="O2"&&f==5)||(s1=="O2"&&s2=="Mg"&&f==5))
{
b();
printf("本次反应生成物质: 2MgO(氧化镁)\n");
printf("过程:2Mg+O2 =点燃= 2MgO\n");
printf("备注:镁在空气中燃烧");
}
else if((s1=="Al(OH)3"&&s2=="HCl"&&f==2)||(s1=="HCl"&&s2=="Al(OH)3"&&f==2))
{
printf("本次反应生成物质: AlCl3(氯化铝) 水(H2O)\n");
printf("过程:3HCl+Al(OH)3 === 3H2O+AlCl3\n");
}
else if((s1=="Cu"&&s2=="O2"&&f==3)||(s1=="O2"&&s2=="Cu"&&f==3))
{
printf("本次反应生成物质: CuO(氧化铜)\n");
printf("过程:O2+2Cu =加热= 2CuO\n");
}
else if((s1=="H2SO4"&&s2=="BaCl2"&&f==2)||(s1=="BaCl2"&&s2=="H2SO4"&&f==2))
{
printf("本次反应生成物质: BaSO4(硫酸钡) HCl(盐酸)\n");
printf("过程:H2SO4+BaCl2 === BaSO4↓+2HCl\n");
}
else if((s1=="H2O2"&&s2=="CaO"&&f==2)||(s1=="CaO"&&s2=="H2O2"&&f==2))
{
printf("本次反应生成物质: CaO2(过氧化钙) H2O(水)\n");
printf("过程:CaO+H2O2 === CaO2+H2O\n");
}
else if((s1=="C"&&s2=="CaO"&&f==3)||(s1=="CaO"&&s2=="C"&&f==3))
{
printf("本次反应生成物质: CaC2(碳化钙) CO(一氧化碳)\n");
printf("过程:CaO+3C =高温= CaC2+CO\n");
}
else if((s1=="HClO"&&s2=="H2S"&&f==2)||(s1=="H2S"&&s2=="HClO"&&f==2))
{
printf("本次反应生成物质: HCl(盐酸) S(硫) H2O(水)\n");
printf("过程:HClO+H2S === HCl+S↓+H2O\n");
}
else if((s1=="BaO"&&s2=="HCl"&&f==2)||(s1=="HCl"&&s2=="BaO"&&f==2))
{
printf("本次反应生成物质: BaCl2(氯化钡) H2O(水)\n");
printf("过程:BaO+HCl === BaCl+H2O\n");
}
else if((s1=="S"&&s2=="O2"&&f==5)||(s1=="O2"&&s2=="S"&&f==5))
{
printf("本次反应生成物质: SO2(二氧化硫)\n");
printf("过程:S+O2 =点燃= SO2\n");
printf("备注:硫粉在空气中燃烧");
}
else if((s1=="C"&&s2=="Fe2O3"&&f==3)||(s1=="Fe2O3"&&s2=="C"&&f==3))
{
printf("本次反应生成物质: Fe(单质铁) CO(一氧化碳)\n");
printf("过程:3C+ 2Fe2O3 =高温= 4Fe + 3CO2↑\n");
printf("备注:焦炭还原氧化铁");
}
else if((s1=="O2"&&s2=="P"&&f==5)||(s1=="P"&&s2=="O2"&&f==5))
{
printf("本次反应生成物质: P2O5(五氧化二磷)\n");
printf("过程:4P+5O2 =点燃= 2P2O5\n");
printf("备注:红磷在空气中燃烧");
}
//CaO + 3C ==高温== CaC2 + CO
//S+O2=点燃=SO2
// 焦炭还原氧化铁:3C+ 2Fe2O3 高温 4Fe + 3CO2↑
//红磷在空气中燃烧:4P + 5O2 点燃 2P2O5
else
{
printf("本次未生成新物质![按任意键跳过]\n");
printf("可能是反应不够健全,联系作者QQ:2099008248,他会尽快修改!\n");
}
getch();
}
}
int main()
{
system("title: 化学家 V1.1.0正式版 Made By G.idea");
c(15);
system("color 9F");
printf(">>欢迎来到化学实验室!<<\n [-按任意键开始-]\n [-按'1'教程-]\n ");c(496);printf("[烧杯模式按5]高自由度!\n");c(15);printf("版权归 TAN & 格桑喜绕所有");
int sg=getch();
int x;
x=MessageBox(GetForegroundWindow(),"1,更新了烧杯模式,超高自由度!!!\n2,更新了烧杯模式,超高自由度!!!\n3,更新了烧杯模式,超高自由度!!!\n4,更新了烧杯模式,超高自由度!!!\n 作者:TAN\n插件策划:TAN's Father\n光荣榜:\n{伴笙浮梦}为本游戏增加化学反应\n{呔!}为本游戏提供知识技术支持\n{Error 404}为游戏指出细节问题\n{Minecraft 电琦菌}为本游戏找出错误","更新公告(Official version V1.1.0)",1);
printf("%d\n",x);
system("color 0F");
if(sg=='1')
{
cls;
jiaocheng();
fanying();
cls;
}
else if(sg=='5')s();
else
{
fanying();
cls;
}
}