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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2010, 19:04   #1
aiktz
Форумчанин
 
Регистрация: 10.03.2009
Сообщений: 104
По умолчанию бильярд в Дельфи

привет! нарисовала бильярд, по столу движется шарик....но как нарисовать лузы и чтобы шарик в лузы закатывался???? помогите пожалуйста!!!!!!!

Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);


  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  bx,by: real;
  bc: integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
label 10;
var

x,r,i,y,dx,dy: integer;
z:real;
begin
dx:=5;
dy:=5;
Canvas.Pen.Style:=psSolid;
Canvas.Brush.Color :=clGreen;
Canvas.Pen.Color :=clBlack;

canvas.Rectangle(150,150,600,350);
x:=160;
y:=160;
r:=10;
10:
x:=x+dx;
y:=y+dy;
if x>585 then dx:=-dx;
if y>334 then dy:=-dy;
if x<163 then dx:=-dx;
if y<163 then dy:=-dy;
Canvas.Pen.Style:=psSolid;
Canvas.Brush.Color :=clRed;
Canvas.Pen.Color :=clBlack;
canvas.Ellipse(x-r,y-r,x+r,y+r);

for i:=1 to 1000000 do
z:=Sin(5);
 Canvas.Pen.Style:=psSolid;
Canvas.Brush.Color :=clGreen;
Canvas.Pen.Color :=clGreen;
canvas.Ellipse(x-r,y-r,x+r,y+r);

goto 10;

end;
end.

Последний раз редактировалось Stilet; 17.04.2010 в 13:44.
aiktz вне форума Ответить с цитированием
Старый 16.04.2010, 21:05   #2
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Принципиально неправильный подход к построению программы.Всё "впихнуто" в одну процедуру - цикл по БЕЗУСЛОВНОМУ переходу. Даже штатно завершить программу невозможно, только аварийным выходом.
Следует разбить программу на части (процедуры):
- инициализация переменных (FormCreate);
- отрисовка поля биллиарда (FormPaint);
- пуск движения шара (ButtonOnClick); - это можно исключить, установив по умолчанию сразу запуск таймера (Enabled:= true
- организация движения шара (OnTimer);
Пример во вложении.
Для попадания шара в лузу - создайте проверку совпадения координат шара и лузы.
Вложения
Тип файла: rar Billiard.rar (6.0 Кб, 83 просмотров)
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Старый 16.04.2010, 21:19   #3
aiktz
Форумчанин
 
Регистрация: 10.03.2009
Сообщений: 104
По умолчанию

ммм...мне так препод объяснял....спасибо!!
aiktz вне форума Ответить с цитированием
Старый 16.04.2010, 21:22   #4
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

А Вы все таки посмотрите вложение, запустите проект и почувствуйте разницу. От препода берите максимум полезного, но и развивайте самостоятельность.
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Старый 17.04.2010, 13:38   #5
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

aiktz, единственный оправданный случай применять безусловный переход goto, это выход из вложенных циклов. В остальных случаях не рекомендуется, сильно страдает читаемость кода.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 17.04.2010, 15:09   #6
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

от mutabor
Цитата:
В остальных случаях не рекомендуется, сильно страдает читаемость кода.
Применние оператора GOTO оправдано во многих случаев. Почему- то считается , что это некрасиво (мягко сказано). Да нормальный оператор, и применяется в необходимых случаях.
Да вся информатика построена на принципах :
- присвоение;
- сравнение;
- условный переход;
- безусловный переход;
- циклы ( один из видов безусловных переходов);
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Старый 04.05.2010, 15:12   #7
Dezolyator
Пользователь
 
Регистрация: 12.01.2009
Сообщений: 19
По умолчанию

такую прогу бы на с+ написать))
Dezolyator вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
БД В дельфи Bilargo Помощь студентам 3 08.12.2009 21:46
for (дельфи) drikusik# Помощь студентам 3 06.12.2009 21:27
производительность БД в Дельфи gene2109 БД в Delphi 12 01.08.2008 22:45
ПРОблема с дельфи by -ORTODOX- Общие вопросы Delphi 10 14.03.2008 18:21