Процедуры формы Form1 (модуля Unit1)
int z,c,i,k,y,x,t,a,g,w,u,l,x1,y1; String f,p,b,s,e; // объявление переменных
void __fastcall TForm1::FormCreate(TObject *Sender) //создание формы
{Series1->Add(10,"ПЕРЕХОД ХОДА",clSilver); // прорисовка барабана
Series1->Add(10,"*2",clBlue); // (диаграммы)
Series1->Add(10,"*4",clLime); Series1->Add(10,"500 очков",clFuchsia);
Series1->Add(10,"750 очков",clRed); Series1->Add(10,"100 очков",clWhite);
Series1->Add(10,"250 очков",clYellow); Series1->Add(10,"1000 очков",clGreen);
}
void __fastcall TForm1::Button1Click(TObject *Sender) / /кнопка «Выход»
{Close(); // процедура закрытия программы }
void __fastcall TForm1::Button3Click(TObject *Sender) // кнопка «Загадать»
{Form2->Visible=True; Form2->SetFocus(); Form1->Visible=false;
Button3->Visible=false; // скрывается кнопка «Загадать»
Button6->Visible=true; // визуализация кнопки "Вращать барабан" ,
Button4->Visible=true; // визуализация кнопки "Назвать слово"
Button5->Visible=true; // визуализация кнопки «Подтвердите выбор»
Label2->Visible=true; Label4->Visible=true;
Label5->Visible=true; // делает видимыми надписи
Label5->Caption=Label5->Caption+"0"; Label6->Visible=true;
Label6->Caption=Label6->Caption+"0";
Edit1->Visible=true; // делает видимым поле для ввода буквы
Edit1->Enabled=false; // блокируется поле для ввода буквы
c=f.Length(); // запоминается длина слова
for (i=1;i<=c;i++) // вывод соответствующего числа
{switch (i) // компонентов StaticText
{case 1: StaticText1->Visible=true; break;
case 2: StaticText2->Visible=true; break;
case 3: StaticText3->Visible=true; break;
case 4: StaticText4->Visible=true; break;
case 5: StaticText5->Visible=true; break;
case 6: StaticText6->Visible=true; break;
case 7: StaticText7->Visible=true; break;
case 8: StaticText8->Visible=true; break;
case 9: StaticText9->Visible=true; break;
case 10: StaticText10->Visible=true; break;}
}
}
void __fastcall TForm1::Button4Click(TObject *Sender) //кн.»Назвать слово»
{Button2->Visible=true;
Edit2->Visible=true; // делает видимым поле для ввода слова
Edit2->SetFocus(); // устанавливает на него фокус
}
void __fastcall TForm1::Button5Click(TObject *Sender) // Вращать барабан
{if (Label4->Caption=="Игрок1, Ваш ход") g=1;
else g=2; // запоминает, кто из игроков делает ход
Button4->Enabled=true; Edit1->Enabled=true;
Edit1->SetFocus(); // устанавливает курсор в поле для ввода буквы
Timer1->Enabled=true; // делает активным таймер
Edit1->Text=""; // очищает поле ввода буквы
}
void __fastcall TForm1::Button2Click(TObject *Sender)
{Edit2->Visible=false; // делает невидимым поле для ввода слова
Edit1->Enabled=true; s=Edit2->Text; // запоминается введенное слово
i=AnsiCompareText(f,s); // сравнение загаданного и введенного слов
if (i==0) // действия при вводе игроком верного ответа
{Label3->Caption="ВЫ УГАДАЛИ !!!"; Label4->Caption="";
Button4->Enabled=false; Button5->Enabled=false;}
else if(a==0) // a=0, если еще никто не пытался назвать слово
{if (g==1) //действия при вводе игроком 1 неверного ответа
{Label3->Caption="Игрок 1, Вы ошиблись";
Label4->Caption="Игрок 2, Вы должны назвать слово";
Edit2->Visible=true; Edit2->Text=""; Edit2->SetFocus(); a=a+1;
}
else
if (g==2) // действия при вводе игроком2 неверного ответа
{Label3->Caption="Игрок 2, Вы ошиблись";
Label4->Caption="Игрок 1, Вы должны назвать слово";
Edit2->Visible=true; Edit2->Text="";
Edit2->SetFocus(); a=a+1;
}
}
else // если один из игроков ввел неверное слово, то выводится
// сообщение об ошибке и другому предлагается назвать слово
{Label4->Visible=false; Edit2->Enabled=false;
Button5->Enabled=false;
if (Label4->Caption=="Игрок 1, Вы должны назвать слово")
Label3->Caption="Игрок 1, Вы ошиблись, игра окончена";
else if (Label4->Caption=="Игрок 2, Вы должны назвать слово")
Label3->Caption="Игрок 2, Вы ошиблись, игра окончена";
}
}
void __fastcall TForm1::Edit2Change(TObject *Sender)
{Button4->Enabled=false; // при вводе слова блокируются
Edit1->Enabled=false; } // кнопка «Назвать слово» и поле для ввода буквы
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{static x, y; // объявление статических переменных х и у
x=x1; y=y1; Button5->Enabled=false;// блокировка кнопки "Вращать барабан"
randomize(); z=random(150);
i=i+1; // в переменной считается количество поворотов
if (i<z)
{Series1->RotationAngle=Series1->RotationAngle+5; // поворот диаграммы
t=t+5;} // запоминание угла поворота
else
{switch (g) // переменная g показывает, кто сделал ход
{case 1: // проверяет, какой сектор выпал и производит
{if (t<=45) x=x+1000; // соответствующие действия
else if (t<=90) x=x+250; else if (t<=135) x=x+100;
else if (t<=180) x=x+750; else if (t<=225) x=x+500;
else if (t<=270) x=x*4; else if (t<=315) x=x*2;
else if (t<=360) {Label4->Caption="Игрок2, Ваш ход";
Button5->Enabled=true; Edit1->Enabled=false; i=-1;}
// переменная i – это флаг, указывающий на то, что выпал
// сектор «Переход хода» и не надо суммировать очки
if (i!=-1) {e=IntToStr(x); Label5->Caption="Игрок1, Ваш выигрыш - "+e;}}
// перевод количества набранных очков в строку для вывода на форму
break;
case 2:
{if (t<=45) y=y+1000; else if (t<=90) y=y+250;
else if (t<=135) y=y+100; else if (t<=180) y=y+750;
else if (t<=225) y=y+500; else if (t<=270) y=y*4;
else if (t<=315) y=y*2; else if (t<=360) {Label4->Caption="Игрок1, Ваш ход";
Button5->Enabled=true; Edit1->Enabled=false; i=-1; }
if (i!=-1){e=IntToStr(y); Label6->Caption="Игрок2, Ваш выигрыш - "+e;
}
} break;
}
Timer1->Enabled=false; // блокировка таймера
} x1=x; y1=y;
Series1->Clear(); // удаляет диаграмму
Series1->Add(10,"ПЕРЕХОД ХОДА",clSilver); // перерисовывает
Series1->Add(10,"*2",clBlue);// диаграмму, повернув ее на 5 град.
Series1->Add(10,"*4",clLime); Series1->Add(10,"500 очков",clFuchsia);
Series1->Add(10,"750 очков",clRed); Series1->Add(10,"100 очков",clWhite);
Series1->Add(10,"250 очков",clYellow); Series1->Add(10,"1000 очков",clGreen);
}
void __fastcall TForm1::Edit1Change(TObject *Sender)
{Button6->Enabled=true; Button5->Enabled=false;
// блокировка кнопок "Вращать барабан" и «Подтвердите выбор» }
void __fastcall TForm1::Button6Click(TObject *Sender) //кн. «Подтвердите»
{f=Form3->Edit1->Text; c=f.Length(); w=0;
b=Edit1->Text; // запоминается введенная буква
b=AnsiLowerCase(b); // возвращается буква в нижнем регистре
for (i=1;i<=c;i++) // в цикле введенная буква сравнивается с i-й
// буквой слова
{ p=f.SubString(i,1); // возвращает i-ю букву загаданного слова
p=AnsiLowerCase(p); // возвращается буква в нижнем регистре
if (p==b)
{u=u+1; // в переменной считается количество угаданных букв
w=w+1; // в переменной считается, сколько раз
// введенная буква встречается в слове
switch (i) // вывод угаданной буквы
{case 1: StaticText1->Caption=b; break;
case 2: StaticText2->Caption=b; break;
case 3: StaticText3->Caption=b; break;
case 4: StaticText4->Caption=b; break;
case 5: StaticText5->Caption=b; break;
case 6: StaticText6->Caption=b; break;
case 7: StaticText7->Caption=b; break;
case 8: StaticText8->Caption=b; break;
case 9: StaticText9->Caption=b; break;
case 10: StaticText10->Caption=b; break;}
}
}
Edit1->Enabled=false; Button5->Enabled=true;
if (w!=0)
switch (g)
{case 1: // умножение набранных очков, если буква // в слове встречается более одного раза
{x1=x1*w; e=IntToStr(x1);
Label5->Caption="Игрок1, Ваш выигрыш - "+e;} break;
case 2:
{y1=y1*w; e=IntToStr(y1);
Label6->Caption="Игрок2, Ваш выигрыш - "+e;} break;}
//если буква названа неверно, то ход передается другому игроку
else
if (Label4->Caption=="Игрок1, Ваш ход")
Label4->Caption="Игрок2, Ваш ход";
else Label4->Caption="Игрок1, Ваш ход";
if (u==c) {Label3->Caption="ВЫ УГАДАЛИ !!!";
Label4->Visible=false; Button4->Enabled=false; Button5->Enabled=false;}
Button6->Enabled=false;
// если количество угаданных букв совпадает с длиной слова, то
// выводится надпись «ВЫ УГАДАЛИ !!!» и блокируются все объекты
// кроме кнопки «Выход»
}
Дата добавления: 2016-03-22; просмотров: 709;