Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Движение по неоднородному фону 
V
    Опции темы
andDavid
  Дата 3.3.2010, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 12.2.2010

Репутация: нет
Всего: нет




Код


unit Unit1; 

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  StdCtrls, ExtCtrls, Calendar;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    PaintBox1: TPaintBox;
    Timer1: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure PaintBox1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Ship(cx,cy:Integer; ColorShip :TColor);
  private

    { private declarations }
  public
    { public declarations }
  end; 

var
  Form1: TForm1;
   Var cx,cy: Integer;
   Var x,y : Double;
   i,j :Integer;


implementation

{ TForm1 }


procedure TForm1.Ship (cx,cy:Integer; ColorShip :TColor);
begin
      with PaintBox1.Canvas do
      begin
      Pen.Style := psSolid;
      Brush.Color :=ColorShip;

 
 // nachalo korabl'a

     PaintBox1.Canvas.Brush.Color := RGBToColor(20,100,50);  //  цвет корпуса
     PaintBox1.Canvas.Polygon([Point(cx+30,cy+100),Point(cx,cy),Point(2*cx,cy-80),Point(cx+300,cy-80),Point(14*cx,cy-40),Point(12*cx+20,cy+70),Point(10*cx,cy+100)]);   // корпус

     PaintBox1.Canvas.MoveTo(cx,cy);
     PaintBox1.Canvas.LineTo(10*cx,cy);
     PaintBox1.Canvas.LineTo(14*cx,cy-40);


     PaintBox1.Canvas.MoveTo(cx+300,cy-80);
     PaintBox1.Canvas.LineTo(10*cx,cy);
     PaintBox1.Canvas.LineTo(10*cx,cy+100);


      with PaintBox1.Canvas do
     begin
          Brush.Color := RGBToColor(150,155,50);
          Polygon([Point(cx,cy),Point(cx,cy-100),Point(5*cx,cy-100),Point(5*cx,cy)]);      //каюта
          Polygon([Point(5*cx,cy-100),Point(6*cx,cy-170),Point(2*cx,cy-170),Point(cx,cy-100)]);
          Polygon([Point(6*cx,cy-170),Point(6*cx,cy-80),Point(5*cx,cy),Point(5*cx,cy-100)]);

          Brush.Color:=clBlack;
          Ellipse(cx+10,cy-80,cx+50,cy-40);    //   элюминатор
          Brush.Color:=clWhite;
          Ellipse(cx+15,cy-75,cx+45,cy-45);

          Brush.Color:=clBlack;
          Ellipse(cx+70,cy-80,cx+110,cy-40);  //   элюминатор
          Brush.Color:=clWhite;
          Ellipse(cx+75,cy-75,cx+105,cy-45);

          Brush.Color := RGBToColor(90,120,100);
          Polygon([Point(7*cx+10,cy-190),Point(7*cx+10,cy-30),Point(9*cx,cy-30),Point(9*cx,cy-190)]);  //труба

          Ellipse(7*cx+10,cy-200,9*cx,cy-180);
          Brush.Color := RGBToColor(70,80,70);
          Ellipse(7*cx+15,cy-195,8*cx+25,cy-185);

       end;
  // konec korabl'a

      end;
end;

procedure TForm1.PaintBox1Click(Sender: TObject);
begin

end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin

 {ARect := Rect (cx,cy,cx+390,cy+330);                                        // что тут писать?
 PaintBox1.Canvas.CopyRect (Arect,BitMap,Canvas,ARect);
 Ship (cx,cy,clWhite);
 cx := cx + 5;
 }
end;

procedure TForm1.Button1Click(Sender: TObject);

