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

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

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

> Бегающий Смайл на экране
at0m
сообщение 15.10.2006 6:30
Сообщение #1


Новичок
*

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

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


Исходный код таков:
uses crt, graph;
type str20 = string[20];
menu = array [1..3] of str20;
const mm:menu=('Free Motion ','With Keyboard','Exit ');
var i,j:integer;
gD,gM:integer;
x,y:word;
dx,dy:shortint;
ch:char;
k:byte;
function readChar:char;
var c:char;
begin
c:=readkey;
if c=#0 then c:=readkey;
readchar:=c;
end;
function case_k(ch:char; k:byte):byte;
begin
case ch of
#72: if k>1 then k:=k-1 else k:=3;
#80: if k<3 then k:=k+1 else k:=1;
end;
case_k:=k;
end;
procedure showstring(k1,k2:byte; s:str20; gr,cl:byte);
begin
textbackground(gr);
textcolor(cl);
gotoXY(k1,k2);
write(s);
end;
procedure redraw;
begin
setcolor(0);
circle(x-dx,y-dy,20);
line(x-dx,y-dy-5,x-dx,y-dy+5);
circle(x-dx+10,y-dy-8,5);
circle(x-dx-10,y-dy-8,5);
circle(x-dx+23,y-dy-5,3);
circle(x-dx-23,y-dy-5,3);
arc(x-dx,y-dy+8,180,360,7);
setcolor(15);
circle(x,y,20);
line(x,y-5,x,y+5);
circle(x+10,y-8,5);
circle(x-10,y-8,5);
circle(x+23,y-5,3);
circle(x-23,y-5,3);
arc(x,y+8,180,360,7);
end;
BEGIN
clrscr;
window(31,11,50,16);
for k:=3 downto 1 do showstring(1,k,mm[k],1,14);
repeat
showstring(15,k,' ',0,4);
showstring(1,k,mm[k],1,14);
k:=case_k(ch,k);
showstring(15,k,chr(17),0,4);
showstring(1,k,mm[k],7,1);
ch:=readchar;
until (ch=#13) or (ch=#32);
textbackground(0);
textcolor(15);
window(1,1,80,25);
clrscr;
gD:=Detect;
initgraph(gD,gM,'');
SetLineStyle(UserBitLn, $C3, NormWidth);
SetColor(GetMaxColor);
dx:=5;
dy:=5;
x:=50;
y:=50;
case k of
1: while not keypressed do
begin
if (x>=610) or (x<=30) then dx:=-dx;
if (y>=455) or (y<=30) then dy:=-dy;
x:=x+dx;
y:=y+dy;
redraw;
delay(1100);
end;
2: repeat
redraw;
ch:=readkey;
if (ch=#75) and (x>30) then
begin
dx:=-3;
dy:=0;
x:=x+dx;
end;
if (ch=#77) and (x<610) then
begin
dx:=3;
dy:=0;
x:=x+dx;
end;
if (ch=#72) and (y>30) then
begin
dx:=0;
dy:=-3;
y:=y+dy;
end;
if (ch=#80) and (y<455) then
begin
dx:=0;
dy:=3;
y:=y+dy;
end;
until (ch=#13) or (ch=#32);
3: halt;
end;
closegraph;
END.

А из этого мне нужно преобразовать следующее:
1)Движение со сменой направления на границах экрана с диагонального на вертикальное и наоборот
2)Управление функциональными клавишами F1(0,59), F2(0,60), F3(0,61), F4(0,62).


--------------------
Студент (:
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 



- Текстовая версия 27.07.2025 4:05
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"