Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var
- frmMain: TfrmMain;
- {переменные - сумма на счете и счетчик бросков}
- sum, iThrowCount: integer;
- implementation
- uses AboutFrm, HelpFrm;
- {$R *.dfm}
- {рисование кубика, в параметрах - изображение и выпавшая сумма}
- procedure TfrmMain.DrawBones(im: TImage; num: integer);
- begin
- with im.Canvas do
- begin
- {рисуем пустой белый прямоугольник}
- brush.color := clWhite;
- rectangle(0,0,105,105);
- {в начале игры выпавших чисел нет, поэтому рисуем линии}
- if num = 0 then
- begin
- moveto(0,0);
- LineTo(105,105);
- moveto(105,0);
- LineTo(0,105);
- end
- else
- begin
- {в зависимости от выпавшего числа рисуем разное количество точек на грани}
- brush.Color := clBlack;
- case num of
- 1: begin
- ellipse(45,45,60,60);
- end;
- 2: begin
- ellipse(15,75,30,90);
- ellipse(75,15,90,30);
- end;
- 3: begin
- ellipse(15,75,30,90);
- ellipse(45,45,60,60);
- ellipse(75,15,90,30);
- end;
- 4: begin
- ellipse(15,75,30,90);
- ellipse(75,15,90,30);
- ellipse(15,15,30,30);
- ellipse(75,75,90,90);
- end;
- 5: begin
- ellipse(15,75,30,90);
- ellipse(75,15,90,30);
- ellipse(45,45,60,60);
- ellipse(15,15,30,30);
- ellipse(75,75,90,90);
- end;
- 6: begin
- ellipse(15,75,30,90);
- ellipse(45,55,60,30);
- ellipse(75,15,90,30);
- ellipse(15,15,30,30);
- ellipse(45,75,60,90);
- ellipse(75,75,90,90);
- end;
- end;
- end;
- end;
- end;
- procedure TfrmMain.btnThrowClick(Sender: TObject);
- var
- num1, num2, number, rate: integer;
- {первое и второе выпавшие числа, загаданное число, ставка}
- begin
- Randomize();
- {если не введено число}
- if length(edNumber.Text)=0 then
- begin
- ShowMessage('Загадайте и введите число от 1 до 6');
- exit;
- end;
- {если не введена ставка}
- if length(edRate.Text)=0 then
- begin
- ShowMessage('Сделайте ставку');
- exit;
- end;
- {если ставка больше суммы на счете}
- if StrToInt(edRate.Text) > sum then
- begin
- ShowMessage('Введенная ставка превышает сумму вашего счета');
- edRate.Text:=inttostr(sum);
- end;
- {если загаданное число меньше 2 или больше 12}
- if (StrToInt(edNumber.Text) > 12) or (StrToInt(edNumber.Text) < 2) then
- begin
- ShowMessage('Загаданное число должно быть больше 2 и меньше 12');
- exit;
- end;
- number := StrToInt(edNumber.Text);
- rate := StrToInt(edRate.Text);
- {кидаем кубики}
- num1 := random(5) + 1;
- DrawBones(im1,num1);
- num2 := random(5) + 1;
- {рисуем кубики с учетом выпавших чисел}
- DrawBones(im2,num2);
- lblResult.Caption := IntToStr(num1) + ' + ' + IntToStr(num2) + ' = ' + IntToStr(num1+num2);
- {записываем все в поле Мемо}
- iThrowCount := iThrowCount + 1;
- m1.Lines.Add('-------------');
- m1.Lines.Add(IntToStr(iThrowCount) + ' бросок');
- m1.Lines.Add('-------------');
- m1.Lines.Add('Загадано число: ' + edNumber.Text);
- m1.Lines.Add('Выпали числа: ' + IntToStr(num1) + ' + ' + IntToStr(num2) + ' = ' + IntToStr(num1+num2));
- m1.Lines.Add('Ставка: ' + edRate.Text);
- {расчет выигрыша или проигрыша}
- if (number=(num1+num2)) then
- begin
- lblWin.Caption := 'Вы угадали выпавшее число!';
- sum := sum + 4*rate;
- lblSum.Caption := IntToStr(sum);
- m1.Lines.Add('Угадано выпавшее число. Сумма ставки увеличивается в четыре раза');
- m1.Lines.Add('Выигранная сумма: ' + IntToStr(4*rate));
- end
- else if (((number>7) and ((num1+num2)>7)) or ((number<7) and ((num1+num2)<7))) then
- begin
- lblWin.Caption := 'Вы выиграли!';
- sum := sum + rate;
- lblSum.Caption := IntToStr(sum);
- m1.Lines.Add('Игрок выиграл ' + IntToStr(rate));
- end
- else
- begin
- lblWin.Caption := 'Вы проиграли!';
- sum := sum - rate;
- m1.Lines.Add('Игрок проиграл ' + IntToStr(rate));
- if sum <= 0 then
- begin
- lblSum.Font.Color:=clRed;
- lblWin.Caption := 'Вы проиграли! Игра окончена.';
- edNumber.Enabled:=false;
- edRate.Enabled:=false;
- btnThrow.Enabled:=false;
- m1.Lines.Add('Игра окончена');
- end;
- lblSum.Caption := IntToStr(sum);
- end;
- m1.Lines.Add('Сумма на счете ' + IntToStr(sum));
- end;
- {при создании формы}
- procedure TfrmMain.FormCreate(Sender: TObject);
- begin
- sum := 100;
- DrawBones(im1,0);
- DrawBones(im2,0);
- m1.Lines.Add('Начальная сумма - 100 очков');
- end;
- procedure TfrmMain.btnCloseClick(Sender: TObject);
- begin
- Close();
- end;
- {новая игра}
- procedure TfrmMain.btnNewGameClick(Sender: TObject);
- var
- i: integer;
- begin
- edNumber.Enabled:=true;
- edRate.Enabled:=true;
- btnThrow.Enabled:=true;
- lblSum.Font.Color:= clTeal;
- lblSum.Caption := '100';
- lblResult.Caption := '';
- lblWin.Caption := '';
- edNumber.Clear;
- edRate.Clear;
- sum := 100;
- iThrowCount := 0;
- DrawBones(im1,0);
- DrawBones(im2,0);
- if m1.Lines.Count > 0 then
- for i := 0 to m1.Lines.Count-1 do
- m1.Lines.Delete(0);
- m1.Lines.Add('Начальная сумма - 100 очков');
- end;
- procedure TfrmMain.N6Click(Sender: TObject);
- begin
- frmAbout.Show();
- end;
- procedure TfrmMain.N4Click(Sender: TObject);
- begin
- frmHelp.Show;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement