Кто сможет перевести код? С Делфи в С# - C#

Узнай цену своей работы

Формулировка задачи:

Листинг программы
  1. unit Unit1;
  2. interface
  3. uses
  4. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5. Dialogs, ExtCtrls, StdCtrls, Menus, XPMan;
  6. type
  7. TForm1 = class(TForm)
  8. Fon: TImage;
  9. Trniz1: TImage;
  10. Trniz2: TImage;
  11. Trniz3: TImage;
  12. Trniz4: TImage;
  13. Trverh1: TImage;
  14. Trverh2: TImage;
  15. Trverh3: TImage;
  16. Trverh4: TImage;
  17. Ptisa: TImage;
  18. Timer1: TTimer;
  19. Timer2: TTimer;
  20. bord: TImage;
  21. Label1: TLabel;
  22. MainMenu1: TMainMenu;
  23. FlappyBird1: TMenuItem;
  24. Exit1: TMenuItem;
  25. XPManifest1: TXPManifest;
  26. Label2: TLabel;
  27. procedure Timer1Timer(Sender: TObject);
  28. procedure Timer2Timer(Sender: TObject);
  29. procedure FormKeyDown(Sender: TObject; var Key: Word;
  30. Shift: TShiftState);
  31. procedure Label1Click(Sender: TObject);
  32. procedure Exit1Click(Sender: TObject);
  33.  
  34. private
  35. { Private declarations }
  36. public
  37. { Public declarations }
  38. end;
  39. const
  40. zazor = 120; //зазор между трубами
  41. nzaz = 180; //начало зазора (по нижней трубе)
  42. var
  43. Form1: TForm1;
  44. DestRect: TRect;
  45. i, j, n,t: Integer;
  46. Ptiniz:boolean;
  47. Ptish:integer;
  48. Ptiinc:integer;
  49. kol:integer;
  50. implementation
  51. {$R *.dfm}
  52. procedure TForm1.Timer1Timer(Sender: TObject);
  53. begin
  54. Form1.DoubleBuffered:=true;
  55. if bord.Left * -1 = Form1.ClientWidth then
  56. begin
  57. //кончился бордюр, запустим его сначала
  58. bord.Left := 0;
  59. end;
  60. if Trniz1.Left + Trniz1.Width = 0 then
  61. begin
  62. Trniz1.Left := Form1.ClientWidth;
  63. Trniz1.Top := nzaz + Random(200); //150 это от верха начало
  64. Trverh1.Left := Form1.ClientWidth;
  65. Trverh1.Top := Trniz1.Top - 300 - zazor;
  66. end;
  67. if Trniz2.Left + Trniz2.Width = 0 then
  68. begin
  69. Trniz2.Left := Form1.ClientWidth;
  70. Trniz2.Top := nzaz + Random(200); //100 это от верха начало
  71. Trverh2.Left := Form1.ClientWidth;
  72. Trverh2.Top := Trniz2.Top - 300 - zazor;
  73. end;
  74. if Trniz3.Left + Trniz3.Width = 0 then
  75. begin
  76. Trniz3.Left := Form1.ClientWidth;
  77. Trniz3.Top := nzaz + Random(200); //100 это от верха начало
  78. Trverh3.Left := Form1.ClientWidth;
  79. Trverh3.Top := Trniz3.Top - 300 - zazor;
  80. end;
  81. if Trniz4.Left + Trniz4.Width = 0 then
  82. begin
  83. Trniz4.Left := Form1.ClientWidth;
  84. Trniz4.Top := nzaz + Random(200); //100 это от верха начало
  85. Trverh4.Left := Form1.ClientWidth;
  86. Trverh4.Top := Trniz4.Top - 300 - zazor;
  87. end;
  88. for i := 1 to ComponentCount - 1 do
  89. if Components[i] is TImage then
  90. begin
  91. //двигаем трубы
  92. if (Components[i] as TImage).Name <> 'Ptisa' then
  93. (Components[i] as TImage).Left := (Components[i] as TImage).Left - 2;
  94. ////////////////////////////////////////////
  95. if (Components[i] as TImage).Name <> 'Ptisa' then
  96. if IntersectRect(DestRect, Ptisa.BoundsRect, (Components[i] as TImage).BoundsRect) then
  97. begin
  98. Label1.Visible := True;
  99. Timer1.Enabled := False;
  100. Timer2.Enabled := False;
  101. end;
  102. end;
  103. //определим рекорд
  104. if (Ptisa.Left = Trniz1.Left) or (Ptisa.Left = Trniz2.Left) or
  105. (Ptisa.Left = Trniz3.Left) or (Ptisa.Left = Trniz4.Left)
  106. then
  107. inc(kol);
  108. label2.caption:= 'Ваш рекорд = ' + IntToStr(kol);
  109. end;
  110. procedure TForm1.Timer2Timer(Sender: TObject);
  111. begin
  112. //вниз летит
  113. if Ptiniz = True then
  114. begin
  115. Timer2.Interval := 30; //быстрее скорость
  116. Inc(Ptish);
  117. Ptisa.Top := Ptisa.Top + Ptish;
  118. end;
  119. //вверх летит
  120. if Ptiniz = False then
  121. begin
  122. Timer2.Interval := 10;
  123. Inc(Ptiinc);
  124. Ptisa.Top := Ptisa.Top - 5;
  125. if Ptiinc = 10 then
  126. begin
  127. Ptiniz := True;
  128. Ptiinc := 0;
  129. end;
  130. end;
  131. end;
  132. procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  133. Shift: TShiftState);
  134. begin
  135. //вверхняя стрелка
  136. if(key = VK_SPACE) then
  137. begin
  138. Ptiniz := False; //нажали вверх летим
  139. Ptish := 0; //счетчик низ на ноль
  140. end;
  141. end;
  142. procedure TForm1.Label1Click(Sender: TObject);
  143. begin
  144. Timer1.Enabled := True;
  145. Timer2.Enabled := True;
  146. Label1.visible := False;
  147. Label2.caption :='0';
  148. kol:=0;
  149. Trniz1.Left := 484;
  150. Trniz2.Left := 634;
  151. Trniz3.Left := 784;
  152. Trniz4.Left := 934;
  153. Trverh1.Left := 484;
  154. Trverh2.Left := 634;
  155. Trverh3.Left := 784;
  156. Trverh4.Left := 934;
  157. Ptisa.Left := 184;
  158. Ptisa.Top := 154;
  159. Ptisa.Width := 34; //ширина
  160. Ptisa.Height := 24;
  161. bord.Left := 0;
  162. end;
  163. procedure TForm1.Exit1Click(Sender: TObject);
  164. begin
  165. Close;
  166. end;
  167. end.