begin

     PaintBox1.width  :=800;
     PaintBox1.height :=800;

     PaintBox1.Canvas.Brush.Color := RGBToColor(540,185,740);     //  цвет воды  в реке , не на всем экране ?
     PaintBox1.Canvas.Rectangle(0,0,PaintBox1.width,PaintBox1.height);


     cx := 0;                            // река
     cy := PaintBox1.Height - 200;
     x := -2.314159;

     while x < PaintBox1.width do
     begin
      y := sin(x);
      PaintBox1.Canvas.Pixels[cx+round(x*80),cy+round(y*20)] := clBlue;
      x:=x + 0.01;
     end;

     cx := 0;
     cy := PaintBox1.Height - 600;
     x := -2.314159;

     while x < PaintBox1.width do
     begin
      y := cos(x);
      PaintBox1.Canvas.Pixels[cx+round(x*80),cy+round(y*20)] := clBlue;
      x:=x + 0.01;
     end;

 // nachalo korabl'a
     cx:=30;
     cy:=450;

     PaintBox1.Canvas.Brush.Color := RGBToColor(20,100,50);  //  цвет корпуса
     PaintBox1.Canvas.Polygon([Point(cx+30,cy+100),Point(cx,cy),Point(2*cx,cy-80),Point(cx+300,cy-80),Point(14*cx,cy-40),Point(12*cx+20,cy+70),Point(10*cx,cy+100)]);   // корпус

     PaintBox1.Canvas.MoveTo(cx,cy);
     PaintBox1.Canvas.LineTo(10*cx,cy);
     PaintBox1.Canvas.LineTo(14*cx,cy-40);


     PaintBox1.Canvas.MoveTo(cx+300,cy-80);
     PaintBox1.Canvas.LineTo(10*cx,cy);
     PaintBox1.Canvas.LineTo(10*cx,cy+100);


     with PaintBox1.Canvas do
     begin
          Brush.Color := RGBToColor(150,155,50);
          Polygon([Point(cx,cy),Point(cx,cy-100),Point(5*cx,cy-100),Point(5*cx,cy)]);      //каюта
          Polygon([Point(5*cx,cy-100),Point(6*cx,cy-170),Point(2*cx,cy-170),Point(cx,cy-100)]);
          Polygon([Point(6*cx,cy-170),Point(6*cx,cy-80),Point(5*cx,cy),Point(5*cx,cy-100)]);

          Brush.Color:=clBlack;
          Ellipse(cx+10,cy-80,cx+50,cy-40);    //   элюминатор
          Brush.Color:=clWhite;
          Ellipse(cx+15,cy-75,cx+45,cy-45);

          Brush.Color:=clBlack;
          Ellipse(cx+70,cy-80,cx+110,cy-40);  //   элюминатор
          Brush.Color:=clWhite;
          Ellipse(cx+75,cy-75,cx+105,cy-45);

          Brush.Color := RGBToColor(90,120,100);
          Polygon([Point(7*cx+10,cy-190),Point(7*cx+10,cy-30),Point(9*cx,cy-30),Point(9*cx,cy-190)]);  //труба

          Ellipse(7*cx+10,cy-200,9*cx,cy-180);
          Brush.Color := RGBToColor(70,80,70);
          Ellipse(7*cx+15,cy-195,8*cx+25,cy-185);

       end;

  // konec korabl'a


       {    BitMap := TBitmap.Create;
           BitMap.Width := PaintBox1.Width;
           BitMap.Height:= PaintBox1.Height;
           ARect := Rect (0,0,PaintBox1.Width, PaintBox1.Height);
           BitMap.Canvas.CopyRect (ARect,PaintBox1,Canvas,ARect);           }

           Timer1.Enabled:=True;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin

end;


initialization
  {$I unit1.lrs}

end.



как заставить карабль двигаться по неоднородному фону с помощью создания дубля?
 Пока что у меня фон однородный, но надо неоднородный. Help! )

PM MAIL   Вверх
andDavid
Дата 3.3.2010, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 12.2.2010

Репутация: нет
Всего: нет



прогресс. Теперь карабль уже начинает двигаться более менее нормально по обоим координатам. Правда некоторые части корпуса не закрашиваются. Буду разбираться
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0638 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.