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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2010, 14:28   #1
Timon779
Пользователь
 
Регистрация: 01.03.2010
Сообщений: 24
По умолчанию Перенос матрицы в графический режим

Здравствуйте! У меня такая проблема. Надо сделать курсовую (игра на паскале). Суть игры: лягушка прыгает по листикам на болоте, листики то уменьшаются, то пропадают, также на игровом экране есть места, где они вообще не появляются, по этим листикам нужно перепрыгнуть с одного конца болота на другой. Итак, вот что я сделал:

Код:
uses graph;

var  gd,gm,error: integer;

begin

  gd:=VGA;   {адаптер VGA}

  gm:=VGAHi; {режим 640*480пикс.*16 цветов}

  initgraph(gd,gm,'');

  error:=graphresult;

  if error <> grOk then begin

   write ('Ошибка графики: ',

     grapherrormsg(error));

   readln; halt;

  end;

  bar(0,0,480,400);

  readln; closegraph;

end.
^Этот текст отображает на экране прямоугольник, с отношением сторон 6:5, теперь мне нужно разбить этот прямоугольник на матрицу, у которой по x будет 6 клеток, а по y будет 5 клеток. Гуглил и яндексил очень долго, но так и не нашёл, как перевести матрицу в графический режим.

Последний раз редактировалось Stilet; 09.06.2010 в 16:25.
Timon779 вне форума Ответить с цитированием
Старый 09.06.2010, 14:58   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

проходите в цикле по матрице, и, отображайте (создавайте) объект по заданному смещению!

щас пример набросаю...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.06.2010, 15:05   #3
Timon779
Пользователь
 
Регистрация: 01.03.2010
Сообщений: 24
По умолчанию

заранее спасибо, жду примера) на словах тяжело понять, что именно делать надо
Timon779 вне форума Ответить с цитированием
Старый 09.06.2010, 16:06   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Код:
uses graph;

const
  MaxX = 6;
  MaxY = 5;


var gd, gm, error: integer;
  MainField : array[1..MaxX,1..MaxY] of byte;
  i, j : integer; 
  DX, DY : integer;


begin

  gd := VGA; {адаптер VGA}

  gm := VGAHi; {режим 640*480пикс.*16 цветов}

  initgraph(gd, gm, '');

  error := graphresult;

  if error <> grOk then begin

    write('Ошибка графики: ',

      grapherrormsg(error));

    readln; halt;

  end;

  bar(0, 0, 480, 400);
  DX := 480 div MaxX;
  DY := 400 div MaxY;

  { к примеру в матрице
    0 - ничего
    1 - листик
    2 - листик с лягушкой
  }
  MainField[3,3]:= 2;
  MainField[1,1]:= 1;
  MainField[1,2]:= 1;
  MainField[2,3]:= 1;
  MainField[6,5]:= 1;



  {вывод матрицы}
  for i:=1 to MaxX do
    for j:=1 to MAxY do begin
      case MainField[i,j] of
        0: begin {тут можно вывод пустой клетки сделать...} end;
        1: begin
              SetFillStyle(XHatchFill, Green);
              bar((i-1)*DX, (j-1)*DY, i*DX, j*DY);
           end;
        2: begin
              SetFillStyle(SolidFill, RED);
              bar((i-1)*DX, (j-1)*DY, i*DX, j*DY);
           end;
      end;
    end;



  readln; closegraph;

end.
p.s. Это только ПРИМЕР отображение игрового поля... (кстати, лягушку надо через граф.примитивы нарисовать....
p.p.s. возможно, что с координатами X Y я напутал... посмотрите, при необходимости поменяете местами...

p.p.p.s. не забывайте при публикации Вашего кода на форуме использовать тэги [СODE][/СODE] (ставятся кнопочкой с # )
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.06.2010, 16:09   #5
Timon779
Пользователь
 
Регистрация: 01.03.2010
Сообщений: 24
По умолчанию

Огромное спасибо! Сейчас буду пробовать
Timon779 вне форума Ответить с цитированием
Старый 09.06.2010, 17:02   #6
Timon779
Пользователь
 
Регистрация: 01.03.2010
Сообщений: 24
По умолчанию

c MainField покрыл всю матрицу) Только как круги на квадраты поменять? там вроде как x,y и r надо указать. Но это в var или только в самом circle?
Timon779 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Графический режим в FP fire_on Паскаль, Turbo Pascal, PascalABC.NET 1 17.01.2010 13:16
Графический режим galaid Паскаль, Turbo Pascal, PascalABC.NET 2 05.05.2009 17:51
Графический режим в С Raz0r Помощь студентам 4 03.03.2008 16:49