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

 





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