Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 15 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 12.12.2015, 20:25   #1
Kognor
 
Регистрация: 11.12.2015
Сообщений: 3
Репутация: 10
По умолчанию не управляемое движение по двумерному массиву

Дана матрица n на m
нужно сделать с помощью процедуры не управляемое движение по двумерному массиву для игры, для монстров
Kognor вне форума   Ответить с цитированием
Старый 12.12.2015, 20:46   #2
Stilet
Белик Виталий :)
Профессионал
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Адрес: Украина, Донецкая область, г. Краматорск
Сообщений: 57,815
Репутация: 6850
По умолчанию

Какого рода движение?
__________________
I'm learning to live...
Stilet вне форума   Ответить с цитированием
Старый 12.12.2015, 20:56   #3
Kognor
 
Регистрация: 11.12.2015
Сообщений: 3
Репутация: 10
По умолчанию

по квадрату если можно или просто по горизонтали ли вертикали
Kognor вне форума   Ответить с цитированием
Старый 12.12.2015, 21:00   #4
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,857
Репутация: 6688
По умолчанию

И шаг какой?
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар на форуме   Ответить с цитированием
Старый 12.12.2015, 22:08   #5
Kognor
 
Регистрация: 11.12.2015
Сообщений: 3
Репутация: 10
По умолчанию

у меня один блок 64 на 43
шаг в двумернном масиве нужен сдвиг на 1 единицу по массиву
Kognor вне форума   Ответить с цитированием
Старый 12.12.2015, 22:15   #6
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,857
Репутация: 6688
По умолчанию

Random(4) - 0-влево, 1-вверх, 2-вправо,3-вниз. Если мешает граница - повторить
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар на форуме   Ответить с цитированием
Старый 13.12.2015, 11:38   #7
newerow1989
Я самый любопытный
Профессионал
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Адрес: RU, Алтайский край, Красногорский р-н, с. Балыкса, ул. Центральная Сообщений: 7,541 Репутация: 37104
Сообщений: 1,767
Репутация: 1655

skype: newerow1989
По умолчанию

Вот по периметру (образец):
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Kvadrat(x,y:integer;c:tColor);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

const
  n=64;
  m=43;
  delta=8;

var
  Form1: TForm1;
  x,y,dx,dy:integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
   Label1.Caption:='';
   Label1.AutoSize:=false;
   Label1.Color:=clWhite;
   Label1.Width:=n*delta;
   Label1.Height:=m*delta;
   x:=0;
   y:=0;
   dx:=1;
   dy:=0;
end;

procedure TForm1.Kvadrat(x, y: integer; c: tColor);
begin
   x:=x*delta;
   y:=y*delta;
   With Label1.Canvas do
   begin
      Pen.Color:=c;
      Brush.Color:=c;
      Rectangle(x,y,x+delta,y+delta);
   end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
   Kvadrat(x,y,Label1.Color);
   x:=x+dx;
   y:=y+dy;
   If x>n-1 then
   begin
      x:=x-dx;
      dx:=0;
      dy:=1;
   end;
   If y>m-1 then
   begin
      y:=y-dy;
      dx:=-1;
      dy:=0;
   end;
   If x<0 then
   begin
      x:=x+1;
      dx:=0;
      dy:=-1;
   end;
   If y<0 then
   begin
      y:=y+1;
      dx:=1;
      dy:=0;
   end;
   Kvadrat(x,y,clRed);
end;

end.
Сойдет?
__________________
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.narod.ru
[Паскаль] [Delphi]
newerow1989 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
malloc (выделение памяти двумерному массиву) Lifeda92 Общие вопросы C/C++ 18 28.08.2014 00:17
Вопрос по двумерному массиву EdvardAvd Помощь студентам 16 26.11.2013 17:24
как пройти по двумерному массиву realgleb Общие вопросы C/C++ 9 10.05.2012 21:36
процедура к двумерному массиву Alenaa Паскаль 1 11.11.2011 19:34
Поиск числа по двумерному массиву. Ibanez Wizard Assembler 2 31.03.2011 13:52


23:33.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru