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

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

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

 
 Ответить  Открыть новую тему 
> задача на графику, Движение круга вокруг оси
Инкогнито
сообщение 24.12.2007 18:26
Сообщение #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 
 К началу страницы 
+ Ответить 
Ozzя
сообщение 25.12.2007 12:38
Сообщение #2


Гуру
*****

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

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


Движение объектов
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Инкогнито
сообщение 9.01.2008 17:40
Сообщение #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 
 К началу страницы 
+ Ответить 
Client
сообщение 9.01.2008 17:47
Сообщение #4


Профи
****

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

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


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


Новичок
*

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

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


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

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

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


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


Гость






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


Новичок
*

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

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


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


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


Гость






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


Новичок
*

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

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


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

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

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


--------------------
И никто его так и не узнал*)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 9.01.2008 18:20
Сообщение #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;

?
 К началу страницы 
+ Ответить 
Инкогнито
сообщение 9.01.2008 18:35
Сообщение #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.07.2025 20:12
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"