1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code]. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Readkey и стрелочки., Символы ('a'..'Z') я понимаю как прописать... А как пр
Задача такая : Нужно сделать программу, в которой в начале нужно ввести колличество углов для многоугольника, затем программа должна создать этот многоугольник, и при нажатии стрелочек многоугольник должен двигатся в сторону стрелочек, а если нажать на клавишу "+" или "-" то фигура должна увеличиваться/уменьшаться.
Проблема вот в чем. Я все сделал, все работает, только не могу никак стрелочками задать движения и масштаб... Вот такой я ламер... Метод типа #72 не могу понять...Хелп читал, поиск тоже...
Сейчас выполняется всё путем нажатия на 'a' - 's' - 'd' - 'w' (Движение), 'q' - 'e' (Масштаб), 'z' - 'x' (Изменение углов). Помогите параллельно им дописать стрелочки (Т.е. не заменить, а чтоб паралельно приписать)...
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.