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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Внимание! Есть замечания модератора по теме: Название темы должно адекватно отражать суть решаемой задачи/проблемы.
Старый 09.07.2013, 10:40   #11
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Мики6277 Посмотреть сообщение
Подскажите как мне сделать лучше зарисовать кружочек цветом фона и нарисовать новый или есть лучший способ?
зарисовать кружочек цветом фона и нарисовать новый.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.07.2013, 10:43   #12
Мики6277
Пользователь
 
Регистрация: 07.07.2013
Сообщений: 32
По умолчанию

Цитата:
. Цитата:

circle(lx+20,ly+20);

Вот тут Вы указали только координаты X и Y, забыв о радиусе
Я добавила в первом коде координаты радиуса, кружочек нарисовался, но не передвигался.

Последний раз редактировалось Мики6277; 09.07.2013 в 10:49.
Мики6277 вне форума Ответить с цитированием
Старый 09.07.2013, 10:51   #13
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Код:
uses graph,crt;
var u,ou:pointer; ch: char; curx, cury, curx0, cury0, dx, dy, lx, ly, hx, hy: integer;
    size: word;
procedure dv(dx, dy: integer);
  begin


setcolor(0);
setfillstyle(1,0);
circle(lx,ly,20);
floodfill( lx,ly, 0);

  lx:=lx+dx;
  ly:=ly+dy;

  setcolor(4);
  setfillstyle(1,4);
  circle(lx,ly,20);
  floodfill( lx,ly, 4);
  end;
procedure graphinterface;
var gd, gm, error: integer;
begin
gd:=detect;
initgraph( gd, gm, '');
error:=graphresult;
if error<>grok then
    begin
   writeln(grapherrormsg(error));
   halt(error)
    end
    end;

begin
graphinterface;

lx:=100;
ly:=100;


setcolor(4);
setfillstyle(1,4);
circle(lx,ly,20);
floodfill( lx,ly, 4);

repeat
 ch:=readkey;
 if ch=#0 then
     begin
     ch:=readkey;

     case ch of
     #77:dv(5, 0); // вправо


     #75:dv( -5, 0); // влево

     #72:dv(0, -5); // вверх

     #80:dv(0, 5); // вниз

     end;

     end;

    until ch=#27;


readln;
closegraph;
end.
Poma][a вне форума Ответить с цитированием
Старый 09.07.2013, 18:55   #14
Мики6277
Пользователь
 
Регистрация: 07.07.2013
Сообщений: 32
По умолчанию

Спасибо большое. Я сделала так как вы написали, но прогграмма все равно не работает. Вернее, все каки раньше. Кружочек появился, а при нажатии кнопок ничего не происходит. Подскажите, что еще можно сделать. Какие есть еще способы заставить объект двигаться, при помощи клавиатуры?
Мики6277 вне форума Ответить с цитированием
Старый 09.07.2013, 19:21   #15
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Спасибо большое. Я сделала так как вы написали, но прогграмма все равно не работает. Вернее, все каки раньше. Кружочек появился, а при нажатии кнопок ничего не происходит. Подскажите, что еще можно сделать. Какие есть еще способы заставить объект двигаться, при помощи клавиатуры?
Мне кажется Вы не до конца разобрались с графикой в Free. После того как Вы запустили программу, у Вас откроется 2 окна, в одном будет картинка, в другое окошечко, Вы будете нажимать кнопочки.
Poma][a вне форума Ответить с цитированием
Старый 09.07.2013, 19:31   #16
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Замени это
Код:
uses graph,wincrt;
puporev вне форума Ответить с цитированием
Старый 09.07.2013, 22:44   #17
Мики6277
Пользователь
 
Регистрация: 07.07.2013
Сообщений: 32
По умолчанию

Ага. Значит кнопочки надо нажимать в консольном окне.( я дура) Спасибо, он пошел. А во Free можно сделать это как-то красивее, ну чтобы всё в одном окне и как или нет?
Мики6277 вне форума Ответить с цитированием
Старый 09.07.2013, 22:51   #18
Golden_RUS
Пользователь
 
Регистрация: 23.01.2013
Сообщений: 34
По умолчанию

При использовании CRT,будет создано 2 окна,в 1 окну будет непосредственно графика,а кликать по кнопкам надо во втором окне(обязательно оно должнобыть в этот момент по верх всех окон).
Golden_RUS вне форума Ответить с цитированием
Старый 10.07.2013, 00:08   #19
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от Golden_RUS Посмотреть сообщение
При использовании CRT,будет создано 2 окна,в 1 окну будет непосредственно графика,а кликать по кнопкам надо во втором окне(обязательно оно должнобыть в этот момент по верх всех окон).
Иными словами, фокус должен быть на консольном окне, то есть, оно должно быть активно
Вадим Мошев вне форума Ответить с цитированием
Старый 10.07.2013, 18:13   #20
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
А во Free можно сделать это как-то красивее, ну чтобы всё в одном окне и как или нет?
Можно. Для этого в uses пишем не Crt, а WinCrt.
Poma][a вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рекурсия: Дается длина полоски из клеточек и 3 длины: полосок красного,синего и желтого цвета.Требуется набрать заданную длину MagAragorn Паскаль, Turbo Pascal, PascalABC.NET 14 26.04.2013 15:02
В чем ошибка Evgen87 Помощь студентам 2 06.03.2012 18:14
В чем ошибка Игрушка96 Помощь студентам 4 05.03.2012 21:07
В чем ошибка? KISSkaэсМЕральда Помощь студентам 0 07.11.2010 12:40
ошибка в графике V@mpire Общие вопросы C/C++ 1 06.06.2010 14:36