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

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

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

> Readkey и стрелочки., Символы ('a'..'Z') я понимаю как прописать... А как пр
сообщение
Сообщение #1


Гость






Добрый день.

Задача такая : Нужно сделать программу, в которой в начале нужно ввести колличество углов для многоугольника, затем программа должна создать этот многоугольник, и при нажатии стрелочек многоугольник должен двигатся в сторону стрелочек, а если нажать на клавишу "+" или "-" то фигура должна увеличиваться/уменьшаться.

Проблема вот в чем. Я все сделал, все работает, только не могу никак стрелочками задать движения и масштаб... unsure.gif Вот такой я ламер... Метод типа #72 не могу понять...Хелп читал, поиск тоже...

Сейчас выполняется всё путем нажатия на 'a' - 's' - 'd' - 'w' (Движение), 'q' - 'e' (Масштаб), 'z' - 'x' (Изменение углов). Помогите параллельно им дописать стрелочки (Т.е. не заменить, а чтоб паралельно приписать)... rolleyes.gif

Код прилагаю (Рабочий на 100%).

Uses Crt, Graph;
Var
GraphDriver, GraphMode : Integer;
Index : Integer;
Palette : PaletteType;
Color: Word;
NGon : Integer;
NGonAngle : Real;
NGonArray : Array [3..20] of PointType;
Zoom : Real;
PosX, PosY : Integer;
Key : Char;

Function IntToStr(IntToStrI : Longint) : String;
Var
IntToStrS: string;
begin
Str(IntToStrI, IntToStrS);
IntToStr := IntToStrS;
end;

Procedure GraphAsk;
Label 1;
Begin
1: Writeln('Pogalujsta, vvedite kollichestvo uglov u mnogougolnika : ');
Read(NGon);
If (NGon > 20) or (NGon < 3) then Goto 1;
Readln;
End;

Procedure GraphInit;
Begin
GraphDriver := Detect;
InitGraph(GraphDriver, GraphMode, '');
If GraphResult<> grOk Then
Halt(1);

Zoom := 50;
PosX := (GetMaxX div 2);
PosY := (GetMaxY div 2);
End;

Procedure GraphMenu;
Begin
Rectangle(0,0,639,479);
Rectangle(0,0,162,10);
Rectangle(0,10,106,40);
Rectangle(106,10,162,40);

OutTextXY(2,2,'Using driver :' + GetDriverName);
for Index := 0 to GetMaxMode do
OutTextXY(2, (10 * Succ(Index)) + 2, GetModeName(Index));

GetPalette(Palette);
If Palette.Size <> 1 Then
For Color := 0 to Pred(Palette.Size) do
Begin
SetColor(Color);
Line(107,10 + (Color * 2), 161,10 + (Color * 2));
End;

OutTextXY(107,12,IntToStr(Color+1) + 'Color');

End;

Procedure GraphDraw;
Begin
NGonAngle := 360 div NGon;
For Index := 1 to NGon do
Begin
NGonArray[Index+2].X:=PosX + Trunc(Zoom*(Cos(NGonAngle*(Pi)*Index/180)));
NGonArray[Index+2].Y:=PosY + Trunc(Zoom*(Sin(NGonAngle*(Pi)*Index/180)));
End;
Circle(PosX,PosY,1);
DrawPoly(NGon,NGonArray);
Line((NGonArray[3].X),(NGonArray[3].Y),(NGonArray[NGon+2].X),(NGonArray[NGon+2].Y));
End;

Procedure GraphWork;
Label 1;
Begin
Repeat
1:GraphMenu;
OutTextXY(2,470,'PRESS "c" to QUIT!');
GraphDraw;
Key := Readkey;
If Key = 'c' then Break;
If Key = 's' then
Begin
PosY := PosY + 5;
ClearViewPort;
Goto 1;
End;
If Key = 'w' then
Begin
PosY := PosY - 5;
ClearViewPort;
Goto 1;
End;
If Key = 'd' then
Begin
PosX := PosX + 5;
ClearViewPort;
Goto 1;
End;
If Key = 'a' then
Begin
PosX := PosX - 5;
ClearViewPort;
Goto 1;
End;
If Key = 'q' then
Begin
Zoom := Zoom + 5;
ClearViewPort;
Goto 1;
End;
If Key = 'e' then
Begin
Zoom := Zoom - 5;
ClearViewPort;
Goto 1;
End;
If Key = 'z' then
Begin
NGon := NGon + 1;
If NGon > 18 Then NGon := 18;
ClearViewPort;
Goto 1;
End;
If Key = 'x' then
Begin
NGon := NGon - 1;
If NGon < 1 Then Ngon := 1;
ClearViewPort;
Goto 1;
End;
If Key <> #0 then goto 1;
Until False;
End;

Begin
GraphAsk;
GraphInit;
GraphWork;
CloseGraph;
End.


 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 





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