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

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

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.08.2010, 17:34   #501
Alexan-Dwer
Форумчанин
 
Аватар для Alexan-Dwer
 
Регистрация: 20.04.2009
Сообщений: 136
По умолчанию

Цитата:
В каком смысле выглядит не эффектно?
Не знаю, возможно, это я уже придираюсь. Так же не понятно поведение формы при Alt+Tab: Во всех играх при полноэкранном режиме выкидывает на рабочий стол, а у меня форма как бы отходит на задний план и видно лишь диспетчер задач.
Хорошо, пусть будет так. Если я правильно понимаю, то особой разницы между теми примерами, которые я привел, нет. Поэтому я выбрал:
Код:
Form1.BorderStyle:=bsNone;
Form1.Top:=0; Form1.Left:=0;
Form1.Width:=Screen.Width; Form1.Height:=Screen.Height;
Вопрос в том, всегда ли компонент Screen правильно возвращает размер?
Alexan-Dwer вне форума Ответить с цитированием
Старый 09.09.2010, 23:36   #502
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Цитата:
Вопрос в том, всегда ли компонент Screen правильно возвращает размер?
А проверить?
Если есть сомнения - используйте WinAPI...
Цитата:
Не знаю, возможно, это я уже придираюсь. Так же не понятно поведение формы при Alt+Tab: Во всех играх при полноэкранном режиме выкидывает на рабочий стол, а у меня форма как бы отходит на задний план и видно лишь диспетчер задач.
Окно во весь экран и полноэкранный режим - это не одно и то же...
Цитата:
при Alt+Tab
Ну можно попробовать запретить Alt+Tab...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 17.10.2010, 15:58   #503
DenTiSt
Пользователь
 
Регистрация: 08.04.2010
Сообщений: 19
По умолчанию

Вот мне тоже интересно: как включить полноэкранный режим в Delphi? Просто форма на весь экран - выглядит не очень, т.к. она просто будет закрывать собой рабочий стол и панель задач (хотя у меня не закрывает панель задач), и окна с более высоким приоритетом (типа диспетчера задач) будут вылазить на верх. Другое дело, как сделать так, чтобы только моя программа была на экране? Например, в Pascal при нажатии alt+enter или в консольном приложении Delphi окно разворачивается в полноэкранный режим, как в современных 3D-играх. Как сделать такой же эффект в "обычном" приложении на Delphi?
DenTiSt вне форума Ответить с цитированием
Старый 17.10.2010, 16:27   #504
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

Ну, можете заюзать directX/openGL и создать полноэкранный контекст. Ну или FormStyle:=fsStayOnTop...
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Старый 23.11.2010, 23:07   #505
like_cloud
Пользователь
 
Аватар для like_cloud
 
Регистрация: 09.12.2009
Сообщений: 29
По умолчанию

ребят,есть вопрос:

есть несколько элементов в графике через канву. они двигаються друг за другом гуськом. Т.е. типа как в змейке. Уже несколько часов ломаю голову над алгоритмом. Подскажите? можно без кода,просто словестно (хочется все-таки до конца додумать уже самому)
like_cloud вне форума Ответить с цитированием
Старый 23.11.2010, 23:21   #506
0nni
Форумчанин
 
Аватар для 0nni
 
Регистрация: 24.07.2008
Сообщений: 279
По умолчанию

Цитата:
Сообщение от like_cloud Посмотреть сообщение
ребят,есть вопрос:

есть несколько элементов в графике через канву. они двигаються друг за другом гуськом. Т.е. типа как в змейке. Уже несколько часов ломаю голову над алгоритмом. Подскажите? можно без кода,просто словестно (хочется все-таки до конца додумать уже самому)
Если конкретно змейка, то все просто. Удаляешь один элемент в конце и добавляешь один вначале. Если нужно что бы змейка росла, то добавляешь не удаляя.
Сказал и загрустил от бесспорности своей правоты.
0nni вне форума Ответить с цитированием
Старый 23.11.2010, 23:39   #507
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

"Змейка" - это одномерный массив. Каждая ячейка - звено змейки. Каждое звено имеет X и Y координату клетки в которой находится. "Перемещение" начинается с хвоста. Каждое звено берет себе координаты вышестоящего, и в финале головное звено перемещается в нужном направлении от текущего положения. Далее отрисовка змейки в нужном положении по массиву.

При смещении головного звена выполняется проверка всего массива, на предмет столкновения с самим собой (координаты головы равны координатам одного из звеньев). Рост змейки - это когда массив увеличивается на 1 ячейку, головное звено становится вторым, а новое - головным. Все координаты остаются прежними, просто добавляется еще одно звено, с координатами в зависимости от направления движения.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 07.12.2010, 16:49   #508
Enlightened
Пользователь
 
Регистрация: 15.08.2010
Сообщений: 24
По умолчанию

Kostia, в посте №125 вы выложили игру, спасибо за исходники, я стал разбираться и не все понял. Не могли бы вы мне разъяснить эти 2 куска кода - столкновения по Х и У координатам:
Код:
function CollisionX(c:byte): boolean;
begin
  Result:=False;
  if (map[round(xp+sx+4)div 16,round(yp+sy+4)div 16]=c)or
     (map[round(xp+sx+4)div 16,round(yp+sy+11)div 16]=c)or
     (map[round(xp+sx+11)div 16,round(yp+sy+4)div 16]=c)or
     (map[round(xp+sx+11)div 16,round(yp+sy+11)div 16]=c)then
     Result:=True;
end;

function CollisionY(c:byte): boolean;
begin
  Result:=False;
  if (map[round(xp+4)div 16,round((yp+sy+4))div 16]=c)or
     (map[round(xp+11)div 16,round((yp+sy+4))div 16]=c)then
     Result:=true;
end;
Откуда взялись цифры 4 и 11? 0_о
Я пишу арканоид, так же, на канве, массив храниться отдельно, считывается, рисуется со смещением на игровое поле, как мне организовать подобные функции?
Подскажите плз
Enlightened вне форума Ответить с цитированием
Старый 19.12.2010, 22:50   #509
Asker13
Форумчанин
 
Аватар для Asker13
 
Регистрация: 01.12.2010
Сообщений: 140
По умолчанию

В одном посте приводился следующий код, который проверяет нажата ли определённая клавиша:
Код:
function IsKeyDown(Key: byte): boolean;
begin
  Result := false;
  if (Keys[Key] = 128) or (Keys[Key] = 129) then Result := true;
end;
А можно ли как-нибудь наоборот: получить код нажатой клавиши и вообще определить, нажата хоть какая-нибудь клавиша или нет. Подразумевается, что события формы OnKeyDown, OnKeyPress и OnKeyUp не используются.
Asker13 вне форума Ответить с цитированием
Старый 19.12.2010, 23:44   #510
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Кажется, оно:
GetKeyState
GetKeyboardState
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хорошие уроки Render Общие вопросы Delphi 9 15.09.2012 07:13
Акцесс вопросы новичков Yaga Помощь студентам 4 02.06.2008 00:16
Учебники для новичков в програмировании Рар Общие вопросы Delphi 6 08.01.2007 08:07