Advertisement
EvenGuy

Untitled

Jun 4th, 2017
231
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 6.86 KB | None | 0 0
  1.     var
  2.       frmMain: TfrmMain;
  3.  
  4.       {переменные - сумма на счете и счетчик бросков}
  5.       sum, iThrowCount: integer;
  6.  
  7.  
  8.     implementation
  9.  
  10.     uses AboutFrm, HelpFrm;
  11.  
  12.     {$R *.dfm}
  13.  
  14.     {рисование кубика, в параметрах - изображение и выпавшая сумма}
  15.     procedure TfrmMain.DrawBones(im: TImage; num: integer);
  16.     begin
  17.       with im.Canvas do
  18.       begin
  19.       {рисуем пустой белый прямоугольник}
  20.         brush.color := clWhite;
  21.         rectangle(0,0,105,105);
  22.  
  23.         {в начале игры выпавших чисел нет, поэтому рисуем линии}
  24.         if num = 0 then
  25.         begin
  26.           moveto(0,0);
  27.           LineTo(105,105);
  28.           moveto(105,0);
  29.           LineTo(0,105);
  30.         end
  31.         else
  32.         begin
  33.         {в зависимости от выпавшего числа рисуем разное количество точек на грани}
  34.           brush.Color := clBlack;
  35.           case num of
  36.           1: begin
  37.             ellipse(45,45,60,60);
  38.           end;
  39.           2: begin
  40.             ellipse(15,75,30,90);
  41.             ellipse(75,15,90,30);
  42.           end;
  43.           3: begin
  44.             ellipse(15,75,30,90);
  45.             ellipse(45,45,60,60);
  46.             ellipse(75,15,90,30);
  47.           end;
  48.           4: begin
  49.             ellipse(15,75,30,90);
  50.             ellipse(75,15,90,30);
  51.             ellipse(15,15,30,30);
  52.             ellipse(75,75,90,90);
  53.           end;
  54.           5: begin
  55.             ellipse(15,75,30,90);
  56.             ellipse(75,15,90,30);
  57.             ellipse(45,45,60,60);
  58.             ellipse(15,15,30,30);
  59.             ellipse(75,75,90,90);
  60.           end;
  61.           6: begin
  62.             ellipse(15,75,30,90);
  63.             ellipse(45,55,60,30);
  64.             ellipse(75,15,90,30);
  65.             ellipse(15,15,30,30);
  66.             ellipse(45,75,60,90);
  67.             ellipse(75,75,90,90);
  68.           end;
  69.           end;
  70.         end;
  71.       end;
  72.     end;
  73.  
  74.     procedure TfrmMain.btnThrowClick(Sender: TObject);
  75.     var
  76.       num1, num2, number, rate: integer;
  77.       {первое и второе выпавшие числа, загаданное число, ставка}
  78.     begin
  79.       Randomize();
  80.       {если не введено число}
  81.       if length(edNumber.Text)=0 then
  82.       begin
  83.         ShowMessage('Загадайте и введите число от 1 до 6');
  84.         exit;
  85.       end;
  86.        {если не введена ставка}
  87.       if length(edRate.Text)=0 then
  88.       begin
  89.         ShowMessage('Сделайте ставку');
  90.         exit;
  91.       end;
  92.        {если ставка больше суммы на счете}
  93.       if StrToInt(edRate.Text) > sum then
  94.       begin
  95.         ShowMessage('Введенная ставка превышает сумму вашего счета');
  96.         edRate.Text:=inttostr(sum);
  97.       end;
  98.        {если загаданное число меньше 2 или больше 12}
  99.       if (StrToInt(edNumber.Text) > 12) or (StrToInt(edNumber.Text) < 2) then
  100.       begin
  101.         ShowMessage('Загаданное число должно быть больше 2 и меньше 12');
  102.         exit;
  103.       end;
  104.  
  105.       number := StrToInt(edNumber.Text);
  106.       rate := StrToInt(edRate.Text);
  107.        {кидаем кубики}
  108.       num1 := random(5) + 1;
  109.       DrawBones(im1,num1);
  110.       num2 := random(5) + 1;
  111.        {рисуем кубики с учетом выпавших чисел}
  112.       DrawBones(im2,num2);
  113.       lblResult.Caption := IntToStr(num1) + ' + ' + IntToStr(num2) +  ' = ' + IntToStr(num1+num2);
  114.  
  115.        {записываем все в поле Мемо}
  116.       iThrowCount := iThrowCount + 1;
  117.       m1.Lines.Add('-------------');
  118.       m1.Lines.Add(IntToStr(iThrowCount) + ' бросок');
  119.       m1.Lines.Add('-------------');
  120.       m1.Lines.Add('Загадано число: ' + edNumber.Text);
  121.       m1.Lines.Add('Выпали числа: ' + IntToStr(num1) + ' + ' + IntToStr(num2) +  ' = ' + IntToStr(num1+num2));
  122.       m1.Lines.Add('Ставка: ' + edRate.Text);
  123.        {расчет выигрыша или проигрыша}
  124.       if (number=(num1+num2)) then
  125.       begin
  126.         lblWin.Caption := 'Вы угадали выпавшее число!';
  127.  
  128.         sum := sum + 4*rate;
  129.         lblSum.Caption := IntToStr(sum);
  130.         m1.Lines.Add('Угадано выпавшее число. Сумма ставки увеличивается в четыре раза');
  131.         m1.Lines.Add('Выигранная сумма: ' + IntToStr(4*rate));
  132.       end
  133.       else if (((number>7) and ((num1+num2)>7)) or ((number<7) and ((num1+num2)<7))) then
  134.       begin
  135.          lblWin.Caption := 'Вы выиграли!';
  136.          sum := sum + rate;
  137.          lblSum.Caption := IntToStr(sum);
  138.          m1.Lines.Add('Игрок выиграл ' +  IntToStr(rate));
  139.       end
  140.       else
  141.       begin
  142.          lblWin.Caption := 'Вы проиграли!';
  143.          sum := sum - rate;
  144.          m1.Lines.Add('Игрок проиграл ' +  IntToStr(rate));
  145.  
  146.          if sum <= 0 then
  147.          begin
  148.             lblSum.Font.Color:=clRed;
  149.             lblWin.Caption := 'Вы проиграли! Игра окончена.';
  150.             edNumber.Enabled:=false;
  151.             edRate.Enabled:=false;
  152.             btnThrow.Enabled:=false;
  153.             m1.Lines.Add('Игра окончена');
  154.          end;
  155.          lblSum.Caption := IntToStr(sum);
  156.       end;
  157.       m1.Lines.Add('Сумма на счете ' +  IntToStr(sum));
  158.  
  159.     end;
  160.  
  161.      {при создании формы}
  162.     procedure TfrmMain.FormCreate(Sender: TObject);
  163.     begin
  164.       sum := 100;
  165.       DrawBones(im1,0);
  166.       DrawBones(im2,0);
  167.       m1.Lines.Add('Начальная сумма - 100 очков');
  168.     end;
  169.  
  170.     procedure TfrmMain.btnCloseClick(Sender: TObject);
  171.     begin
  172.       Close();
  173.     end;
  174.  
  175.     {новая игра}
  176.     procedure TfrmMain.btnNewGameClick(Sender: TObject);
  177.     var
  178.      i: integer;
  179.     begin
  180.         edNumber.Enabled:=true;
  181.         edRate.Enabled:=true;
  182.         btnThrow.Enabled:=true;
  183.         lblSum.Font.Color:= clTeal;
  184.         lblSum.Caption := '100';
  185.         lblResult.Caption := '';
  186.         lblWin.Caption := '';
  187.         edNumber.Clear;
  188.         edRate.Clear;
  189.         sum := 100;
  190.         iThrowCount := 0;
  191.         DrawBones(im1,0);
  192.         DrawBones(im2,0);
  193.         if m1.Lines.Count > 0 then
  194.           for i := 0 to m1.Lines.Count-1 do
  195.             m1.Lines.Delete(0);
  196.         m1.Lines.Add('Начальная сумма - 100 очков');
  197.     end;
  198.  
  199.     procedure TfrmMain.N6Click(Sender: TObject);
  200.     begin
  201.       frmAbout.Show();
  202.     end;
  203.  
  204.     procedure TfrmMain.N4Click(Sender: TObject);
  205.     begin
  206.       frmHelp.Show;
  207.     end;
  208.     end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement