Помощь - Поиск - Пользователи - Календарь
Полная версия: Самолет в пространтсве
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Styleofjune
Привет всем , совсем недавно я наткнулся на задание , и сразу же сел в лужу как его делать , помогите мне кто чем может пожалуйста , а вот и задача:
При запуске программы должна выскочить менюшка , где написано "Свободное движение , с помощью клавиатуры , выход)
Свободное:Движение со сменой направления на границах экрана с диагонального на вертикальное и наоборот
Спомощью клавиатуры: F1(0,59), F2(0,60), F3(0,61), F4(0,62).
ну а летать должен самолетик sad.gif , помогите пожалуйста , я даже заплатить смогу , ну действительно срочно нужно
Lapp
Цитата(Styleofjune @ 27.11.2006 6:38) *

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

Styleofjune, ты уж определись - если платишь, то иди в раздел "Задачи на заказ". Если продолжишь здесь - то, возможно, потребуется твое активное участие и некоторое время..
В любом случае, определи условие почетче:
- менюшка в тексте или в графике?
- что делают эти четыре клавиши?
- как прорисован самолет (в плане, профиль, 3/4, размер, детализация ..)?
- должен ли он поворачиваться в сторону движения?
- как осуществляется возврат в меню?..
Styleofjune
Ну запускается программа и сразу в центре экрана появляется меню , как я поняла графческое
F1 - влево
F2 - вправо
F3 - вверх
F4 - вниз
Самолетик обычный , 2д плоское изображение
двигается просто , не разварачивается
а возврата в меню нету , нажимаем любую клавишу и выход
Помогите пожалуйста , ну я совсем не поняла эту графику , спасибо
Lapp
Ты решила остаться в бесплатном разделе - так? Оно и правильно, тебе больше будет пользы от этого.

Меню в графике - вещь не самая тривиальная.. Если ты не совсем уверена, то лучше узнай поточнее, чем мучиться с выравниванием текста и т.п. Думаю, в результате код меню получится значительно больше, чем код основной части. Судя по тому, что тебе не надо в меню возвращаться, смею предположить, что текстовое сойдет.

Можно разбить задачу на несколько частей:
- движение (точки) по экрану
- управление движением
- прорисовка самолета
- меню

Как у тебя с Паскалем? Начни, а мы поможем..
Styleofjune
Андрей понимаешь , меню я смогла сделать , а вот с движением и изображением самолета возникли проблемыsad.gif
Lapp
Цитата(Styleofjune @ 27.11.2006 12:33) *

Андрей понимаешь , меню я смогла сделать , а вот с движением и изображением самолета возникли проблемыsad.gif

Какого рода проблемы?
Покажи хотя бы безуспешные попытки..

Общий принцип такой:
- делаешь процедуру для рисования самолета с двумя параметрами: положение и цвет;
- вызов этой процедуры с белым цветом - это его рисование, с черным - стирание;
- потом следующая последовательность действий: нарисовать-подождать-стереть-сдвинуть-нарисовать. Это будет выглядеть как движение.
Styleofjune
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
#61: if k>1 then k:=k-1 else k:=3;
#62: if k<3 then k:=k+1 else k:=1;
end;
case_k:=k;
end;
{dalee druz'ya napisalo chto-to no tak i ne ponala}
procedure showstring(k1,k2:byte; s:str20; gr,cl:byte);
begin
textbackground(gr);
textcolor(cl);
gotoXY(k1,k2);
write(s);
end;
procedure redraw;
begin

{a tut kak ya ponala mne nado narisovat samoletik}

end;
BEGIN
clrscr;



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.


ВОт отрывками все поделала sad.gif , запуталась блин
Я все сделала , закройте тему
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.