|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
23.09.2012, 15:18 | #11 | |
Форумчанин
Регистрация: 18.10.2010
Сообщений: 419
|
Цитата:
по-моему, наилучшее решение - это взять множество ВСЕХ клеток, исключить из него множество клеток, в которых находится змейка, и нужную клетку выбирать из оставшихся клеток. |
|
23.09.2012, 21:22 | #12 |
Пользователь
Регистрация: 06.09.2012
Сообщений: 14
|
xrob, Вы правы на счет первого варианта, поэтому я и реализовал второй.
|
26.09.2012, 13:02 | #13 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,882
|
Забыл отписать, позавчера сел порефакторить в педагогических целях код, вот выкладываю. Там, кстати, реализован этот второй способ - без перебора "пока не попал в пустую клетку", а именно взятием случайного числа(номера клетки в наборе) из набора гарантированно пустых клеток.
Что хочу сказать. Для начала - хорошо, что пошли правильным путём и начали с малого - со змейки, причём на готовых элементах - шейпах, имейджах и т.п. Я советую продолжать дальше и поизучать "важные" темы из этого раздела (раздела игр) - там очень много учебной информации - как раз по написанию игровых составляющих на дельфи. В первую очередь, хочу посоветовать направить усилия на кодирование графики "руками" - т.е. без шейпов, имейджей и т.п. - хотя бы чисто на канвасе. Можно более универсально работать над вводом - от мыши и клавиатуры. Начать работать с файлами - для динамической подгрузки контента (а то, что в имейджах лежит - оно прикомпилируется в экзешник и менять малореально без той же дельфи и тем более исходных кодов) и выгрузки игровых данных типа сейвов, карт, таблиц рекордов. Ещё надо направить усилия на большее структурирование и алгоритмизирование кода - выделение структур, подпрограмм, массивов, методов обработки всего этого, возможно подступиться к динамическому программированию(на указателях). Потом можно перейти к классам (ооп) и /или движкам и сложным системам. В этих вопросах, в приницпе, можете всецело рассчитывать на мою помощь и консультацию. Последний раз редактировалось phomm; 26.09.2012 в 13:09. |
28.09.2012, 15:35 | #14 |
Пользователь
Регистрация: 06.09.2012
Сообщений: 14
|
Именно этим я сейчас и занят, думал, что это тяжело, без шейпов-то, имейджов, а нет, нужно было просто освоиться.
Начал писать "стратегию" накидал имейджов штук 10-это были только кнопки меню, сразу понял, что так дело не пойдет, поудалял все, начал писасть заново на канве - совсем другое дело, смотришь, и глаз радуется, на форме пустота, только один таймер красуется. (Просто у меня через Paint, который у формы, не получилось выводить изображение ). А вообще, канва- это вещь! Пока что вопросов у меня не возникло. Хотя есть один: как указать, какой цвет будет прозрачным у битмапа? Если писать так: Код:
А как левый верхний пиксель? Пробовал так - не получилось: Код:
|
28.09.2012, 16:03 | #15 |
CAE Engineer
Пользователь
Регистрация: 10.03.2011
Сообщений: 75
|
Код:
|
28.09.2012, 16:33 | #16 |
CAE Engineer
Пользователь
Регистрация: 10.03.2011
Сообщений: 75
|
У вас ошибки где-то в другом месте. Я тут по быстрому наваял используя ваш метод и у меня все заработало. Эта команда действительно берет левый верхний пиксель.
1prj.zip Там по кнопкам посмотрите. Один вариант простая отрисовка. Другой вариант с использованием прозрачности по левому верхнему пикселю. Чтобы было понятно, я создал массив, похожий на ваш. Если что-то непонятно, то задавайте вопросы. Тупо скопированный код пользы не принесет. Единственный момент, что в моем коде небольшой недочет. Если нажимать в первую очередь на кнопку DrawWithTransparent, то из-за того что Transparent:=True;, вторая кнопка Draw нарисует тоже с прозрачностью. Поэтому для наглядности сначала нажимайте кнопку Draw, потом DrawWithTransparent. Но главный ответ на вопросы в коде Последний раз редактировалось EridorBlade; 28.09.2012 в 16:41. |
28.09.2012, 16:45 | #17 |
Пользователь
Регистрация: 06.09.2012
Сообщений: 14
|
EridorBlade, спасибо за содействие. Оказалось, это из-за меня прозрачность не работала!
После этого: Код:
Код:
|
04.10.2012, 22:08 | #18 |
Пользователь
Регистрация: 06.09.2012
Сообщений: 14
|
Доброе время суток, дорогие форумчане!
У меня опять возник небольшой вопрос, как можно реализовать чтение из txt файла? Т.е. имеется поле 16*16, при размещении на него какого-либо объекта, n-ной ячейке в текстовом документе присваивается номер объекта, пустые ячейки соответственно заполняются 0, записать - записал, а прочитать и подгрузить из файла не могу, в голову мысли не лезут. Вот пример текстового файла: Код:
|
04.10.2012, 23:28 | #19 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,882
|
В виде байтов не проще писать и читать будет ? или надо пока что без редактора, исправлять всё в текстовом виде ?
Если именно текстовый, то можно читать в строковую переменную посимвольно, а когда найден пробел/конец строки, преобразовывать полученное в число и записывать в массив для карты в памяти программы. |
05.10.2012, 15:07 | #20 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Slin, текстовые редакторы очень часто не показывают "левые" символы, которые могут мешать чтению из файла, а если встретится технический символ "конца файла" данные обрежутся на пол пути.
Следует использовать тип File Of Byte. Просматривать данные можно в Hex Editor. Вначале лучше изучить работу потоков, ...потом, создав MemoryStream просто заливаешь в него файл, и работаешь с ним в потоке, считывая по одному байту. Можно так же перегнать из потока в динамический массив и гонять в произвольном режиме доступа. Показать пример, или не нужно сложностей? ...это эффективнее.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Игра "Змейка" на 2 персоны | [Dethklok] | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 07.06.2011 14:24 |
Assembler.Игра "змейка". | Пупкин | Помощь студентам | 0 | 27.05.2010 00:08 |
Игра "Змейка" | program123 | Общие вопросы Delphi | 2 | 08.03.2009 23:49 |
Игра "Змейка" | spamer | Общие вопросы Delphi | 1 | 09.01.2009 04:22 |
Ещё одна игра "Змейка" | Simply-Art | Софт | 17 | 05.07.2007 04:10 |