Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2008, 14:09   #1
Надежда..
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 12
Восклицание Отражение рисунка от стенок

Я сделала кота, который двигается.. Теперь надо, чтоб он доходил до стенки и отражался.. Как? Могу програмку выслать..
Надежда.. вне форума Ответить с цитированием
Старый 20.12.2008, 14:25   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Где отражался? В зеркале сбоку от экрана?
Цитата:
Я сделала кота
Простите, не верю... Если б это действительно сделали бы вы, вам не составило бы труда догадаться, что нужно всего навсего изменить направление движения, то есть знак у приращения...
Цитата:
Это делала я.. я знаю, что нужно поменять знак, а куда его писать и как?
???Это делала я...

Последний раз редактировалось mihali4; 20.12.2008 в 15:28.
mihali4 вне форума Ответить с цитированием
Старый 20.12.2008, 14:38   #3
Надежда..
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 12
По умолчанию

Это делала я.. я знаю, что нужно поменять знак, а куда его писать и как?
Надежда.. вне форума Ответить с цитированием
Старый 20.12.2008, 19:19   #4
Надежда..
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 12
По умолчанию

А что в этом такого? если я аписала, и не могу найти места для вставки?
Надежда.. вне форума Ответить с цитированием
Старый 20.12.2008, 20:06   #5
Deight
Бредовый
Форумчанин
 
Аватар для Deight
 
Регистрация: 15.11.2008
Сообщений: 285
По умолчанию

Михалыч поддерживаю, (я тут недавно ос новую написал но забыл в какой каталог она устанавливается) :-)
хоть исходник выложела бы.
Чем точнее и проще задан вопрос, тем проще на него получить точный ответ.
Deight вне форума Ответить с цитированием
Старый 20.12.2008, 20:14   #6
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Надежда.., думаю было бы проще программку выложить сюда, но если хотите, то вышлите на мыло. Попробую вам помочь.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 20.12.2008, 20:44   #7
Надежда..
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 12
По умолчанию

unit Canvas_Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;

