Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2009, 18:01   #21
Djels
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 36
По умолчанию

Да, это я знаю, поэтому я эту часть впихнул в процедуру. А в основную программу вставил меню, из которого я вызываю процедуру. После этих действий игра запускается, но сама игра страшно ломается. Короче говоря, из всего, что я делал получилось только приблизительно то, чего я добиваюсь.
Djels вне форума Ответить с цитированием
Старый 27.05.2009, 18:10   #22
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Djels, ну значит плохо вынесли в процедуру.
Для начала добейтесь того, чтобы в теле программы вызывалась только одна процедура - начало игры. И вот когда все будет работать как надо, тогда и прикручивайте меню.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 27.05.2009, 18:13   #23
Djels
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 36
По умолчанию

Sazary, ладно... спасибо. Я, в принципе, это и делал.
Djels вне форума Ответить с цитированием
Старый 27.05.2009, 18:48   #24
Djels
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 36
По умолчанию

Вот я начал без игры, просто, чтобы на NEW GAME вылазило сообщение "HELLOWORLD".
Код:
program www;
uses crt,graph;
const
  kolvo_punkt=4;
  name_punkt:array [1..kolvo_punkt]of string=('NEW GAME','vihod','Help', 'table');

  var
  KEY:CHAR;
  ST,ST1:STRING;
  punkt:integer;
  current: integer;
  driver,mode,detect:integer;
  Procedure Print_menu(numb_punkt:integer);
    const
      h_punkt=30;
      h_prom=20;
      w_punkt=100;
      x_beg=320-round(w_punkt/2);
      h_menu=h_punkt*kolvo_punkt+h_prom*(kolvo_punkt-1);
      y_beg=240-round(h_menu/2);
    var
     i,x2,y1,y2:integer;
    begin
     CLEARDEVICE;

     FOR i:=1 to kolvo_punkt do
      begin
       if i=numb_punkt then
       setfillstyle(1, 12)
       else setfillstyle(11,4);
       y1:=y_beg+(h_punkt+h_prom)*(i-1);
       y2:=y1+h_punkt;
       x2:=x_beg+w_punkt;
       bar3D(x_beg,y1,x2,y2,5,TOPON);
       setTextjustify(1,1);
       outtextxy(320,y1+ROUND(h_PUNKT/2),name_punkt[i]);
      end;

    end;

    procedure LOLO;
    begin
    clrscr;
    writeln('hello world');
    end;

    procedure Vibor;
    begin
    print_menu(1);
punkt := 1;
repeat
KEY := readkey;
case KEY of
 '1' : begin print_menu(1); punkt := 1; end;
 #13 : case punkt of
          1 :LOLO ;
          end;
 end;
 until KEY = #27;
         end;


 PROCEDURE Print_win(x,y,color:INTEGER);

   begin
   window(x,y,x+29,y+9);
   texTbackground(color);
   clrscr;
  end;



BEGIN
driver:=detect ;
initgraph(driver,mode,'e:/bp/bgi');
punkt:=1;
clrscr;
repeat
 print_menu(punkt);
 key:=readkey;
 if ord(key)=0 then
   begin
    key:=readkey;
    if ord (key)=72 then
      if punkt=1 then punkt:=kolvo_punkt else dec(punkt);
    if ord (key)=80 then
      if punkt=kolvo_punkt then punkt:=1 else inc(punKt);
    end;
untiL(ORD(KEY)=13);

readln;
closegraph;
end.
Здесь, я не пойму, как процедуру Vibor привязать)) Помогите плиз
Djels вне форума Ответить с цитированием
Старый 27.05.2009, 18:52   #25
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Здесь, я не пойму, как процедуру Vibor привязать))
А что это за процедура? Я что-то не понял, для чего она.
Вот так сделайте:
Код:
BEGIN
driver:=detect ;
initgraph(driver,mode,'e:/bp/bgi');
punkt:=1;
clrscr;
repeat
 print_menu(punkt);
 key:=readkey;
 if ord(key)=0 then
   begin
    key:=readkey;
    if ord (key)=72 then
      if punkt=1 then punkt:=kolvo_punkt else dec(punkt);
    if ord (key)=80 then
      if punkt=kolvo_punkt then punkt:=1 else inc(punKt);
    end;
untiL(ORD(KEY)=13);

case punkt of
 1 : LOLO;
 end;

readln;
closegraph;
end.
(тело проги)
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 27.05.2009, 19:28   #26
Djels
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 36
По умолчанию

Спасибо большое!) я что-то с самого начала подумал, что нужно было в отдельную процедуру это запихать))
Сейчас работает почти, как нужно. Вот только такая загвоздка - теперь все элементы типа "outtextxy(130,130'бла бла бла')" сдвинулись влево. Это в чем может быть ошибка?
Djels вне форума Ответить с цитированием
Старый 27.05.2009, 19:35   #27
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от Djels
Вот только такая загвоздка - теперь все элементы типа "outtextxy(130,130'бла бла бла')" сдвинулись влево. Это в чем может быть ошибка?
Где это? О каких элементах идет речь?
Лучше скрин.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 27.05.2009, 19:39   #28
Djels
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 36
По умолчанию

Вот:


До этого все надписи были по-середине. Сейчас они сдвинулись влево. Хотя я в игровом коде ничего не менял.
Djels вне форума Ответить с цитированием
Старый 27.05.2009, 19:45   #29
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Сложно сказать. Ведь у вас надписи выводятся в процедуре disk и смещение по x задается статично. Уверены, что не изменяли значения?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 27.05.2009, 19:48   #30
Djels
Пользователь
 
Регистрация: 27.05.2009
Сообщений: 36
По умолчанию

Да. точно не менял. Просто все резко сдвинулось влево. И надписи выводятся не только в disk, но и в основной игровой процедуре тоже. Как будто значения x привязались к чему-то и сдвинулись вместе с этим чем-то
Djels вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Меню Dem6 Паскаль, Turbo Pascal, PascalABC.NET 3 10.04.2009 16:43
Для доступа к пунктам главного меню клавиши ALT + подчеркнутая буква меню в офис 2007? Окоча Юра Microsoft Office Word 1 24.02.2009 12:29
Меню с Items в виде набора Bitmap (как меню редактирования в Word'е) chandrasecar Мультимедиа в Delphi 7 14.01.2009 09:20
Меню Witaliy Общие вопросы Delphi 4 27.04.2008 22:45
МЕНЮ Delpher HTML и CSS 4 25.12.2007 15:37