/* ======================= Händelse ("Main") ============================== */ //--------------------------------------------------------------------------- #pragma hdrstop #include "mathobj.h" //Klassdeklaration för matteobjekt #include #include #include "MatteUnit.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TStartWindow *StartWindow; /*--------------------------------------------------------------------------- Globala variabler ---------------------------------------------------------------------------*/ char cOperator; //Aktuell operatorn int nLevel; //Aktuell svårighetsgrad int nErrors = 0; //Antal fel Mathobj m; //Instans av vår matteklass /*--------------------------------------------------------------------------- Händelser ----------------------------------------------------------------------------*/ //--------------------Vid skapande av fönster-------------------------------- __fastcall TStartWindow::TStartWindow(TComponent* Owner) : TForm(Owner) { randomize(); //Slumpa slumpfröet BubblaLabel->Caption=" ?"; //Myran säger något } //---------------------Plus-knapp tryckt------------------------------------- void __fastcall TStartWindow::AddButtonClick(TObject *Sender) { cOperator='+'; //Håll reda på operator Choice1Group->Hide(); //Göm 1:a valet Choice2Group->Show(); //Visa 2:a valet } //---------------------Minus-knapp tryckt------------------------------------ void __fastcall TStartWindow::SubButtonClick(TObject *Sender) { cOperator='-'; //Håll reda på operator Choice1Group->Hide(); //Göm 1:a valet Choice2Group->Show(); //Visa 2:a valet } //---------------------Mult.-knapp tryckt------------------------------------ void __fastcall TStartWindow::MultButtonClick(TObject *Sender) { cOperator='*'; //Håll reda på operator Choice1Group->Hide(); //Göm 1:a valet Choice2Group->Show(); //Visa 2:a valet } //---------------------Div.-knapp tryckt------------------------------------- void __fastcall TStartWindow::DivButtonClick(TObject *Sender) { cOperator='/'; //Håll reda på operator Choice1Group->Hide(); //Göm 1:a valet Choice2Group->Show(); //Visa 2:a valet } //----------------------Blandat-knapp tryckt--------------------------------- void __fastcall TStartWindow::MixButtonClick(TObject *Sender) { cOperator='?'; //Håll reda på operator Choice1Group->Hide(); //Göm 1:a valet Choice2Group->Show(); //Visa 2:a valet } //---------------------Lätt-knapp tryckt------------------------------------- void __fastcall TStartWindow::EasyButtonClick(TObject *Sender) { nLevel = 1; //Håll reda på svårighetsgrad Choice2Group->Hide(); //Göm 2:a valet CountGroup->Show(); //Visa räkne-lådan AnsEdit->SetFocus(); //Sätter fokus i textrutan if (cOperator=='+') m.DoAdd(1); //Skapa plus-tal, nivå 1 else if (cOperator=='-') m.DoSub(1); //Skapa minus-tal, nivå 1 else if (cOperator=='*') m.DoMult(1); //Skapa mult.-tal, nivå 1 else if (cOperator=='/') m.DoDiv(1); //Skapa div.-tal, nivå 1 else if (cOperator=='?') m.DoMix(1); //Skapa blandat-tal, nivå 1 //Hämta siffervärden från matteobjektet och visa för användaren: FirstLabel->Caption=AnsiString(m.DoGet1st()); OperatorLabel->Caption=AnsiString(m.DoGetOp()); SecondLabel->Caption=AnsiString(m.DoGet2nd()); //Myran säger något: BubblaLabel->Caption=" Nå?"; } //----------------------Medel-knapp tryckt----------------------------------- void __fastcall TStartWindow::AverageButtonClick(TObject *Sender) { nLevel = 2; //Håll reda på svårighetsgrad Choice2Group->Hide(); //Göm 2:a valet CountGroup->Show(); //Visa räkne-lådan AnsEdit->SetFocus(); //Sätter fokus i textrutan if (cOperator=='+') m.DoAdd(2); //Skapa plus-tal, nivå 2 else if (cOperator=='-') m.DoSub(2); //Skapa minus-tal, nivå 2 else if (cOperator=='*') m.DoMult(2); //Skapa mult.-tal, nivå 2 else if (cOperator=='/') m.DoDiv(2); //Skapa div.-tal, nivå 2 else if (cOperator=='?') m.DoMix(2); //Skapa blandat-tal, nivå 2 //Hämta siffervärden från matteobjektet och visa för användaren: FirstLabel->Caption=AnsiString(m.DoGet1st()); OperatorLabel->Caption=AnsiString(m.DoGetOp()); SecondLabel->Caption=AnsiString(m.DoGet2nd()); //Myran säger något: BubblaLabel->Caption=" Nå?"; } //--------------------Svår-knapp tryckt--------------------------------------- void __fastcall TStartWindow::DifficultButtonClick(TObject *Sender) { nLevel = 3; //Håll reda på svårighetsgrad Choice2Group->Hide(); //Göm 2:a valet CountGroup->Show(); //Visa räkne-låda AnsEdit->SetFocus(); //Sätter fokus på textruta if (cOperator=='+') m.DoAdd(3); //Skapa plus-tal, nivå 3 else if (cOperator=='-') m.DoSub(3); //Skapa minus-tal, nivå 3 else if (cOperator=='*') m.DoMult(3); //Skapa mult.-tal, nivå 3 else if (cOperator=='/') m.DoDiv(3); //Skapa div.-tal, nivå 3 else if (cOperator=='?') m.DoMix(3); //Skapa blandat-tal, nivå 3 //Hämta siffervärden från matteobjektet och visa för användaren: FirstLabel->Caption=AnsiString(m.DoGet1st()); OperatorLabel->Caption=AnsiString(m.DoGetOp()); SecondLabel->Caption=AnsiString(m.DoGet2nd()); //Myran säger något: BubblaLabel->Caption=" Nå?"; } //------------------Val-knapp tryckt---------------------------------------- void __fastcall TStartWindow::SettingsBitBtnClick(TObject *Sender) { CountGroup->Hide(); //Göm räkne-låda Choice1Group->Show(); //Visa 1:a valet Choice2Group->Hide(); //Visa 2:a valet BubblaLabel->Caption=" ?"; //Myran säger något } //-----------------Svara-knapp tryckt--------------------------------------- void __fastcall TStartWindow::AnsButtonClick(TObject *Sender) { //---------------Användaren har svarat korrekt------------------- if ((AnsiString)m.DoGetAns()==AnsEdit->Text) { nErrors=0; //Noll fel AnsEdit->Text=""; //Töm textrutan BubblaLabel->Caption=" Bravo!"; //Myran ger beröm CountGroup->Caption="Räkna..."; //Räknelådans text ändras if (cOperator=='+') //Plus { m.DoAdd(nLevel); //Skapa tal FirstLabel->Caption=(AnsiString)m.DoGet1st(); //Uppdatera text SecondLabel->Caption=(AnsiString)m.DoGet2nd(); //Uppdatera text } else if (cOperator=='-') //Minus { m.DoSub(nLevel); //Skapa FirstLabel->Caption=(AnsiString)m.DoGet1st(); //Uppdatera text SecondLabel->Caption=(AnsiString)m.DoGet2nd(); //Uppdatera text } else if (cOperator=='*') //Mult. { m.DoMult(nLevel); //Skapa FirstLabel->Caption=(AnsiString)m.DoGet1st(); //Uppdatera text SecondLabel->Caption=(AnsiString)m.DoGet2nd(); //Uppdatera text } else if (cOperator=='/') //Div. { m.DoDiv(nLevel); //Skapa FirstLabel->Caption=(AnsiString)m.DoGet1st(); //Uppdatera text SecondLabel->Caption=(AnsiString)m.DoGet2nd(); //Uppdatera text } else if (cOperator=='?') //Blandat { m.DoMix(nLevel); //Skapa FirstLabel->Caption=(AnsiString)m.DoGet1st(); //Uppdatera text OperatorLabel->Caption=(AnsiString)m.DoGetOp(); //Uppdatera text SecondLabel->Caption=(AnsiString)m.DoGet2nd(); //Uppdatera text } } //-------------Användaren har gett inkorrekt svar----------------------- else { nErrors++; //Öka antal fel if (nErrors>=3) //Om antal fel större/lika med 3, ger myran svaret BubblaLabel->Caption="Psst... " + (AnsiString)m.DoGetAns(); else //Annars säger myran bara "Oj då!" BubblaLabel->Caption=" Oj då!"; //Ändra räkne-lådans text CountGroup->Caption="Försök igen... (Endast siffror!)"; } AnsEdit->SetFocus(); //Sätter fokus på textrutan } //-------------------Avsluta-knapp tryckt------------------------------------ void __fastcall TStartWindow::QuitBitBtnClick(TObject *Sender) { Close(); //Stänger programmet } //-------------------Hjälp-knapp tryckt-------------------------------------- void __fastcall TStartWindow::HelpBitBtnClick(TObject *Sender) { Application->HelpFile = "mattelek.hlp"; //Bestämmer sökvägen Application->HelpCommand(HELP_CONTENTS, 0); //Visa hjälpen } //---------------------------------------------------------------------------