type
TForm1 = class(TForm)
Timer1: TTimer;
procedure FormPaint(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;


implementation

{$R *.dfm}

var x, y, dx: integer;
procedure risunok;
begin

Form1.Canvas.pen.Color:=Form1.Color ;
//telo
Form1.Canvas.Brush.Color:=Form1.Col or;
Form1.Canvas.Ellipse(x-100,y-125,x,y);
//golova
Form1.Canvas.Brush.Color:=Form1.Col or;
Form1.Canvas.Ellipse(x-80,y-160,x-20,y-100);
//lapki
Form1.Canvas.Brush.Color:=Form1.Col or;
Form1.Canvas.Ellipse(x-40,y-5,x-15,y+5);
Form1.Canvas.Ellipse(x-60,y-5,x-85,y+5);
//glazki
Form1.Canvas.Brush.Color:=Form1.Col or;
Form1.Canvas.Ellipse(x-55,y-125,x-65,y-145);

Form1.Canvas.Ellipse(x-45,y-125,x-35,y-145);

//ushki

Form1.Canvas.MoveTo(x-85,y-165);
Form1.Canvas.LineTo(x-75,y-145);
Form1.Canvas.MoveTo(x-85,y-165);
Form1.Canvas.LineTo(x-65,y-155);
Form1.Canvas.MoveTo(x-15,y-165);
Form1.Canvas.LineTo(x-25,y-145);
Form1.Canvas.MoveTo(x-15,y-165);
Form1.Canvas.LineTo(x-35,y-145);

//nosik
Form1.Canvas.Brush.Color:=Form1.Col or;
Form1.Canvas.Ellipse(x-55,y-120,x-45,y-114);
Form1.Canvas.MoveTo(x-50,y-114);
Form1.Canvas.LineTo(x-50,y-110);
Form1.Canvas.MoveTo(x-55,y-110);
Form1.Canvas.LineTo(x-45,y-110);

//ruchki //l
Form1.Canvas.MoveTo(x-65,y-65);
Form1.Canvas.LineTo(x-65,y-55);
Form1.Canvas.LineTo(x-67,y-48);
Form1.Canvas.LineTo(x-70,y-50);

// Form1.Canvas.LineTo(x-75,y-60);

//ruchki //r
Form1.Canvas.MoveTo(x-35,y-65);
Form1.Canvas.LineTo(x-35,y-55);
Form1.Canvas.LineTo(x-33,y-48);
Form1.Canvas.LineTo(x-30,y-50);
// Form1.Canvas.LineTo(y-25,y-60);

//hvostik
Form1.Canvas.Brush.Color:=Form1.Col or;
Form1.Canvas.MoveTo(x-25,y-5);
Form1.Canvas.LineTo(x+10,y-15);
Form1.Canvas.LineTo(x+25,y-35);
Form1.Canvas.LineTo(x+50,y-120);

Form1.Canvas.Arc(x+50,y-130,x+30,y-110,x+50,y-120,x+30,y-120);
Form1.Canvas.MoveTo(x+30,y-120);
Form1.Canvas.LineTo(x+5,y-35);
Form1.Canvas.LineTo(x-20,y-15);
//zrachki
Form1.Canvas.brush.Color:=Form1.Col or;
Form1.Canvas.Ellipse(x-58,y-137,x-62,y-133);

Form1.Canvas.Ellipse(x-42,y-137,x-38,y-133);

x:=x+dx;

Form1.Canvas.pen.Color:=clBlack;
//telo
Form1.Canvas.Brush.Color:=clGray;
Form1.Canvas.Ellipse(x-100,y-125,x,y);
//golova
Form1.Canvas.Brush.Color:=clWhite;
Form1.Canvas.Ellipse(x-80,y-160,x-20,y-100);
//lapki
Form1.Canvas.Brush.Color:=clBlack;
Form1.Canvas.Ellipse(x-40,y-5,x-15,y+5);
Form1.Canvas.Ellipse(x-60,y-5,x-85,y+5);
//glazki
Form1.Canvas.Brush.Color:=clGreen;
Form1.Canvas.Ellipse(x-55,y-125,x-65,y-145);

Form1.Canvas.Ellipse(x-45,y-125,x-35,y-145);

//ushki

Form1.Canvas.MoveTo(x-85,y-165);
Form1.Canvas.LineTo(x-75,y-145);
Form1.Canvas.MoveTo(x-85,y-165);
Form1.Canvas.LineTo(x-65,y-155);
Form1.Canvas.MoveTo(x-15,y-165);
Form1.Canvas.LineTo(x-25,y-145);
Form1.Canvas.MoveTo(x-15,y-165);
Form1.Canvas.LineTo(x-35,y-155);

//nosik
Form1.Canvas.Brush.Color:=clWhite;
Form1.Canvas.Ellipse(x-55,y-120,x-45,y-114);
Form1.Canvas.MoveTo(x-50,y-114);
Form1.Canvas.LineTo(x-50,y-110);
Form1.Canvas.MoveTo(x-55,y-110);
Form1.Canvas.LineTo(x-45,y-110);

//ruchki //l
Form1.Canvas.MoveTo(x-65,y-65);
Form1.Canvas.LineTo(x-65,y-55);
Form1.Canvas.LineTo(x-67,y-48);
Form1.Canvas.LineTo(x-70,y-50);

// Form1.Canvas.LineTo(x-75,y-60);

//ruchki //r
Form1.Canvas.MoveTo(x-35,y-65);
Form1.Canvas.LineTo(x-35,y-55);
Form1.Canvas.LineTo(x-33,y-48);
Form1.Canvas.LineTo(x-30,y-50);
// Form1.Canvas.LineTo(y-25,y-60);

//hvostik
Form1.Canvas.Brush.Color:=clYellow;
Form1.Canvas.MoveTo(x-25,y-5);
Form1.Canvas.LineTo(x+10,y-15);
Form1.Canvas.LineTo(x+25,y-35);
Form1.Canvas.LineTo(x+50,y-120);

Form1.Canvas.Arc(x+50,y-130,x+30,y-110,x+50,y-120,x+30,y-120);
Form1.Canvas.MoveTo(x+30,y-120);
Form1.Canvas.LineTo(x+5,y-35);
Form1.Canvas.LineTo(x-20,y-15);
//zrachki
Form1.Canvas.brush.Color:=clBlack;
Form1.Canvas.Ellipse(x-58,y-137,x-62,y-133);

Form1.Canvas.Ellipse(x-42,y-137,x-38,y-133);

end;
procedure TForm1.FormActivate(Sender: TObject);
begin
x:=10;
y:=200;
dx:=5;
Timer1.Interval:=100;
Form1.Canvas.Brush.Color:=Form1.Col or;
end;
Надежда.. вне форума Ответить с цитированием
Старый 20.12.2008, 20:44   #8
Надежда..
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 12
По умолчанию

procedure TForm1.FormPaint(Sender: TObject);

var x1, y1:integer;

begin
x1:=250;
y1:=250;

with canvas do
begin
Randomize;
x1 := Random(ClientWidth);
y1 := Random(ClientHeight);
begin

if ((x1+250)<(ClientWidth)) then
dx:=5
else
dx:=-5;
end;
Form1.Canvas.pen.Color:=clBlack;
//telo
Form1.Canvas.Brush.Color:=clGray;
Form1.Canvas.Ellipse(x1-100,y1-125,x1,y1);
//golova
Form1.Canvas.Brush.Color:=clWhite;
Form1.Canvas.Ellipse(x1-80,y1-160,x1-20,y1-100);
//lapki
Form1.Canvas.Brush.Color:=clBlack;
Form1.Canvas.Ellipse(x1-40,y1-5,x1-15,y1+5);
Form1.Canvas.Ellipse(x1-60,y1-5,x1-85,y1+5);
//glazki
Form1.Canvas.Brush.Color:=clGreen;
Form1.Canvas.Ellipse(x1-55,y1-125,x1-65,y1-145);

Form1.Canvas.Ellipse(x1-45,y1-125,x1-35,y1-145);

//ushki

Form1.Canvas.MoveTo(x1-85,y1-165);
Form1.Canvas.LineTo(x1-75,y1-145);
Form1.Canvas.MoveTo(x1-85,y1-165);
Form1.Canvas.LineTo(x1-65,y1-155);
Form1.Canvas.MoveTo(x1-15,y1-165);
Form1.Canvas.LineTo(x1-25,y1-145);
Form1.Canvas.MoveTo(x1-15,y1-165);
Form1.Canvas.LineTo(x1-35,y1-155);

//nosik
Form1.Canvas.Brush.Color:=clWhite;
Form1.Canvas.Ellipse(x1-55,y1-120,x1-45,y1-114);
Form1.Canvas.MoveTo(x1-50,y1-114);
Form1.Canvas.LineTo(x1-50,y1-110);
Form1.Canvas.MoveTo(x1-55,y1-110);
Form1.Canvas.LineTo(x1-45,y1-110);

//ruchki //l
Form1.Canvas.MoveTo(x1-65,y1-65);
Form1.Canvas.LineTo(x1-65,y1-55);
Form1.Canvas.LineTo(x1-67,y1-48);
Form1.Canvas.LineTo(x1-70,y1-50);
Form1.Canvas.LineTo(x1-75,y1-60);

//ruchki //r
Form1.Canvas.MoveTo(x1-35,y1-65);
Form1.Canvas.LineTo(x1-35,y1-55);
Form1.Canvas.LineTo(x1-33,y1-48);
Form1.Canvas.LineTo(x1-30,y1-50);
Form1.Canvas.LineTo(y1-25,y1-60);

//hvostik
Form1.Canvas.Brush.Color:=clYellow;
Form1.Canvas.MoveTo(x1-25,y1-5);
Form1.Canvas.LineTo(x1+10,y1-15);
Form1.Canvas.LineTo(x1+25,y1-35);
Form1.Canvas.LineTo(x1+50,y1-120);

Form1.Canvas.Arc(x1+50,y1-130,x1+30,y1-110,x1+50,y1-120,x1+30,y1-120);
Form1.Canvas.MoveTo(x1+30,y1-120);
Form1.Canvas.LineTo(x1+5,y1-35);
Form1.Canvas.LineTo(x1-20,y1-15);
//zrachki
Form1.Canvas.brush.Color:=clBlack;
Form1.Canvas.Ellipse(x1-58,y1-137,x1-62,y1-133);

Form1.Canvas.Ellipse(x1-42,y1-137,x1-38,y1-133);

end;

end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
risunok;
end;

end.
Надежда.. вне форума Ответить с цитированием
Старый 20.12.2008, 21:35   #9
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

У вас всё движение влево или вправо зависит от строчки x:=x+dx;. Следовательно можете использовать такой вариант вместо этой строки:
Код:
var
x, y, dx: integer;
Nap: Boolean;
...
If Nap=False Then
Begin
x:=x+dx;
End
Else
Begin
x:=x-dx;
End;
If X>=Form1.Width Then
Begin
Nap:=True;
End;
If X=0 Then
Begin
Nap:=False;
End;
Всегда рад помочь!

Последний раз редактировалось Terran; 20.12.2008 в 21:39.
Terran вне форума Ответить с цитированием
Старый 20.12.2008, 21:59   #10
Надежда..
Пользователь
 
Регистрация: 13.12.2008
Сообщений: 12
По умолчанию

он у меня стукается об стенку, как только дотрагивается до правово бока кота.. как это изменить? И вы не ответили, есть ли вы в аське/агенте?
Надежда.. вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод рисунка на печать -=<[Evklidd]>=- Мультимедиа в Delphi 10 09.07.2010 18:38
WinApp на C++, замазывание рисунка mat90x Помощь студентам 1 18.06.2008 21:48
Помогите с настройкой рисунка GrEFon HTML и CSS 4 13.12.2007 18:52
Разгупировка рисунка asale Microsoft Office Excel 1 23.10.2007 22:30
движение изображения с зеркальным отображением от стенок nev Помощь студентам 6 11.06.2007 21:38