Решение задачи: «Кто сможет перевести код? С Делфи в С#»

textual
Листинг программы
  1. private void timer1_Tick(object sender, EventArgs e)
  2.         {
  3.             Random RandomNumber1 = new Random(DateTime.Now.Millisecond); //Задаем переменную RandomNumber1 Подробнее ниже.
  4.            
  5.             if (bord.Left*(-1) == this.ClientSize.Width) bord.Left = 0; // проверяем условие если Нижний бордюр переместился на величину ширины окна, то перемещаем его  в начало.
  6.             if (Fon.Left * (-1) == this.ClientSize.Width) Fon.Left = 0;// Тоже самое и для заднего фона.
  7.             if (Trniz1.Left + Trniz1.Width <= 0) // если при движении труба ушла за пределы окна
  8.             {                                                 // то перемещаем её в начало и меняем положение до верха.
  9.                 Trniz1.Left = this.ClientSize.Width;
  10.                 Trniz1.Top = nzaz + RandomNumber1.Next(0, 200);
  11.                 Trverh1.Left = this.ClientSize.Width;
  12.                 Trverh1.Top = Trniz1.Top - 300 - zazor;
  13.             }
  14.  
  15.             if (Trniz2.Left + Trniz2.Width <= 0) // Все то-же самое и с остальными трубами
  16.             {
  17.                 Trniz2.Left = this.ClientSize.Width;
  18.                 Trniz2.Top = nzaz + RandomNumber1.Next(0, 200);
  19.  
  20.                 Trverh2.Left = this.ClientSize.Width;
  21.                 Trverh2.Top = Trniz2.Top - 300 - zazor;
  22.             }
  23.             if (Trniz3.Left + Trniz3.Width <= 0)
  24.             {
  25.                 Trniz3.Left = this.ClientSize.Width;
  26.                 Trniz3.Top = nzaz + RandomNumber1.Next(0, 200);
  27.  
  28.                 Trverh3.Left = this.ClientSize.Width;
  29.                 Trverh3.Top = Trniz3.Top - 300 - zazor ;
  30.             }
  31.             if (Trniz4.Left + Trniz4.Width <= 0)
  32.             {
  33.                 Trniz4.Left = this.ClientSize.Width;
  34.                 Trniz4.Top = nzaz + RandomNumber1.Next(0, 200);
  35.  
  36.                 Trverh4.Left = this.ClientSize.Width;
  37.                 Trverh4.Top = Trniz4.Top - 300 - zazor;
  38.             }
  39.             // Далее необходимо передвинуть все изображения(PictureBox) Кроме птицы на шаг - 2 влево.
  40.             foreach (Control c in this.Controls)  //Перебираем все объекты на форме
  41.             {
  42.                 if (c.GetType() == typeof(PictureBox)) // подробнее об этой функции можно узнать из ссылки ниже.
  43.                 {
  44.                     if (c.Name != "Ptisa") c.Left = c.Left - 2; // если имя объекта не Ptisa то перемещаем влево на 2
  45.                     ///////
  46.                       if (c.Name != "Ptisa" && c.Name != "Fon") // Проверяем на столкновение с трубами и бордюром
  47.                       {
  48.                         Rectangle r1 = c.DisplayRectangle;          // про этот код так-же можно узнать по ссылке ниже
  49.                         Rectangle r2 = Ptisa.DisplayRectangle;
  50.                         r1.Location = c.Location;
  51.                         r2.Location = Ptisa.Location;
  52.                         if (r1.IntersectsWith(r2))                 // Если произошло столкновение, то
  53.                         {
  54.                             label2.Visible = true;                   // label2 делаем видимым
  55.                             timer1.Enabled = false;                //Останавливаем таймкеры
  56.                             timer2.Enabled = false;
  57.                         }
  58.                       }
  59.                 }
  60.             }
  61.             //определим рекорд
  62.             if ((Ptisa.Left == Trniz1.Left) || (Ptisa.Left == Trniz2.Left) || (Ptisa.Left ==Trniz3.Left)||(Ptisa.Left == Trniz4.Left))
  63.             {                    //Если Птица пересекает какую-либо трубу, то
  64.                 ++kol;         // Увеличиваем переменную на 1
  65.                 label1.Text = "Ваш рекорд: " + kol;  // И выводим результат
  66.             }
  67.  
  68.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы