| 
 Кротчайший путь для поиска кораблей и тотальное уничтожение Сегодня узнал о том, что pspowner программирует "Морской бой" как сингл, тоесть для одного игрока, а в роли другого учавствует AI (тоесть искусственный интелект ЗЫЗы :) ) Желаем удачи pspowner'у ! И вот какую тему хотелось бы затронуть: "Кротчайший путь для поиска кораблей и тотальное уничтожение" У нас имеется матрица 10х10 (ну это для примера). В неизвестных, для нас и AI, точках находятся корабли 1-4 палуб. Мы знаем, что корабли не могут соприкосаться друг с другом, минимальный интервал между бортами двух кораблей - одна клетка. Какой механизм поиска верного пути вы бы предложили попадая с первого выстрела во вражеский корабль (если он не однопалубный) ? добавлено через 41 минуту Я бы предложил следующее: Оганизуем структуру: Код:  target.x = 10; target.y = 10; target.direction = 0; target.count = 0; Если target.direction нулевой, то продолжаем определять другую координату для стрельбы (это может быть простым рандомом) И вот, при очередной стрельбе мы попадаем. Если корабль 1 балуба. убили его. Если не убит то нацеливаемся дальше. Нацелить можно по следующей схеме: Код:     if (target.direction == 1 )  target.next.x++;Если на пути target.direction встречается промах, а target.count > 2, то нам достаточно инвентировать target.direction и откатить координату на target.count, что бы продолжить в другом направлении от начальной точки выстрела. Вот вобщем-то и всё! | 
| 
 Я сегодня утром успел только, пока не припахали, написать начало графики. Даже полной расстановки кораблей пока нет.  И нужно избавиться от мелких багов и упорядочить текст, а то каша пока :) добавлено через 52 минуты Да, вот чё хотел спросить: ReadBufferPositive - у меня гадина отрабатывает по 5 раз на нажатие(ну в цикле когда), приходится лепить холостые циклы. Обнуление Buttons ничего не даёт. SamplingCycle(1) - я так понимаю что-то вроде typematic rate - помогает на 1.5, а как делать на 2.71-2.80? Онаж там не размечена... | 
| 
 В своем СДК я определил SamplingCycle, но его работоспособность не проверял. В своих программах я использовал простейший путь решения проблемы: Код: int i; | 
| 
 Сейчас уже разобрался со случайными числами, почти... Во первых, имперически выяснил, что int rand(), не возвращает отрицательных значений. Соответственно, возможный диапазон 0-32767. Собственно, случайное расположение кораблей ЦПУ я делаю примерно так: Код: int Randomize9() {  | 
| 
 Если ты не будешь инициализировать генератор случайного числа то по дефолту srand(1), это значит, что твои корабли все время буду выстраиваться в одну и туже позицию. =) Что бы этого избежать иницализируй генератор вот таким образом: srand(time(0)) Для низиализации r используй простую вещь как return (rand() % 9) В ThrowCoin() тоже самое return (rand() % 1) | 
| 
 Цитата: 
 Цитата: 
 | 
| 
 Насчет rand() конечно мне не понятно, ведь поидеи нужно сначало инициализировать генератор, возможно это уже реализовано автоматически. добавлено через 1 час 7 минут Код: void DefineCPUShips() { Как я понимаю, то это функция расставляет кораблики | 
| 
 Код: void DefineCPUShips() { Как я понимаю, то это функция расставляет корабликиКод: if (!direction && px<=6 || direction && py<=6) isOK=1; <-- Это вообще сомнительно всё.  А если этому условию не будет соответствовать примерно n-ое кол-во раз? Как я понял ты старался сделать условия так, чтобы при генерации корабля, он не выпал за рамки самого поля.Код: <-- Ясное дело заполняем поле, но почему 3-х палубным корабликом?Цитата: 
 | 
| 
 Цитата: 
 Да, рекурсия простой способ получить нужный результат. Ну например: Код: int SetOneShip(int x, int y) {Для многопалубных рекурсия немного сложнее. | 
| 
 Да ничё, я ж не профи. Меня критиковать можно... Спасиб, но я уже так расставил :) по своему. Когда закончу, пришлю те исходник. Для критики :) | 
| 
 Цитата: 
 Исходник конечно ждём =) Ох, я в предвкушении критики =))))) | 
| 
 Ню вот, с расстановкой кораблей я вроде закончил :) (слева - расставил я в запущенной программе. справа - ЗЫЗа, САМА!) По крайней мере 2 раза подряд никаких багов в расстановке нет. Теперича переходим к самому интересному - стрельбе :) http://g.foto.radikal.ru/0610/4bf8d43c5fc5.jpg | 
| 
 Цитата: 
 | 
| 
 Ну вот, собственно. Ранняя бета (не релиз, просто для показа). Не распространяйте на форуме - пока не дописано. Ограничения: - Пользователь сам отвечает за корректную расстановку своих кораблей. - Логика стрельбы ПСП пока не написана(т.е. никаких добиваний). Палит наугад. - Убитые/раненые не обозначаются. - Могут быть баги... Управление: Стрелки - (движение кораблей при расстановке, движение целеуказателя) R - Поворот корабля при расстановке Крест - Выстрел. Start - выход Select - Чит. Показывает корабли врага. 2.71 - Работает, 2.80 - Должна :) | 
| 
 оффтоп - о, смотрю и вложениями начали пользоваться | 
| 
 а зачем ты все время лоадбинари в корень ФОТО бросаешь? сделай для удобства как мишуе | 
| 
 Ну а как? Могу запихнуть в туже папку что и seafight... Сейчас сделать? Да, сегодня уже врятли буду доделывать - устал :) | 
| 
 запихни или если это можно и мне сделать то лучше я сам, по дороге домой потестю | 
| 
 Браво!!! Работает прекрасно. Багов пока не увидел, есть только недоделки =) | 
| 
 Что-то я не понял... Запихиваю в туже папку - виснет. Mushue, как это правильно делать не подскажешь?  Я имею в виду как лучше по папкам пихать. 2вАСТ: Если сам будешь править, название проги находится в loadbinary.tiff по смещению 0DBA (если понадобится) | 
| Текущее время: 15:51. Часовой пояс GMT +3. | 
	Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc. Перевод: zCarot
	
	PSPx Forum - Сообщество фанатов игровых консолей.