Результаты поиска
| |
Saitei | Дата: Среда, 14 Мая 2014, 19:46 | Сообщение # 761 | Тема: [Assembler]Snake game |
старожил
Сейчас нет на сайте
| last2424, мешают некоторые ограничения, не осиливаю. Для современных ОС несомненно написал бы, ведь там доступны 32-ух и 64-ех разрядные регистры. Мой косяк, отмазываться не буду... >< beril, да, играть и вправду никто не будет. Но я решил сделать парочку алгоритмических задачек, для опыта так сказать... Скоро на ассемблере буду писать крестики-нолики. Потом по плану платформер на С++!
Сообщение отредактировал Saitei - Среда, 14 Мая 2014, 19:47 |
|
| |
Saitei | Дата: Среда, 14 Мая 2014, 18:18 | Сообщение # 762 | Тема: Голосование за проекты конкурса "Gamiron №7" |
старожил
Сейчас нет на сайте
| Я за ChinaTown
|
|
| |
Saitei | Дата: Среда, 14 Мая 2014, 17:12 | Сообщение # 763 | Тема: [Assembler]Snake game |
старожил
Сейчас нет на сайте
| OoOoOoO, спасибо, приятно)) Жалко что рандом не доделал...
|
|
| |
Saitei | Дата: Среда, 14 Мая 2014, 17:06 | Сообщение # 764 | Тема: [Assembler]Snake game |
старожил
Сейчас нет на сайте
| last2424, цитирую: Цитата Прерывание (англ. interrupt) — сигнал, сообщающий процессору о наступлении какого-либо события. При этом выполнение текущей последовательности команд приостанавливается, и управление передаётся обработчику прерывания, который реагирует на событие и обслуживает его, после чего возвращает управление в прерванный код.[1]
В зависимости от источника возникновения сигнала прерывания делятся на:
асинхронные, или внешние (аппаратные) — события, которые исходят от внешних источников (например, периферийных устройств) и могут произойти в любой произвольный момент: сигнал от таймера, сетевой карты или дискового накопителя, нажатие клавиш клавиатуры, движение мыши. Факт возникновения в системе такого прерывания трактуется как запрос на прерывание (англ. Interrupt request, IRQ); синхронные, или внутренние — события в самом процессоре как результат нарушения каких-то условий при исполнении машинного кода: деление на ноль или переполнение стека, обращение к недопустимым адресам памяти или недопустимый код операции; программные (частный случай внутреннего прерывания) — инициируются исполнением специальной инструкции в коде программы. Программные прерывания как правило используются для обращения к функциям встроенного программного обеспечения (firmware), драйверов и операционной системы.
Термин «ловушка» (англ. trap) иногда используется как синоним термина «прерывание» или «внутреннее прерывание». Как правило, словоупотребление устанавливается в документации производителя конкретной архитектуры процессора. +все прерывания ОС базируются на прерываниях BIOS. BIOS - Базовая система ввода\вывода. Без биоса от компьютера останется холодное железо, которое просто не сможет запуститься. Первым запускается BIOS
Сообщение отредактировал Saitei - Среда, 14 Мая 2014, 17:10 |
|
| |
Saitei | Дата: Среда, 14 Мая 2014, 17:05 | Сообщение # 765 | Тема: GameDev — что нужно знать и какую технологию выбрать? |
старожил
Сейчас нет на сайте
| Цитата mlpmmo (  ) Уважаемые OoOoOoO, и Saitei, назовите минимум 10 кантор, которые возможно будущая работа OoOoOoO, специализирующиеся по играм или где востребованы изучаемые технологии cool Ааам... И нечего мне тыкать что я тыкаю всем конструктором, просто я сам на нем сижу и меня все устраивает, я не парюсь в изучении ЯП или новых технологий. Просто как хобби в удовольствие рисую типа программирую что мне надо, и даже сетевой проект тяну. Спасибо за внимание! tongue Игроку без разницы на чём сделана игра и как она устроена внутри. Игроку главное видеть action на экране и не уставать от него. Для игростроя надо нечто большее, чем понимание технологий. Геймплей - вот что важно. Лично я готов играть в игры даже с самой древней графикой, главное чтобы я (потребитель) получил удовольствие от игры. Лично я качаю скилл в сторону C++ && OpenGL, однако это мне не мешает резко перейти на другой ЯП. Ведь во время перехода самое сложное - найти эквиваленты тем знаниям, которые были получены ранее. Быть игроделом - это полёт души. Можно получать большой кайф, но при этом ничего не заработать, это верно. Но и заработать ух как реально, главное найти золотую жилу. Тот же Play Market - там хотя бы человек 100 купит за 1$ никому ненужный календарик, что уж там говорить о играх. Если человек придумает инновационную идею и сможет её реализовать - почему же возможность заработка обречена на неудачу? Здесь главное целенаправленное стремление и упорство. Нужный инструментарий зависит от человека. Раньше я тащился от Game Maker, но после четырёх лет мне кажется, что проще писать код без всяких красивостей и кнопок. Да, конструкторы делали не дураки, они так же позволяют минимизировать время, потраченное на разработку игры. Однако чистый код даст полную власть над процессом создания игр. Это очень непривычно сначала, особенно если не знать основ языка программирования, но со временем этот скилл ох как пригодится. Сейчас мне всего 18 лет, программировать на С++ начал с 14. Я писал убогие подобия игр, в которые играть было просто невозможно. Но каждый раз, когда я признавал свои ошибки, я рос. Я и сейчас расту. И в будущем я смогу найти себе работу, ведь С++ будет куда перспективнее, чем конструкторы игр в этом плане. Да и C#, и C, и другие... - та же история. Тот же Unity, UDK - для серьезного проекта кнопками не отделаться. Но зато эти движки дают куда больше возможностей, чем конструкторы игр. И они очень востребованы. Как и CryEngine специалисты.
Это я веду к тому, что если человек хочет рубить лопатой деньги - легко. Даже на конструкторе игр. Однако конструктор игр позволит в дальнейшем увеличивать доход? Сомневаюсь. Нужно нечто серьезнее
Сообщение отредактировал Saitei - Среда, 14 Мая 2014, 17:16 |
|
| |
Saitei | Дата: Среда, 14 Мая 2014, 16:50 | Сообщение # 766 | Тема: [DOS][TASM]Рандом в диапазоне |
старожил
Сейчас нет на сайте
| wcpt, я что-то слышал о возможностях расширения DOS. Всё равно нельзя открыть регистры "покрупнее"?
|
|
| |
Saitei | Дата: Среда, 14 Мая 2014, 16:43 | Сообщение # 767 | Тема: [Assembler]Snake game |
старожил
Сейчас нет на сайте
| Пространство: 2D Начало разработки: 11.05.2014 Конец разработки: 13.05.2014 Язык программирования: Assembler Source code: клац Часто задаваемые вопросы: В: Что?! Опять змейка?? О: Да, это змейка. Игра "питон", если точнее. Писалось чисто для себя.
В: Как это скомпилировать? О: Используйте компилятор для TASM
В: ОК. Но игра не запускается... Почему? О: Многие современные операционные системы запрещают использовать прерывания BIOS. Запустите с помощью DOSBox или (информация не 100%) с помощью Windows XP.
В: Зачем так париться с эмуляцией? Смысл писать игру под DOS? О: Во-первых, в DOS есть много ограничений, что и делает разработку интересной. Кроме того, вместо того чтобы писать игру используя готовые решения, я писал игру с чистейшего листа, без API DOS (за исключением прерывания DOS 21h в кое-каком случае)
В: Я подобрал еду. Потом второй раз она не подбирается, прорисовывается "сверху" змеи... Почему? О: Я не успел дописать рандом. В коде это вы увидите... Буду надеяться, что кто-то сообразит и переделает его Да и вообще некоторые фичи не реализованы. Я долго думал: "доделывать ли?" и пришёл к выводу, что лучше я выложу слегка недоделанную игру, чтобы у другого человека была возможность доделать\переделать мою программу. Она не претендуют на место "лучшей программы", я даже видел и читал змейку куда меньше, чем у меня... Но, думаю, змейка в 4 кб - достойный результат! =)
Управление: W,A,S,D - движение Скриншоты:
Сообщение отредактировал Saitei - Воскресенье, 18 Мая 2014, 19:24 |
|
| |
Saitei | Дата: Среда, 14 Мая 2014, 14:57 | Сообщение # 768 | Тема: GameDev — что нужно знать и какую технологию выбрать? |
старожил
Сейчас нет на сайте
| Цитата Edison6 (  ) на самом деле довольно интересно и перспективно. ты если не программировал то не говори. +1. Этим можно вполне заработать на хлеб.
|
|
| |
Saitei | Дата: Среда, 14 Мая 2014, 14:31 | Сообщение # 769 | Тема: Написание простого игрового движка |
старожил
Сейчас нет на сайте
| mlpmmo, ну, если себе поставить чётко цель то всё возможно. Года 4 назад я считал идею "своего движка" проигрышной, думал что написать свой невозможно. Ошибался. Теперь мне куда удобнее писать и использовать "своё" Хотя если человек не хочет прокачивать скилл программиста по-максимуму, а хочет игру, тогда да, надо брать готовые движки\конструкторы)
|
|
| |
Saitei | Дата: Среда, 14 Мая 2014, 13:39 | Сообщение # 770 | Тема: Написание простого игрового движка |
старожил
Сейчас нет на сайте
| Cazza144, такого не существует. Сначала напиши игру. Потом напиши такой движок, на котором можно будет сделать эту же игру, но в разы легче
Сообщение отредактировал Saitei - Среда, 14 Мая 2014, 13:50 |
|
| |
Saitei | Дата: Вторник, 13 Мая 2014, 18:51 | Сообщение # 771 | Тема: [DOS][TASM]Рандом в диапазоне |
старожил
Сейчас нет на сайте
| Цитата wcpt (  ) вот это же не прокатит на дос, разве нет? да, не прокатит... Таких регистров в нём "как бы" нет
|
|
| |
Saitei | Дата: Вторник, 13 Мая 2014, 18:50 | Сообщение # 772 | Тема: Вопрос-Ответ (C++) |
старожил
Сейчас нет на сайте
| Цитата Storm54 (  ) Там я добавил указатель на последний элемент. smile Но это не отменяет того факта, что это реализация списка, а не вектора) Если придется идти к среднему элементу будет точно так же..) OpenGOO, дело в том, что вектор берет элементы с "запасом", чтобы зря не перевыделять память. Т.е:Цитата OpenGOO (  ) 3 4 если, имея 3 элемента, мы сделаем push_back, то память выделяться не будет, элемент всего лишь встанет в конец
|
|
| |
Saitei | Дата: Вторник, 13 Мая 2014, 02:54 | Сообщение # 773 | Тема: Вопрос-Ответ (C++) |
старожил
Сейчас нет на сайте
| Storm54, я особо в код не вчитывался, но очень уж смахивает на реализацию однонаправленного списка. И конечно же это будет медленно работать, т.к. чтобы добраться до сотого элемента надо пройти через 99 предыдущих GameMix, в теме уже кто-то написал дельный комментарий. Когда мы делаем new, мы говорим что нам нужен непрерывный участок памяти из программной кучи. Хорошо, мы взяли такой участок в 8 байт. Захотели положить ещё 4 байта. Следовательно что значит "положить"? По логике вещей это значит продлить этот участок, т.е. добавить рядышком ещё 4 байта и склеить всё "в нечто одно". Однако мы не в сказке живём, участки памяти справа\слева могут быть заняты другими программами. Следовательно: как бы мы ни крутились, придется заново выделять память под массив. std::vector работает аналогично, просто берет массив с "запасом". Для того, чтобы добавить элемент в массив надо: 1)Создать временный массив и скопировать в него значения 2)Для первоначального вновь выделить память, но так, чтобы в него поместился ещё один элемент 3)В первоначальный массив положить старые значения 4)В последний элемент записать значение, которое нужно 5)(в зависимости от способа хранения промежуточных данных)освободить память, выделенную под промежуточный массив Цитата GameMix (  ) -l33t-h4xx-, воу-воу, тон поубавь, ок? Я не писал тебе в ЛС с просьбой помочь мне. Не хочешь со мной возиться, проходи мимо. Одними учебниками много не научишься, на форумах можно узнать такое, какого в книгах не видел. Не согласен? -Не пытайся меня переубедить smile Я тоже не согласен :)
Сообщение отредактировал Saitei - Вторник, 13 Мая 2014, 03:01 |
|
| |
Saitei | Дата: Воскресенье, 11 Мая 2014, 21:29 | Сообщение # 774 | Тема: [DOS][TASM]Рандом в диапазоне |
старожил
Сейчас нет на сайте
| last2424, Цитата DOS является однозадачной операционной системой. После запуска управление передаётся прикладной программе, которая получает в своё распоряжение все ресурсы компьютера и может осуществлять ввод-вывод посредством как функций, предоставляемых операционной системой, так и функций базовой системы ввода-вывода (BIOS), а также работать с устройствами напрямую.
DOS имеет консольную систему ввода-вывода и поддерживает три стандартных потока: stdin, stdout и stderr.
DOS — 16-битная операционная система, работающая в реальном режиме, поэтому для расширения возможностей и преодоления ограничений реального режима были созданы так называемые расширители DOS. Они запускают программы в защищённом 32-битном режиме и эмулируют исходные сервисы операционной системы. Обычно они поддерживают стандарт DOS Protected Mode Interface (DPMI). Самый известный и широко используемый (в компьютерных играх) расширитель — DOS/4GW. Современные windows не дают доступ к прерываниям BIOS, только дают доступ к своему API. По задаче, которую поставили мне и я её должен решить, я должен всё писать "с нуля", используя лишь "своё". Следовательно у меня должен быть доступ к прерываниям BIOS.
Вопрос ещё актуален. Как же рандом написать?
|
|
| |
Saitei | Дата: Воскресенье, 11 Мая 2014, 21:23 | Сообщение # 775 | Тема: Регенерация здоровья на PHP |
старожил
Сейчас нет на сайте
| Стёрто. Ляпнул глупость, пардон)
Сообщение отредактировал Saitei - Воскресенье, 11 Мая 2014, 21:25 |
|
| |
Saitei | Дата: Воскресенье, 11 Мая 2014, 21:19 | Сообщение # 776 | Тема: Вопрос-Ответ (C++) |
старожил
Сейчас нет на сайте
| GameMix, Код int *a = new int; int i = 0, count, number = 0;
do { number++; if (number == 100500) continue; a[i] = *new int; a[i] = number; i ++; } while (number != 100500); Попробовал искусственно создать 100500 элементов и столкнулся с ошибкой памяти. Скорее всего происходит работа с теми участками из программной кучи, которые не зарегистрировались.
И, насколько я знаю, чтобы добавить новый элемент в динамичееский массив Q, надо создать второй массив и скопировать туда массив, потом для Q выделить память на единицу больше, чем раньше, скопировать со второго массива и в самый конец засунуть новый элемент. По крайней мере так я понимаю работу того же std::vector. Могу ошибаться
|
|
| |
Saitei | Дата: Воскресенье, 11 Мая 2014, 21:09 | Сообщение # 777 | Тема: Регенерация здоровья на PHP |
старожил
Сейчас нет на сайте
| LunarPixel, присоединяюсь к такому подходу. Разве что дополнение: надо проверять, а нужна ли регенерация. Если нет - то и время проверять смысла нет
|
|
| |
Saitei | Дата: Воскресенье, 11 Мая 2014, 20:59 | Сообщение # 778 | Тема: Регенерация здоровья на PHP |
старожил
Сейчас нет на сайте
| Derpie, я не особо много на PHP сидел, но так можно получить часы\минуты\секунды: Код $info = getdate(); $hour = $info['hours']; $min = $info['minutes']; $sec = $info['seconds']; Где-то на сервере (в текстовом файле или базе) надо хранить переменную "А нужно ли регенерировать?" и переменную со временем последней регенерации. Дальше над мелочами сам подумай. Модуль разности это всего лишь расстояние. Пример: 2-3 = -1 //Ничего необычного l2-3l = 1 //Т.к. 2-3<0, то модуль равен 1. Но, думаю, ты это итак понимаешь и знаешь Ни в коем случае не делай регенерацию на javascript, иначе в игре появятся игроки с... кхм... god mode'ом : ))
|
|
| |
Saitei | Дата: Воскресенье, 11 Мая 2014, 20:36 | Сообщение # 779 | Тема: Регенерация здоровья на PHP |
старожил
Сейчас нет на сайте
| Цитата Derpie (  ) Цитата lvovand () можно смотреть время между кликами игрока и в зависимости от прошедшего времени считать здоровье
Можно поподробнее? Можно получить серверное время и сравнить с тем, когда была последняя регенерация. Если модуль разности времен >=5 минут, то делаем регенерацию
Сообщение отредактировал Saitei - Воскресенье, 11 Мая 2014, 20:37 |
|
| |
Saitei | Дата: Воскресенье, 11 Мая 2014, 20:32 | Сообщение # 780 | Тема: [DOS][TASM]Рандом в диапазоне |
старожил
Сейчас нет на сайте
| Помогите пожалуйста. Уже второй день мозг мучаю, ничего не выходит. Хотелось бы получить db
|
|
| |
|