IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> задача на графику, Движение круга вокруг оси
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Мужской

Репутация: -  0  +


Добрый вечер всем, у меня тут проблемы с графикой
Задача: Двухцветный круг вращается вокруг вертикальной оси. При нажатии пробел останавливается
uses crt,Graph;
var
	GraphDriver,GraphMode,i:integer;
	col,x,y,r:word;
	s:string;
begin
	GraphDriver:=detect;
	GraphMode:=1;
	InitGraph(graphDriver,GraphMode,'');
	repeat
	r:=100;
	x:=100;
	y:=100;
	col:=white;
	if col=8 then col:=2;
	SetColor(col);
	circle(r,x,y);
	SetFillStyle(red,white);
	floodFill(x,y,col);

	until KeyPressed;
	readln;
	CloseGraph;


У меня вроде круг есть, но незнаю как его заставить вращаться, ну и с пробелом тоже не ясно, подскажите пожалста


--------------------
И никто его так и не узнал*)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


Движение объектов
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Мужской

Репутация: -  0  +


Вобщем так, я переделал всю программу, теперь круг действительно вращается, но теперь он лишь одного цвета, Пожалуйста подскажите как сделать его двухцветным!

uses crt, Graph;
const t=2000;
      x1=30;
      y1=30;
var
   gd, Gm:integer;
   a,b,c:integer;
   ind:integer;
   x,y,i,d:integer;

begin
Gd:=vga;
gm:=vgamed;
initgraph(gd,gm,'');
a:=0;
b:=1;
x:=GetmaxX div 2;
y:=GetMaxY div 2;
  while true do
   begin

 d:=1;
  while i<>31 do
   begin
     if  keypressed then
  if readkey=' ' then
    begin
      while not keypressed do
      if readkey =' ' then break
       else if readkey='x' then begin halt;end;
    end;
   setactivepage(a);
    setvisualpage(b);
    clearviewport;
    setfillstyle(1,red);
    setcolor(red);
   fillellipse (x,y,i,y1);
 
    delay(t);
    c:=a;
    a:=b;
    b:=c;
    i:=i+d;
   if i=x1 then
begin
setfillstyle(1,green);
setcolor(green);
   d:=d*-1;
end;
   if i<0 then
   d:=d*-1;
    end;
 end;
end.



--------------------
И никто его так и не узнал*)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


while true do
меня это очень удивило, а тебя??
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Мужской

Репутация: -  0  +


Цитата(Client @ 9.01.2008 17:47) *

while true do
меня это очень удивило, а тебя??

Пока правда то...что тут?
Программа работает сама! Но цвет один, у мменя в этом запара...


--------------------
И никто его так и не узнал*)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Цитата
меня это очень удивило, а тебя??
А меня - нет... Что удивительного? Ну, не хочет человек заранее проверять условие при котором цикл прервется, а предпочитает выйти по Halt()-у... Ничего противозаконного (за исключением, разве что, отсутствия CloseGraph) в этом нет...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Мужской

Репутация: -  0  +


Товарищи...у меня завтра экзамен, у меня на шее висит 4 долга, этот в их числе...с остальными кое как понятно, но тут, ...помогите с цветом...очень прошу


--------------------
И никто его так и не узнал*)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Ты объясни, что значит
Цитата
делать его двухцветным
? То есть, ты хочешь, чтобы у тебя как бы крутился диск, с одной стороны красный, а с другой - зеленый? Или что?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Мужской

Репутация: -  0  +


Цитата(volvo @ 9.01.2008 18:10) *

Ты объясни, что значит ? То есть, ты хочешь, чтобы у тебя как бы крутился диск, с одной стороны красный, а с другой - зеленый? Или что?

Да, с одной красной, с другой зелёной, именно это и надо)


--------------------
И никто его так и не узнал*)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






  setfillstyle(1,red);
  setcolor(red);
  while true do begin
    d := 1;
    while i<>31 do begin
      if keypressed then
        if readkey=' ' then begin
          while not keypressed do
            if readkey =' ' then break
            else
              if readkey='x' then begin
                halt;
              end;
        end;


    setactivepage(a);
    setvisualpage(b);
    clearviewport;
    fillellipse (x,y,abs(i),y1); { <--- Внимательнее, здесь Abs, иначе вылетает }

    delay(t);
    c:=a;
    a:=b;
    b:=c;
    i:=i+d;

    if i=x1 then d := -d;

    if i < 0 then begin
      d := -d;
      if getcolor = red then begin
        setfillstyle(1,green);
        setcolor(green);
      end
      else begin
        setfillstyle(1,red);
        setcolor(red);
      end;
    end;
  end;

?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Мужской

Репутация: -  0  +


Цитата(volvo @ 9.01.2008 18:20) *

  setfillstyle(1,red);
  setcolor(red);
  while true do begin
    d := 1;
    while i<>31 do begin
      if keypressed then
        if readkey=' ' then begin
          while not keypressed do
            if readkey =' ' then break
            else
              if readkey='x' then begin
                halt;
              end;
        end;
    setactivepage(a);
    setvisualpage(b);
    clearviewport;
    fillellipse (x,y,abs(i),y1); { <--- Внимательнее, здесь Abs, иначе вылетает }

    delay(t);
    c:=a;
    a:=b;
    b:=c;
    i:=i+d;

    if i=x1 then d := -d;

    if i < 0 then begin
      d := -d;
      if getcolor = red then begin
        setfillstyle(1,green);
        setcolor(green);
      end
      else begin
        setfillstyle(1,red);
        setcolor(red);
      end;
    end;
  end;

?

Да! Большое пребольшое спасибо тебе))) Ты меня спас)


--------------------
И никто его так и не узнал*)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.04.2025 13:24
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name