Кто сможет перевести код? С Делфи в С# - C#
Формулировка задачи:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Menus, XPMan; type TForm1 = class(TForm) Fon: TImage; Trniz1: TImage; Trniz2: TImage; Trniz3: TImage; Trniz4: TImage; Trverh1: TImage; Trverh2: TImage; Trverh3: TImage; Trverh4: TImage; Ptisa: TImage; Timer1: TTimer; Timer2: TTimer; bord: TImage; Label1: TLabel; MainMenu1: TMainMenu; FlappyBird1: TMenuItem; Exit1: TMenuItem; XPManifest1: TXPManifest; Label2: TLabel; procedure Timer1Timer(Sender: TObject); procedure Timer2Timer(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Label1Click(Sender: TObject); procedure Exit1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; const zazor = 120; //зазор между трубами nzaz = 180; //начало зазора (по нижней трубе) var Form1: TForm1; DestRect: TRect; i, j, n,t: Integer; Ptiniz:boolean; Ptish:integer; Ptiinc:integer; kol:integer; implementation {$R *.dfm} procedure TForm1.Timer1Timer(Sender: TObject); begin Form1.DoubleBuffered:=true; if bord.Left * -1 = Form1.ClientWidth then begin //кончился бордюр, запустим его сначала bord.Left := 0; end; if Trniz1.Left + Trniz1.Width = 0 then begin Trniz1.Left := Form1.ClientWidth; Trniz1.Top := nzaz + Random(200); //150 это от верха начало Trverh1.Left := Form1.ClientWidth; Trverh1.Top := Trniz1.Top - 300 - zazor; end; if Trniz2.Left + Trniz2.Width = 0 then begin Trniz2.Left := Form1.ClientWidth; Trniz2.Top := nzaz + Random(200); //100 это от верха начало Trverh2.Left := Form1.ClientWidth; Trverh2.Top := Trniz2.Top - 300 - zazor; end; if Trniz3.Left + Trniz3.Width = 0 then begin Trniz3.Left := Form1.ClientWidth; Trniz3.Top := nzaz + Random(200); //100 это от верха начало Trverh3.Left := Form1.ClientWidth; Trverh3.Top := Trniz3.Top - 300 - zazor; end; if Trniz4.Left + Trniz4.Width = 0 then begin Trniz4.Left := Form1.ClientWidth; Trniz4.Top := nzaz + Random(200); //100 это от верха начало Trverh4.Left := Form1.ClientWidth; Trverh4.Top := Trniz4.Top - 300 - zazor; end; for i := 1 to ComponentCount - 1 do if Components[i] is TImage then begin //двигаем трубы if (Components[i] as TImage).Name <> 'Ptisa' then (Components[i] as TImage).Left := (Components[i] as TImage).Left - 2; //////////////////////////////////////////// if (Components[i] as TImage).Name <> 'Ptisa' then if IntersectRect(DestRect, Ptisa.BoundsRect, (Components[i] as TImage).BoundsRect) then begin Label1.Visible := True; Timer1.Enabled := False; Timer2.Enabled := False; end; end; //определим рекорд if (Ptisa.Left = Trniz1.Left) or (Ptisa.Left = Trniz2.Left) or (Ptisa.Left = Trniz3.Left) or (Ptisa.Left = Trniz4.Left) then inc(kol); label2.caption:= 'Ваш рекорд = ' + IntToStr(kol); end; procedure TForm1.Timer2Timer(Sender: TObject); begin //вниз летит if Ptiniz = True then begin Timer2.Interval := 30; //быстрее скорость Inc(Ptish); Ptisa.Top := Ptisa.Top + Ptish; end; //вверх летит if Ptiniz = False then begin Timer2.Interval := 10; Inc(Ptiinc); Ptisa.Top := Ptisa.Top - 5; if Ptiinc = 10 then begin Ptiniz := True; Ptiinc := 0; end; end; end; procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin //вверхняя стрелка if(key = VK_SPACE) then begin Ptiniz := False; //нажали вверх летим Ptish := 0; //счетчик низ на ноль end; end; procedure TForm1.Label1Click(Sender: TObject); begin Timer1.Enabled := True; Timer2.Enabled := True; Label1.visible := False; Label2.caption :='0'; kol:=0; Trniz1.Left := 484; Trniz2.Left := 634; Trniz3.Left := 784; Trniz4.Left := 934; Trverh1.Left := 484; Trverh2.Left := 634; Trverh3.Left := 784; Trverh4.Left := 934; Ptisa.Left := 184; Ptisa.Top := 154; Ptisa.Width := 34; //ширина Ptisa.Height := 24; bord.Left := 0; end; procedure TForm1.Exit1Click(Sender: TObject); begin Close; end; end.
Решение задачи: «Кто сможет перевести код? С Делфи в С#»
textual
Листинг программы
private void timer1_Tick(object sender, EventArgs e) { Random RandomNumber1 = new Random(DateTime.Now.Millisecond); //Задаем переменную RandomNumber1 Подробнее ниже. if (bord.Left*(-1) == this.ClientSize.Width) bord.Left = 0; // проверяем условие если Нижний бордюр переместился на величину ширины окна, то перемещаем его в начало. if (Fon.Left * (-1) == this.ClientSize.Width) Fon.Left = 0;// Тоже самое и для заднего фона. if (Trniz1.Left + Trniz1.Width <= 0) // если при движении труба ушла за пределы окна { // то перемещаем её в начало и меняем положение до верха. Trniz1.Left = this.ClientSize.Width; Trniz1.Top = nzaz + RandomNumber1.Next(0, 200); Trverh1.Left = this.ClientSize.Width; Trverh1.Top = Trniz1.Top - 300 - zazor; } if (Trniz2.Left + Trniz2.Width <= 0) // Все то-же самое и с остальными трубами { Trniz2.Left = this.ClientSize.Width; Trniz2.Top = nzaz + RandomNumber1.Next(0, 200); Trverh2.Left = this.ClientSize.Width; Trverh2.Top = Trniz2.Top - 300 - zazor; } if (Trniz3.Left + Trniz3.Width <= 0) { Trniz3.Left = this.ClientSize.Width; Trniz3.Top = nzaz + RandomNumber1.Next(0, 200); Trverh3.Left = this.ClientSize.Width; Trverh3.Top = Trniz3.Top - 300 - zazor ; } if (Trniz4.Left + Trniz4.Width <= 0) { Trniz4.Left = this.ClientSize.Width; Trniz4.Top = nzaz + RandomNumber1.Next(0, 200); Trverh4.Left = this.ClientSize.Width; Trverh4.Top = Trniz4.Top - 300 - zazor; } // Далее необходимо передвинуть все изображения(PictureBox) Кроме птицы на шаг - 2 влево. foreach (Control c in this.Controls) //Перебираем все объекты на форме { if (c.GetType() == typeof(PictureBox)) // подробнее об этой функции можно узнать из ссылки ниже. { if (c.Name != "Ptisa") c.Left = c.Left - 2; // если имя объекта не Ptisa то перемещаем влево на 2 /////// if (c.Name != "Ptisa" && c.Name != "Fon") // Проверяем на столкновение с трубами и бордюром { Rectangle r1 = c.DisplayRectangle; // про этот код так-же можно узнать по ссылке ниже Rectangle r2 = Ptisa.DisplayRectangle; r1.Location = c.Location; r2.Location = Ptisa.Location; if (r1.IntersectsWith(r2)) // Если произошло столкновение, то { label2.Visible = true; // label2 делаем видимым timer1.Enabled = false; //Останавливаем таймкеры timer2.Enabled = false; } } } } //определим рекорд if ((Ptisa.Left == Trniz1.Left) || (Ptisa.Left == Trniz2.Left) || (Ptisa.Left ==Trniz3.Left)||(Ptisa.Left == Trniz4.Left)) { //Если Птица пересекает какую-либо трубу, то ++kol; // Увеличиваем переменную на 1 label1.Text = "Ваш рекорд: " + kol; // И выводим результат } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д