Помощь - Поиск - Пользователи - Календарь
Полная версия: Самолет в пространтсве
Форум «Всё о Паскале» > 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 , запуталась блин
Я все сделала , закройте тему
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.