Содержание
- Способ 1: Устранение проблем с Unarc.dll
- Способ 2: Обновление версии архиватора
- Способ 3: Устранение кириллицы из пути установки
- Способ 4: Проверка целостности файлов
- Способ 5: Отключение антивируса
- Способ 6: Проверка состояния оперативной памяти
- Вопросы и ответы
Способ 1: Устранение проблем с Unarc.dll
Если внимательно прочитать сообщение с ошибкой, можно заметить, что в нём фигурирует библиотека с именем Unarc.dll. Нередко именно она и является причиной сбоя, поэтому сначала рекомендуем ознакомиться с руководством по решению проблем с этим файлом.
Подробнее: Устранение проблем с Unarc.dll
Способ 2: Обновление версии архиватора
Также рассматриваемая проблема может появляться в ситуации, когда версия приложения-архиватора на целевом компьютере сильно устарела. Разумеется, это должно исчезнуть после обновления на актуальный релиз, скачать его вы можете по ссылкам далее.
Скачать последнюю версию 7zip
Скачать последнюю версию WinRAR
Способ 3: Устранение кириллицы из пути установки
Ошибка с кодом 14 при распаковке игровых файлов может возникать по причине наличия русских букв в пути инсталляции: к сожалению, немалая часть софта по-прежнему плохо работает с такими символами. Решение в этом случае простое – устанавливайте проблемную игру по пути, в котором не будет кириллицы:
D://Program Files/Games
– правильно;D://Program Files/Игры
– неправильно.
Иногда источником сбоя является имя пользователя на русском. Увы, но в Windows переименование учётной записи представляет собой непростую задачу, поэтому оптимальным решением будет создание новой, уже с верным именем, и перенос всех данных туда.
Подробнее: Как создать нового пользователя в Windows 7 и Windows 10
Способ 4: Проверка целостности файлов
Временами проблема заключается в самом инсталляторе: он недокачан или загружен с ошибкой, и в таких случаях закономерно, что при попытке им воспользоваться будут возникать сбои. Проверить файл и ресурсы можно с помощью контрольной суммы, которая обычно поставляется вместе с ними, посредством программ, приведённых в статье по ссылке далее.
Подробнее: Приложения для проверки контрольных сумм
Способ 5: Отключение антивируса
Современная антивирусная защита отличается точностью работы, но порой она неадекватно реагирует на некоторые файлы, в том числе и идущие в комплекте с играми. Устранить проблему можно временной остановкой защитного ПО: выключите его, инсталлируйте требуемый софт, затем включите антивирус обратно.
Подробнее: Как остановить антивирус
Способ 6: Проверка состояния оперативной памяти
Наиболее редкой и неприятной причиной рассматриваемого сбоя являются неполадки в работе оперативной памяти – именно на неё ложится основная нагрузка при распаковке, и в такой ситуации дают о себе знать все возможные неисправности. Воспользуйтесь инструкциями далее для проверки модулей ОЗУ, и при обнаружении проблем замените их.
Подробнее: Как проверить оперативную память в Windows 7 и Windows 10
Еще статьи по данной теме:
Помогла ли Вам статья?
Если внимательно прочитать сообщение с ошибкой, можно заметить, что в нём фигурирует библиотека с именем Unarc. dll. Нередко именно она и является причиной сбоя, поэтому сначала рекомендуем ознакомиться с руководством по решению проблем с этим файлом.
Способ 2: Обновление версии архиватора
Также рассматриваемая проблема может появляться в ситуации, когда версия приложения-архиватора на целевом компьютере сильно устарела. Разумеется, это должно исчезнуть после обновления на актуальный релиз, скачать его вы можете по ссылкам далее.
Способ 3: Устранение кириллицы из пути установки
Ошибка с кодом 14 при распаковке игровых файлов может возникать по причине наличия русских букв в пути инсталляции: к сожалению, немалая часть софта по-прежнему плохо работает с такими символами. Решение в этом случае простое – устанавливайте проблемную игру по пути, в котором не будет кириллицы:
Иногда источником сбоя является имя пользователя на русском. Увы, но в Windows переименование учётной записи представляет собой непростую задачу, поэтому оптимальным решением будет создание новой, уже с верным именем, и перенос всех данных туда.
Подробнее: Как создать нового пользователя в Windows 7 и Windows 10
Способ 4: Проверка целостности файлов
Временами проблема заключается в самом инсталляторе: он недокачан или загружен с ошибкой, и в таких случаях закономерно, что при попытке им воспользоваться будут возникать сбои. Проверить файл и ресурсы можно с помощью контрольной суммы, которая обычно поставляется вместе с ними, посредством программ, приведённых в статье по ссылке далее.
Способ 5: Отключение антивируса
Современная антивирусная защита отличается точностью работы, но порой она неадекватно реагирует на некоторые файлы, в том числе и идущие в комплекте с играми. Устранить проблему можно временной остановкой защитного ПО: выключите его, инсталлируйте требуемый софт, затем включите антивирус обратно.
Способ 6: Проверка состояния оперативной памяти
Наиболее редкой и неприятной причиной рассматриваемого сбоя являются неполадки в работе оперативной памяти – именно на неё ложится основная нагрузка при распаковке, и в такой ситуации дают о себе знать все возможные неисправности. Воспользуйтесь инструкциями далее для проверки модулей ОЗУ, и при обнаружении проблем замените их.
Подробнее: Как проверить оперативную память в Windows 7 и Windows 10
Мы рады, что смогли помочь Вам в решении проблемы.
Помимо этой статьи, на сайте еще 11880 инструкций.
Добавьте сайт Lumpics. ru в закладки (CTRL+D) и мы точно еще пригодимся вам.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.
Исправить ошибку драйвера графического устройства с кодом 14 Проблема
Скачать драйвер Легко исправить эту проблему драйвера
Если вы получаете ошибку кода драйвера графического устройства 14, не беспокойтесь. Это одна из распространенных ошибок кода диспетчера устройств. Вы можете следовать инструкциям в этом посте, чтобы решить эту проблему.
Код 14 указывает, что драйвер для видеокарты требует перезаписи файлов. Это может быть из-за поврежденных или плохо установленных графических драйверов. Как видно из полного сообщения об ошибке, вам нужно перезагрузить компьютер, чтобы устройство снова заработало. Так что просто нажмите на Перезапустить компьютер кнопку, чтобы решить проблему. Если вы сделали это, но проблема все еще сохраняется, попробуйте следующие два метода.
Полное сообщение об ошибке отображается так:
Это устройство не может работать должным образом, пока вы не перезагрузите компьютер (код 14).
iPhone: ошибка 14. Причины появления
Что касается первопричин появления такого сбоя, их первым делом связывают с физическими поломками, когда устройство не может подключиться к стационарному компьютеру посредством кабеля USB.
Вероятной причиной появления такой ситуации нередко называют физическое повреждение кабеля, когда «яблочный» мобильный девайс не может синхронизироваться с Windows даже при условии установки соответствующей программы в среде этой операционной системы.
Однако, когда операционная система сообщает, что произошла ошибка 14, винить во всем саму ОС или мобильный гаджет не стоит. По всей видимости, тут мы наблюдаем нестыковку установленной программы iTunes со средой Windows, причем исключительно при попытке перепрошивки телефона или при восстановлении до заводского состояния через компьютер. Это есть главная причина.
Код ошибки 14: физические повреждения кабеля
Первым делом проверьте плотностью подключения мобильного девайса к порту USB. Очень может быть, что устройство рассчитано на подключение USB 3.0, а вы его включили в USB 2.0. Распознать порты на компьютере или ноутбуке можно совершенно просто, поскольку порт третьей версии внутри окрашен в синий цвет.
Вполне возможно, что ошибка 14 выдается и по причине того, что кабель, используемый для подключения, имеет физические повреждения. Возьмите другой шнур и проверьте, как будет вести себя устройство.
Остановка блокировки
Теперь посмотрим, как исправить ошибку 14 программными методами. Увы, но далеко не все антивирусные пакеты, рассчитанные на работу в среде Windows-систем, дают разрешение на использование «яблочных» программных продуктов.
Для начала используйте функцию приостановки защиты, скажем, минут на десять, и в этот промежуток времени попробуйте запустить iTunes и синхронизировать программу со своим мобильным девайсом. Если все в порядке, просто смените антивирусное программное обеспечение. Если это не поможет, отключите файервол (брэндмауэр) и «Защитник». Как вариант – отключите TrustedInstaller и понизьте уровень контроля учетных записей UAC.
Примечание: появление таких ситуаций замечено за бесплатным антивирусным пакетом Avast, который не то что блокирует все и вся, но еще и выдает ложные тревоги.
Инструкция по настройке подключения к сети
Зачастую ошибка возникает в связи с плохим или не настроенным интернет-соединением. Лучше всего для передачи данных воспользоваться проводным интернетом. Как правило, он задействуется с помощью интерфейса EthernetOverUSB. Его нужно настроить программой EoU. Если интернета нет, то убедитесь в целостности кабеля или разъема на кассовом аппарате.
Для настройки проводного интернета используется протокол RNDIS. Действуем следующим образом:
Если для подключения вы пользуетесь Wi-Fi, то “1” должна быть выставлена напротив аналогичного интерфейса в таблице.
При отсутствии интернет-соединения нужно сделать следующее:
Обновление программного обеспечения
Если же проблема того, что при попытке синхронизации в Windows возникает ошибка 14, связана именно с приложением iTunes, что наблюдается чаще всего, одним из вариантов устранения данной проблемы может стать установка самой свежей версии приложения.
Сразу же обратите внимание, что устанавливать новую модификацию поверх старой нельзя. Сначала устаревшую версию нужно удалить, причем включая все дополнительные компоненты.
Сделать это можно с использованием раздела программ и компонентов, который находится в стандартной «Панели управления». Затем придется искать в системном реестре остаточные ключи, файлы и папки в «Проводнике» с последующим удалением.
Чтобы не заниматься такими вещами, лучше использовать специальные программы-деинсталляторы, которые позволяют избавиться от остатков при удалении в автоматическом режиме.
В качестве самых продвинутых утилит можно посоветовать Revo Uninstaller или iObit Uninstaller. Такие программы позволяют не только выполнить стандартный процесс деинсталляции, но и удалить все остаточные компоненты из файловой системы и реестра, чего Windows-системы делать не умеют изначально.
Воздействие вирусов
Наконец, как считается, одной из причин появления ошибки 14 может быть вирусное воздействие. Если программа iTunes работает в своей собственной среде (имеется в виду iOS и Mac OS x), воздействию вредоносных кодов она не подвержена (просто вирусов для таких систем не существует в природе).
Но вот в адаптированной версии iTunes под Windows-системы ошибка 14 встречается уж очень часто, и только из-за того, что основное приложение подвергается вирусному воздействию. Кроме того, есть еще такая штука, как дополнительный апплет Bonjour, который устанавливается в систему вне зависимости от пожеланий пользователя при инсталляции основного пакета iTunes. Большинство подобных вирусов просто подменяют оригинальный апплет или маскируются под него в «Диспетчере задач» при просмотре активных системных процессов.
Как исправить ошибку 14h ограничения ФН
Методы устранения ошибки зависят от причины ее возникновения. Можно решить проблему самостоятельно или воспользоваться услугами центра технического обслуживания.
В редких случаях ошибка 14h — ограничение ресурса ФН — возникает из-за неисправностей фискального накопителя. Владельцу кассы следует сразу обратиться к поставщику и произвести диагностику. При выявлении заводского брака продавец обязан починить его за свой счет или произвести бесплатную замену устройства. Если ФН сломался по вине пользователя, расходы на его ремонт или замену предприниматель берет на себя.
При замене фискального элемента кассу придется перерегистрировать в ФНС.
Если ошибка возникает из-за проблем с каналом обмена данных, замена фискального накопителя не потребуется.
Переходите на онлайн-кассу? Подберем фискальный накопитель для вашего бизнеса.
Оставьте заявку и получите консультацию в течение 5 минут.
Настройка подключения ККТ к интернету
В кассовых аппаратах Атол для передачи данных чаще всего используется проводной интерфейс EthernetOverUSB, который настраивается через утилиту EoU. При отсутствии связи рекомендуется проверить целостность кабеля, исправность разъема в блоке управления ККТ и при необходимости заменить его.
В кассах ШТРИХ-М проводной интернет преимущественно настраивают по протоколу RNDIS:
В форме редактирования параметров в поле Rndis должна стоять «1». Это означает, что передача данных через USB активна. Если значение отлично от 1, необходимо внести изменения и нажать ОК.
Те же самые действия требуются и для проверки подключения по Wi-Fi (напротив этого пункта в таблице интерфейсов должна стоять «1»).
Также при отсутствии связи:
Если интернет по-прежнему не работает, попробуйте другие каналы связи, например, другую SIM-карту, проводной интернет или Wi-Fi.
ЗаказатьПодробнееЕсть в наличии
ЗаказатьПодробнееЕсть в наличии
ЗаказатьПодробнееЕсть в наличии
Проблемы с подключением к ОФД
Если сбоев интернет-сети не обнаружено, необходимо произвести соответствующие настройки канала обмена данными с ОФД:
Вопросы обновления софта
Чтобы установить самую актуальную версию iTunes, вызовите программу, и если она автоматически не сообщила о наличии новой версии, готовой к установке, перейдите к разделу справки с выбором пункта обновления. Загрузите апдейт и установите его самостоятельно. Естественно, как уже упоминалось ранее, при старте процесса инсталляции желательно полностью отключить все защитные средства системы (вплоть до деактивации файервола и «Защитника»), иначе установка хоть и будет завершена, но инсталлированная программа в полной мере работать не сможет.
Отсутствует подключение к оператору фискальных данных
Если интернет работает как надо, то двигаемся дальше и проверяем подключение к оператору. Приступим к настройкам:
Проверьте, оплачены ли услуги ОФД в полном объеме. Для этого нужно посетить личный кабинет на сайте оператора и посмотреть сведения по оплате.
Вместо итога
Остается добавить, что ошибка 14 не является уж таким критичным сбоем. Что же касается дополнительных вариантов устранения проблемы, при удалении и повторной инсталляции программных продуктов Apple в среде Windows особое внимание уделите установке платформы с плеером QuickTime.
Если вы используете средство перепрошивки устройства, и именно тут вылетает ошибка, скорее всего, это связано с инсталляцией неподдерживаемой прошивки, которая не позволяет, например, «перепрыгнуть» с iOS 7 на версию 9, хотя такие апплеты встречаются.
Но в целом, если делать выводы, основная проблема состоит в обычной несовместимости программного обеспечения и «железа» конкурирующих между собой корпораций. А страдает от этого рядовой пользователь…
Источники:
https://lumpics. ru/error-14-during-game-installation/
https://motorchina-online. ru/avto-lada-drugoe/kod-oshibki-14.html
Морской бой код ошибки 14
Также рассматриваемая проблема может появляться в ситуации, когда версия приложения-архиватора на целевом компьютере сильно устарела. Разумеется, это должно исчезнуть после обновления на актуальный релиз, скачать его вы можете по ссылкам далее.
Способ 3: Устранение кириллицы из пути установки
Ошибка с кодом 14 при распаковке игровых файлов может возникать по причине наличия русских букв в пути инсталляции: к сожалению, немалая часть софта по-прежнему плохо работает с такими символами. Решение в этом случае простое – устанавливайте проблемную игру по пути, в котором не будет кириллицы:
Иногда источником сбоя является имя пользователя на русском. Увы, но в Windows переименование учётной записи представляет собой непростую задачу, поэтому оптимальным решением будет создание новой, уже с верным именем, и перенос всех данных туда.
Подробнее: Как создать нового пользователя в Windows 7 и Windows 10
Способ 4: Проверка целостности файлов
Временами проблема заключается в самом инсталляторе: он недокачан или загружен с ошибкой, и в таких случаях закономерно, что при попытке им воспользоваться будут возникать сбои. Проверить файл и ресурсы можно с помощью контрольной суммы, которая обычно поставляется вместе с ними, посредством программ, приведённых в статье по ссылке далее.
Способ 5: Отключение антивируса
Современная антивирусная защита отличается точностью работы, но порой она неадекватно реагирует на некоторые файлы, в том числе и идущие в комплекте с играми. Устранить проблему можно временной остановкой защитного ПО: выключите его, инсталлируйте требуемый софт, затем включите антивирус обратно.
Способ 6: Проверка состояния оперативной памяти
Наиболее редкой и неприятной причиной рассматриваемого сбоя являются неполадки в работе оперативной памяти – именно на неё ложится основная нагрузка при распаковке, и в такой ситуации дают о себе знать все возможные неисправности. Воспользуйтесь инструкциями далее для проверки модулей ОЗУ, и при обнаружении проблем замените их.
Подробнее: Как проверить оперативную память в Windows 7 и Windows 10
Мы рады, что смогли помочь Вам в решении проблемы.
Помимо этой статьи, на сайте еще 12001 инструкций.
Добавьте сайт Lumpics. ru в закладки (CTRL+D) и мы точно еще пригодимся вам.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.
App Store Sea Battle Classic (Морской бой) + откровения разработчика
В закладки
Кто не играл на уроках географии в морской бой? Только ботаны и нудные отличники. Игровое поле 10х10, четыре лодки, три катера, два крейсера и один фрегат – с таким арсеналом надо противостоять равнозначному противнику. Шепотом произносятся ходы, пока училка объяснет критерии образования подзолистых почв:
Zerto уже писал про бесплатную версию Sea Battle Classic: классического «русского» морского боя (корабли не могут соприкасаться, в отличие от американских правил) нашего разработчика Павла Егоркина, скрывающегося на форуме и в комментариях под ником iАлена. На самом деле, это все знакомая нам компания iSoftru.
Недавно в App Store вышла платная версия игры с возможностью «стрельбы» через WiFi [$0.99, iTunes link].
Но вот тут начались проблемы, о чем расскажет Павел из первых уст.
Павел Егоркин: Этот пост — попытка обобщить мой небольшой опыт продвижения программ в АппСтор и начать обсуждение способов продвижения
Почти год занимаясь раскруткой, продвижением и организацией продаж приложений распространяемых через Cydia (каталог софта для джеилбрейкнутых айфонов) я не имел совершенно никакого опыта в работе с официальным магазином.
И вот, недавно появилось предложение помочь (не бесплатно) в раскрутке продуктов, а в частности игры — игры, которую можно раскрутить, продвинуть и продать.
Сейчас после двух месяцев стремительного набивания шишек, места на моей голове уже почти не осталось — как следствие пора делится опытом и очищать место под новые
На момент написания статьи она занимает:
— 7 место top paid apps (места идут по Российскому апп стор)
— 4 место top paid games
— 1 место top paid action games
— 2 место top paid board games
для достижения этих мест нужно иметь 40 — 50 покупок* в течении последних трех дней
Есть «Lite» версия, бесплатная, с баннерной рекламой от AdMob, и невозможностью поиграть через wi-fi.
— 31 место top free apps
— 13 место top free games
— 8 место top free action games
— 1 место top free board games
для достижения этих мест нужно иметь 250 — 300 закачек* в течении последних трех дней
*опять таки по Российскому аппстору
Сперва начну с краткой истории как она появилась и что делалось, а затем попытаюсь подвести итог по работоспособности методов
Замысел был прост: морского боя с привычными русским правилами и симпатичным интерфейсом а аппсторе нет — следовательно нужно делать.
— лирическое отступление: я не программист и не менеджер — поэтому ошибки совершенные на этих фронтах комментировать не буду.
С учетом динамики магазина решили работать этапами: сперва выпускаем бой против компьютера, затем дополнение с сетевой игрой по wi-fi, затем дополнение с игрой через интернет, глобальным списком игроков, регистрацией и прочими модностями.
На первом этапе особых проблем не было. Морской бой вышел и был принят на ура и публикой и блоггерами и тематическими ресурсами — достаточно сказать что на текущий момент количество закачек ‘lite’ версии заметно превышает 100 000 копий.
А рынок очень быстрый, средний срок жизни приложения, хорошо если дни.
В процессе ожидания, количество закачек в день упало сначала до десятка тысяч, а затем и до тысяч.
Когда же wi-fi морской бой вышел, мы столкнулись с тем, что сильно переоценили успехи с бесплатной версией. Вот тут-то и начались шишки, эксперименты, и активный поиск источников опыта.
Ошибка первая: разнесение по времени
Бесплатную версию качают куда лучше платной, невзирая на цену. Это аксиома.
Срок жизни развлекательной программы — дни.
За полтора месяца основная аудитория успела наигратся, и даже самые преданые фэны устали ждать возможности заплатить. Мы им такую возможность не дали (вовремя).
Т. Е. вся масса закачек это не ресурс и, скорее всего, не потенциальная аудитория.
Закачек апдейта лайт версии
треть от общего числа закачек.
Количество переходов на платную
1% от числа обновившихся.
Ошибка вторая: неподготовленность
Вот это уже целиком моя ошибка.
Не было подготовленно заранее:
— локализации страниц в аппсторе на основные языки по приоритетным странам.
— интересных скриншотов объясняющих что изменилось (были взяты скриншоты с бесплатной версии)
+
— неправильная оценка успеха бесплатной версии у блоггеров.
— не заготовлена договоренность о обзорах в тематических изданиях.
Ошибка третья: Неправильное распределение усилий по рынкам
На рынках где уже был успех, он не закреплялся, на рынках где его не было он и не появился.
Сейчас пошла только вторая неделя продаж, и ошибки еще можно выправить, но тем не менее они есть и о них стоит помнить.
Основные варианты продвижения
Выпуск бесплатной версии
По очень ненадежной статистике до 10% закачивающих бесплатную версию, покупает платную. И хотя эта цифра зависит от того, что у вас за приложение и за какую цену, давать возможность попробовать ваше приложение — это очень хорошая идея.
Качественное описание на разных языках
Описание должно быть интересным и относительно коротким. Его мало кто читает, но чтоб уж если начали, то нашли всю интересующую информацию.
Хоть английский и международный язык, но читать здоровенное описание на чужом языке сложнее чем на родном, поэтому стоит запастись копией вашего описания как минимум на итальянском, французком и немецком.
И да… не стоит писать на английском с ошибками. Доверьте перевод носителю языка. А еще лучше доверить ему и написание текста.
Выход: стимулировать пользователей писать положительные отзывы, либо писать их самим. И заодно иметь по 3-4 (5-10) аккаунта по стратегически важным странам на случай атаки конкурентов.
Информативные скриншоты
На скриншоты можно ставить любые картинки. В том числе что-то, поясняющее нововведения или игровой процесс. Зайдите на страницу iBeer и FlyControl
Частые апдейты
Субъективно — это неплохая идея. Единственно что, стоит таки добавлять что-то новое, а не отсылать один и тот же бинарник.
Уточнение: сразу же как получаете письмо-уведомление о утверждении приложения, нужно идти в аппстор и менять дату доступности приложения на текущее число (по умолчанию стоит на день загрузки бинарника), тогда есть высокий шанс, что приложение засветится на первых двух страницах «recent apps» — и получит стартовое ускорение.
«Спам» по блоггерам и тематическим изданиям
Если у вас хороший продукт, да еще и бесплатный, да и без рекламы, его будут щупать, описывать и распростанять без вас. Но тем не менее писать нужно в любом случае.
Сложность в том, что популярные ресурсы и без вас завалены кучами промокодов и просьб об обзорах (т. е. которые не завалены вам скорее всего и не интересны).
Выход: заводите связи, общайтесь заранее, а не во время пика продаж (точнее и заранее и во время).
Twitter и прочие социальные сети
На хабре последнее время частенько поднимается вопрос, а нужен ли компаниям twitter? Зарубежом тема социальных медиа тоже более чем популярна.
Единственное, что можно сказать… не пускайте маркетолога, не работавшего с интернетом, (даже очень хорошего) на твиттер. С большой долей вероятности ничего хорошего не получится.
По крайней мере поначалу.
Быстрой отдачи тоже ждать не стоит, зато если постепенно развивать и укреплять свое присутствие, со временем даже один твит может дать очень много.
Комментарий SeaBreeze: у нас на сайте все обзоры бесплатные. Более того, мы всячески подталкиваем разработчиков контактировать с нами и проводить совместные акции.
Баннеры на тех же ресурсах
Стоит дороже предыдущего, а результативность меньше.
Комментарий SeaBreeze: Баннеры софта работают, все зависит от его подачи и тем, чем он окружен (промо, обзоры, пиар). Например, на баннеры Rolando 2 было потрачено несколько десятков тысяч долларов. А какой бум был до этого!
Конкурсы за деньги
Результативность стремится к нулю. Чуть выше чем у баннеров.
Но тут оговорка, если конкурс действительно интересный информация о нем (и соответсвенно о программе) пойдет гулять по блогосфере, что вам собственно и нужно.
Спам «псевдопосоветуйдругу»
В iTunes есть функция — посоветуй другу. Дается форма, и на указанный адрес отправляется письмо с неким завлекающим текстом, причем письмо определенного вида, на стандартной эйпловской формочке.
Есть вариант разослать по листу пару тысяч (десятков/сотен тысяч) писем по подобному шаблону, типо из тунца…
Имхо использовать это не стоит, отдача небольшая, а многие спам (и я в том числе) очень не любят. Я уж не говорю о том, что ваши адреса могут попасть в спам базы, а доменное имя непонравится гуглу.
Но такие способы тоже имеют место быть.
Проплата покупок
Звучит странно, но тем не менее. Идея в том, что положение программы в рейтингах вычисляется по результатам продаж в последние трое суток. И если сделать рывок продаж за три дня можно выйти в топ. А в топе правильной страны деньги отобъются гарантированно, тем более
70% этих денег в любом случае прийдет обратно к вам.
Сложность в том, что для того чтобы попасть в топ правильной страны вам нужно как минимум тысяча (а на самом деле больше) покупок в день, вот и думайте сколько денег и сил нужно вложить.
И еще, вопрос как это реализовать. Успешно реализованных вариантов я пока не видел, но охотно верю что они есть или будут.
Комментарий SeaBreeze: Это не афишируется, но такое есть. Сам однажды принимал участие в написании роботов-покупателей.
Итого
Особенность экоструктуры аппстора такова, что пользователю нет необходимости выходить из него. Как правило большинство и не выходит. То есть не стоит надеятся, что наводнив сотни мелких ресурсов и ресурсиков вы получите огромный рост продаж. Определенный рост будет, но явно не тех размеров что хочется.
Следовательно, очень важно иметь качественную страницу в магазине. Будет обидно, если кто-то не попробует вашу гениальную программу только из-за плохих скриншотов или описания с ошибками.
Безусловно программа должна нравится и делать то, что пользователь от неё ждет. Будет здорово если в ней есть БОНУС. Какой-то очень приятный функционал который пользователь не ожидает увидеть и который вы не рекламировали. Так он получит (по его ощущениям) в два раза больше чем ожидал, и непременно не поленится оставить положительный комментарий.
Программы которые никто не комментирует — никому не нужны. В каждой стране свой аппстор, с отдельными страницами комментариев И естественно больше верят комментариям на родном языке.
Да, если вашей программе одобрительно отзовутся например на tuaw. com — стоит ожидать немаленького роста продаж. Так что если у вас нет знакомого блоггера на крупном ресурсе — стоит с ним познакомится.
И последнее, мое мнение — не стоит тратить денег на рекламу до тех пор пока ваше приложение не приносит вам хорошую прибыль. Лучше вложите дополнительные ресурсы в разработку. Покачественнее дизайн и тексты. Хорошее тестирование, удобный интерфейс… Потратьте время на общение с пользователями на 2-3 крупных форумах, наконец.
Вполне возможно не вкладывая деньги в рекламу* сделать сверхпопулярный продукт. Творите через это ограничение, через ограничения творится интереснее
* — если не считать тексты и скриншоты рекламой.
Вот такие дела, т. е. заработать можно, но на ОЧЕНЬ популярном приложении. [Хабрахабр]
Ошибка 14 двигателя toyota, что скрывает код 14 и как ведет себя двигатель
Код ошибки P0420 расшифровывается как: «эффективность системы каталитического нейтрализатора ниже порогового уровня». Это говорит об очень слабой пропускной способности катализатора. Если автомобиль оборудован сразу двумя нейтрализаторами, то данная ошибка может также иметь код P0430.
В английском варианте описание неисправности будет звучать как Catalyst System Efficiency Below Threshold (Bank 1) или (Bank 2).
Нетрудно догадаться, что проблема, скорей всего, будет свидетельствовать о завершении срока службы катализатора, хотя есть надежда, что это плохое топливо или вышла из строя вторая лямбда.
Условия формирования DTC P0420
ECM, в процессе контроля, сравнивает сигналы 1-го и 2-го датчиков в течении заданного временного интервала, вычисляя длительность сигнала напряжения, и если она выходит за пределы заданного порога, «мозг» автомобиля, интерпретирует это, как нарушение работы нейтрализатора. Пороговое значение разности между амплитудами переднего S1 (берется за эталон) и заднего S2 кислородных датчиков составляет более в 0,7 раза за одну минуту. Но лампочка чека, сигнализирующая о фиксации ошибки в памяти блока ECM, загорается не моментально, а лишь когда снижение характеристик эффективности каталитического нейтрализатора происходит на протяжении 100 секунд, причем нагрузка на двигатель должна составлять от 21 до 63% при вращении коленвала 1 720 — 2 800 об/мин, а температура катализатора превышать 500 градусов.
Сигнал от кислородного датчика
По мере износа катализатора (пропускной его способности) показания заднего датчика приближаются к показаниям переднего датчика кислорода.
При нормальном функционировании каталитического нейтрализатора сигнал подогреваемого кислородного датчика, находящегося на выходе, переключается медленно между значениями обогащенного и обедненного состояниями. Частое переключение лямбда-зонда между данными состояниями и указывает на снижение эффективности нейтрализатора. В результате чего его способность аккумулировать кислород снижается.
Задача катализатора заключается в окислении угарного газа и нейтрализации выбросов углеводородов СО2, дабы уменьшить концентрацию вредных веществ. За этим процессом, начиная со стандарта Евро-3, следят два кислородных датчика.
Происходит постоянное сравнение сигналов первой и второй лямбды с целью регистрации сближения их показаний.
Поэтому код ошибки P0420, в свое время, побеспокоит всех владельцев автомобилей, в том числе таких как: ВАЗ, Nissan, Toyota, Chevrolet, Ford, Honda или других выпустившихся после 1996 года и имеющих в выпускной системе 2 лямбда-зонда.
Код неисправности Р0420 появляется тогда, когда в выхлопных газах обнаруживается кислород и остатки несгоревшего топлива.
Как ведет себя автомобиль (признаки ошибки р0420)
На ровном месте загорается вдруг устрашающая надпись Check Engine. Т. е. не просто мясорубка, а треугольник с восклицательным знаком и надпись на оптитроне. Никаких ни на слух, ни по динамике ощущений нет, все ОК. Доезаю, 5 км до стоянки, был вечер, так и бросил. С утра посмотрел все под капотом визуально, уровень масла, жижей, раз’емы бегло, шланги все ОК. Запускаю, ошибка снова лезет, и снова «страшная» ?
Ехать конечно просто так нельзя, считываю ошибку скрепкой, ошибка ДВС — 14. Ну ра она «такая», в общем решаю (основываясь на коде ошибки), что все таки еду по делам, к 11 добираюсь до работы. Вечером еду до дому, запускаю — ошибка не выводится, сбрсывать я ее не сбрасывал : ) Сегодня 2 день без ошибки, не вылазит.
Вот такая задачка, что значит, кто виноват, и что дальше делать и делать ли вообще? ЗЫ: тачко двиг 1zr-fe, пробег на ней сегодня исполнилось 50000. 5,5 лет. Кроме замены масла и фильтров ничего такого с двиком не делалось, никогда. А, еще мясорубка, именно горела, а не моргала.
Вот «расхожая» расшифровка ошибок.
Проверить контакты в разъёме ЭБУ двигателя
У нас на работе не курят. Боимся что перегар сдетонирует.
Хорошо. Ошибка 1 и 4 катушки. Гляну завтра контакты 1 и 4 катушки, со стороны ЭБУ, заодно пошевелю раз’ем.
Еще что смотреть? Свечи могут быть?
Ошибки нет два дня, вернее она более неактивная, больше не вылазит, так что если что то и делать, то либо ждать ее снова, либо профилактич. меры, я ничего ни осмотром, ни прозвонкой не обнаружу.
Для инфы, расшифровка этой группы ошибок, с более подробными схемами, но нет сканера, 1 или 4 неизвестно.
Для более новых движков именно по 14 и 15, четырехзначные DTC не соответствуют той которые приведены по ссылке выше, на тему по самодиагностике, там более старые данные.
Соответствие четырехзначных для нашей карты уточнил по ссылке оттуда же:
Сообщение от Гоголь
заодно пошевелю раз’ем.
На фото выше видно что нет двух ножек — они запаралелены. Пока их не восстановили — машина просто не заводилась. Стартер крутил резво, но двиг не схватывал. До того как сняли разъём, ошибка тоже могла выскочить при движении и не пропадать некоторое время, а потом пропасть внезапно. Как раз твои симптомы.
У нас на работе не курят. Боимся что перегар сдетонирует.
У меня с запуском и звуком движка, и динамикой все в порядке. Я бы написал об этом в первую очередь. Какие могут быть обломанные раз’емы.
Какие у тебя при том были ошибки? Что за ноги отвалились?
Сообщение от Гоголь
У меня с запуском и звуком движка, и динасикой все в порядке.
У меня тоже всё было с этим ок до определённого момента. При этом когда впервые вылезла эта надпись на БК, я отдал машину на диагностику ОД, они сказали что в памяти были только ошибки датчика детонации и посоветовали сменить заправку.
Ножек нет (на фото) — третьей в первом ряду сверху правого разъема и первой во втором ряду сверху. Они как раз в фокусе.
У нас на работе не курят. Боимся что перегар сдетонирует.
У нас на работе не курят. Боимся что перегар сдетонирует.
Какой уж там запуск … Один с датчика положения коленвала, второй — питание (задающее напряжение на датчик Холла, положения ДЗ. Там у тебя и ошибка датчика коленвала д. б. зарегистрироваться, детонация, и рассогласование между каналами датчика положения ДЗ, там сдвоенный датчик Холла, по 3 проводам каждый, автономно. Если бы был только контакт ДЗ, все бы работало в авар. режиме, за счет дублрования, но ошибка бы лезла. Датчики ДЗ друг друга пасут.
А без датчика коленвала ЭБУ движки не даст команду даже на впрыск.
ЗЫ: По своей ошибке. Завтра вылезет, расскажу, что буду делать дальше. Пока для чистоты эксперимента пока ничего не трогаю.
Ну вот, на хорошо прогретую, и затем через 15-20 км снова вылезла. Сейчас считаю, если снова 14, сброшу.
Поменяю сначала 3 и 4 катушку местами. Посмотрю не полезет ли 15 (для 2 и 3 горшка).
Если полезет вновь 14, затем верну на место, поменяю 1 и 2.
TechDoc
для подготовки Нажмите здесь
ОПИСАНИЕ
УКАЗАНИЕ:Если отображается код DTC P0014 или P0015, проверьте систему VVT (изменения фаз газораспределения).См. DTC P0013 (Нажмите здесь).
См. DTC P0010 (Нажмите здесь).УКАЗАНИЕ:С помощью портативного диагностического прибора считайте данные фиксированного набора параметров. В этих параметрах отражается состояние двигателя на момент обнаружения неисправности. При поиске неисправностей фиксированные параметры позволяют определить, двигался ли автомобиль в момент возникновения неисправности или нет, был ли прогрет двигатель, каким было соотношение воздух-топливо (обедненным или обогащенным) и пр.
Подсоедините портативный диагностический прибор к DLC3.
Включите портативный диагностический прибор.
Выберите следующие элементы меню: Powertrain / Engine and ECT / DTC.
Результат | Следующий шаг |
DTC P0014 или P0015 выводится | А |
DTC P0014 ил P0015 и другие DTCs выводятся | B |
Снимите гидравлический клапан изменения фаз в сборе.
Измерьте сопротивление в соответствии со значениями, приведенными в таблице ниже.
Подайте положительное напряжение аккумуляторной батареи на контакт 1, а отрицательное напряжение аккумуляторной батареи на контакт 2. Проверьте работу.
Установите гидравлический клапан изменения фаз в сборе.
Снимите фильтр гидравлического клапана изменения фаз.
Убедитесь, что фильтр не засорен.
Установите фильтр гидравлического клапана изменения фаз.
Проверьте зубчатое колесо распредвала в сборе (Нажмите здесь).
УКАЗАНИЕ:На головке блока цилиндров отсутствуют какие-либо метки, с помощью которых можно было бы проверить фазы газораспределения. Фазы газораспределения можно проверить, только совместив цветные метки цепного привода газораспределительного механизма с метками на шкивах. Для совмещения меток синхронизации, возможно, придется снять и переустановить цепь (Нажмите здесь).
Подсоедините портативный диагностический прибор к DLC3.
Включите портативный диагностический прибор.
Сбросьте коды DTC (Нажмите здесь).
Запустите и прогрейте двигатель.
Переключите ECM из нормального режима диагностики в режим активной диагностики посредством портативного диагностического прибора.
Источники:
https://lumpics. ru/error-14-during-game-installation/
https://www. iphones. ru/iNotes/30382
https://lider-samara. ru/komponenty-dvigatelya/oshibka-14-dvigatelya-toyota-chto-skryvaet-kod-14-i-kak-vedet-sebya-dvigatel. html
#include<iostream>
#include<ctime>
#include<iomanip>
#include<string>
#include<Windows.h>
#include<windows.h>
using namespace std;
HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE);
const int FIELD_SIZE = 10;
char Player1[100];
char Player2[100];
int amount_of_ship_cells_left_to_drown_P1;
int amount_of_ship_cells_left_to_drown_P2;
// [x][y], где x - вертикаль, y - горизонталь
char WaterP1 = '~';
char WaterP2 = '~';
char TorpedeP1 = 'Т';
char TorpedeP2 = 'Т';
char DestroyerP1 = 'Э';
char DestroyerP2 = 'Э';
char CruiserP1 = 'К';
char CruiserP2 = 'К';
char BattleshipP1 = 'Л';
char BattleshipP2 = 'Л';
char ShipHitP1 = 'Х';
char ShipHitP2 = 'X';
char HitMissP1 = '*';
char HitMissP2 = '*';
void ifP1Win(char* p1) {
system("cls");
cout << "Игрок " << p1 << " ПОБЕДИЛ!!! Поздравляем!" << endl;
system("pause");
}
void ifP2Win(char* p2) {
system("cls");
cout << "Игрок " << p2 << " ПОБЕДИЛ!!! Поздравляем!" << endl;
system("pause");
}
bool Cell_checker(int PlayerNumber, int asked_cell) {
char T;
char D;
char C;
char BS;
switch (PlayerNumber)
{
case 1:
{
T = TorpedeP1;
D = DestroyerP1;
C = CruiserP1;
BS = BattleshipP1;
} break;
case 2:
{
T = TorpedeP2;
D = DestroyerP2;
C = CruiserP2;
BS = BattleshipP2;
} break;
}
if (asked_cell == T || asked_cell == D || asked_cell == C || asked_cell == BS)
return true;
else
return false;
}
void Print_table(char arr[][FIELD_SIZE]) {
cout << "_|";
for (int i = 0; i < FIELD_SIZE + 1; i++)
{
cout << i << "|"; // верхний ряд
}
cout << endl;
char arr_coord_x[10]{ '1','2','3','4','5','6','7','8','9','10' };
for (int i = 0; i < FIELD_SIZE; i++)
{
cout << arr_coord_x[i] << "|"; // боковой левый ряд
for (int j = 0; j < FIELD_SIZE + 1; j++)
{
cout << arr[i][j] << "|";
}
cout << endl;
}
}
void Print_hidden_table(char arr[][FIELD_SIZE]) {
for (int i = 0; i < FIELD_SIZE; i++)
{
for (int j = 0; j < FIELD_SIZE; j++)
{
cout << '~' << " ";
}
cout << endl;
}
}
void Players_names(char* Player1, char* Player2) {
cout << "Введите имя ";
SetConsoleTextAttribute(h, 3);
cout << "первого";
SetConsoleTextAttribute(h, 7);
cout << " игрока() : ";
cin >> Player1;
cout << "Введите имя ";
SetConsoleTextAttribute(h, 4);
cout << "второго";
SetConsoleTextAttribute(h, 7);
cout << " игрока() : ";
cin >> Player2;
}
void Create_table(char arr[][FIELD_SIZE], char c) {
for (int i = 0; i < FIELD_SIZE; i++)
{
for (int j = 0; j < FIELD_SIZE; j++)
{
arr[i][j] = c;
}
}
}
void Pass2AnotherPlayer() {
system("cls");
cout << "Переход к другому игроку. И не подглядывайте ;)" << endl;
Sleep(5000);
system("cls");
}
void Set_ships(char arr[][FIELD_SIZE], int PlayerNumber) {
char PNEnd[5];
char Torp;
char Destr;
char Crui;
char BShip;
if (PlayerNumber == 1) {
Torp = TorpedeP1;
Destr = DestroyerP1;
Crui = CruiserP1;
BShip = BattleshipP1;
strcpy_s(PNEnd, "-ый");
}
else {
Torp = TorpedeP2;
Destr = DestroyerP2;
Crui = CruiserP2;
BShip = BattleshipP2;
strcpy_s(PNEnd, "-ой");
}
int nmb_of_cells_for_current_ship = 1;
char type_of_ship[100];
int plant_choise_x, plant_choise_y;
int amount_of_checked_cells = 0;
bool cell_is_checked = false;
while (amount_of_checked_cells < 21)
{
system("cls");
Print_table(arr);
if (nmb_of_cells_for_current_ship == 4)
strcpy_s(type_of_ship, "линкор (4 клетки для размещения)");
if (nmb_of_cells_for_current_ship == 3)
strcpy_s(type_of_ship, "крейсер (3 клетки для размещения)");
if (nmb_of_cells_for_current_ship == 2)
strcpy_s(type_of_ship, "эсминец (2 клетки для размещения)");
if (nmb_of_cells_for_current_ship == 1)
strcpy_s(type_of_ship, "торпедный катер (1 клетка для размещения)");
cout << "Введите порядковый номер клетки, на которую " << PlayerNumber << PNEnd << " игрок хочет поместить кораблик (x,y).";
cout << endl << "Помещается " << type_of_ship << "." << endl;
cout << " Ваши координаты: ";
cin >> plant_choise_x >> plant_choise_y;
if (Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y] /* само место, куда ставится клетка*/) == false
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y + 1] /* верхняя правая клетка */) == false
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y - 1] /* нижняя левая клетка */) == false
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y - 1] /* верхняя левая клетка */) == false
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y + 1] /* нижняя правая клетка */) == false
&& plant_choise_x <= 10 && plant_choise_y <= 10)
{
if ( // торпедный катер
Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y]) == false /* нижняя */
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y]) == false /* верхняя */
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y - 1]) == false /* левая */
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y + 1]) == false /* правая */
&& amount_of_checked_cells >= 0 && amount_of_checked_cells < 4
) {
arr[plant_choise_x][plant_choise_y] = Torp;
cell_is_checked = true;
}
if (amount_of_checked_cells >= 4 && amount_of_checked_cells < 10
&& arr[plant_choise_x + 1][plant_choise_y] == Destr
&& (Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y]) == false
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y - 1]) == false /// choise_cords (1)
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y + 1]) == false
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 2][plant_choise_y - 1]) == false // [1]
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 2][plant_choise_y + 1]) == false // [2]
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 2][plant_choise_y]) == false /// choise_cords (2)
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y - 1]) == false
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y + 1]) == false
)
||
(arr[plant_choise_x - 1][plant_choise_y] == Destr // [2]
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y]) == false // [1]
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y]) == false /// choise_cords (1) // низ
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y - 1]) == false // нижнелевая клетка
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y + 1]) == false // нижнеправая клетка
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y - 1]) == false // лево
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y + 1]) == false // право
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 2][plant_choise_y]) == false /// choise_cords (2) // верх
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 2][plant_choise_y - 1]) == false // верхнелевая клетка
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 2][plant_choise_y + 1]) == false // верхнеправая клетка
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y - 1]) == false // левая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y + 1]) == false // правая
)
||
(
arr[plant_choise_x][plant_choise_y + 1] == Destr // ---->
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y]) == false // [1][2]
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y]) == false /// choise_cords (1) // низ
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y]) == false // верх
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y - 1]) == false // нижнелевая клетка
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y - 1]) == false // верхнелевая клетка
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y - 1]) == false // лево
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y + 1]) == false /// choise_cords (2) // верх
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y + 1]) == false // низ
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y + 2]) == false // верхнеправая клетка
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y + 2]) == false // правая
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y + 2]) == false // нижнеправая
)
||
(
arr[plant_choise_x][plant_choise_y - 1] == Destr // [1] // [2][1]
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y]) == false // верх (1)
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y]) == false // низ
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y + 1]) == false // правая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y + 1]) == false // верхнеправая клетка
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y + 1]) == false // нижнеправая кллетка
// [2]
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y - 2]) == false // верхнелевая клетка
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y - 1]) == false // нижняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y - 1]) == false // верхняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y - 2]) == false // левая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y - 2]) == false // верхнелевая
)
||
(
Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y]) == false // сама клетка
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y]) == false // верхняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y]) == false // нижняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y - 1]) == false // левая
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y + 1]) == false // правая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y - 1]) == false // верхнелевая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y + 1]) == false // верхнеправая
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y - 1]) == false // нижнелевая
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y + 1]) == false // нижнеправая
)
) {
arr[plant_choise_x][plant_choise_y] = Destr;
cell_is_checked = true;
}
if (amount_of_checked_cells >= 10 && amount_of_checked_cells < 16 &&
/// [1][2][3]
//[1]
(arr[plant_choise_x][plant_choise_y + 1] == Crui && arr[plant_choise_x][plant_choise_y + 2] == Crui
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y]) == false
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y]) == false // верхняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y]) == false // нижняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y - 1]) == false // левая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y - 1]) == false // верхнелевая
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y - 1]) == false // нижелевая
//[2]
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y + 1]) == false // верхняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y + 1]) == false // нижнняя
//[3]
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y + 2]) == false // верхняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y + 2]) == false // нижняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y + 3]) == false // правая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y + 3]) == false // верхнеправая
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y + 3]) == false // нижнеправая
)
||
/// [3][2][1]
(
Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y]) == false
&& arr[plant_choise_x][plant_choise_y - 1] == Crui && arr[plant_choise_x][plant_choise_y - 2] == Crui
// [1]
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y]) == false // верхняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y]) == false // нижняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y + 1]) == false // правая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y + 1]) == false // верхнеправая
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y + 1]) == false // нижнеправая
// [2]
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y - 1]) == false // верхняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y - 1]) == false // нижняя
// [3]
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y - 2]) == false // верхняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y - 2]) == false // нижняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y - 3]) == false // левая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y - 3]) == false // верхнелевая
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y - 3]) == false // нижнелевая
)
||
(
Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y]) == false
&& arr[plant_choise_x][plant_choise_y - 1] == Crui && arr[plant_choise_x][plant_choise_y + 1] == Crui
/// [2][1][3]
// [1]
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y]) == false // верхняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y]) == false // нижняя
// [2]
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y - 1]) == false // верхняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y - 1]) == false // нижняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y - 2]) == false // левая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y - 2]) == false // верхнелевая
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y - 2]) == false // нижнелевая
// [3]
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y + 1]) == false // верхняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y + 1]) == false // нижняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y + 2]) == false // правая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y + 2]) == false // верхнеправая
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y + 2]) == false // нижеправая
)
||
(
/*
[1]
[2]
[3]
*/
Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y]) == false
&& arr[plant_choise_x + 1][plant_choise_y] == Crui && arr[plant_choise_x + 2][plant_choise_y] == Crui
// [1]
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y]) == false // верхняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y - 1]) == false // левая
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y + 1]) == false // правая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y - 1]) == false // верхнелевая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y + 1]) == false // верхнеправая
// [2]
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y - 1]) == false // левая
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y + 1]) == false // правая
// [3]
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 3][plant_choise_y]) == false // нижняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 2][plant_choise_y - 1]) == false // левая
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 2][plant_choise_y + 1]) == false // правая
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 3][plant_choise_y - 1]) == false // нижнелевая
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 3][plant_choise_y + 1]) == false // нижнеправая
)
||
(
// [3]
// [2]
// [1]
Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y]) == false
&& arr[plant_choise_x + 1][plant_choise_y] == Crui
&& arr[plant_choise_x + 2][plant_choise_y] == Crui
// [1]
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y]) == false // нижняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y - 1]) == false // левая
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y + 1]) == false // правая
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y - 1]) == false // нижнелевая
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y + 1]) == false // нижнеправая
// [2]
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y - 1]) == false // левая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y + 1]) == false // правая
// [3]
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 3][plant_choise_y]) == false // верхняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 2][plant_choise_y - 1]) == false // левая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 2][plant_choise_y + 1]) == false // правая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 3][plant_choise_y - 1]) == false // верхнелевая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 3][plant_choise_y + 1]) == false // верхнеправая
)
||
(
// [2]
// [1]
// [3]
Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y]) == false
&& arr[plant_choise_x + 1][plant_choise_y] == Crui
&& arr[plant_choise_x - 1][plant_choise_y] == Crui
// [1]
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y - 1]) == false // левая
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y + 1]) == false // правая
// [2]
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 2][plant_choise_y]) == false // верхняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y - 1]) == false // левая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y + 1]) == false // правая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 2][plant_choise_y - 1]) == false // верхнелевая
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 2][plant_choise_y + 1]) == false // верхнеправая
// [3]
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 2][plant_choise_y]) == false // нижняя
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y - 1]) == false // левая
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y + 1]) == false // правая
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 2][plant_choise_y - 1]) == false // нижнелевая
&& Cell_checker(PlayerNumber, arr[plant_choise_x + 2][plant_choise_y + 1]) == false // нижнеправая
)
||
(Cell_checker(PlayerNumber, arr[plant_choise_x + 1][plant_choise_y]) == false /* нижняя */
&& Cell_checker(PlayerNumber, arr[plant_choise_x - 1][plant_choise_y]) == false /* верхняя */
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y - 1]) == false /* левая */
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y + 1]) == false /* правая */
&& Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y] /* само место, куда ставится клетка*/) == false
)
)
{
arr[plant_choise_x][plant_choise_y] = Crui;
cell_is_checked = true;
}
if (cell_is_checked == true) {
amount_of_checked_cells++;
cell_is_checked = false;
}
}
else
{
system("cls");
cout << "Введите допустимые координаты клетки, а не (" << plant_choise_x << ";" << plant_choise_y << ") !" << endl;
system("pause");
system("cls");
}
}
}
void Player_move(char arr1[][FIELD_SIZE], char arr2[][FIELD_SIZE], int PlayerNumber, char* p1, char* p2)
{
int choise_x;
int choise_y;
while (true) {
system("cls");
choise_x = 0; choise_y = 0;
if (PlayerNumber == 1) {
Print_table(arr1);
cout << "n Введите координаты клетки, в которую вы хотите стрельнуть, ";
SetConsoleTextAttribute(h, 1);
cout << p1;
SetConsoleTextAttribute(h, 0);
cout << ": ";
cout << "n Вам осталось потопить клеток кораблей: " << amount_of_ship_cells_left_to_drown_P2;
cin >> arr2[choise_x][choise_y];
if ((arr2[choise_x][choise_y] == TorpedeP2
|| arr2[choise_x][choise_y] == DestroyerP2
|| arr2[choise_x][choise_y] == CruiserP2
|| arr2[choise_x][choise_y] == BattleshipP2)
&& arr2[choise_x][choise_y] != ShipHitP2
&& arr2[choise_x][choise_y] != HitMissP2)
{
arr2[choise_x][choise_y] = ShipHitP2;
--amount_of_ship_cells_left_to_drown_P2;
system("cls");
cout << "Попадание!" << endl;
system("pause");
continue;
}
else if (arr2[choise_x][choise_y] == ShipHitP2
|| arr2[choise_x][choise_y] == HitMissP2) {
system("cls");
cout << "Вы по этой клетке уже попадали!" << endl;
system("pause");
continue;
}
else {
arr2[choise_x][choise_y] = HitMissP2;
system("cls");
Pass2AnotherPlayer();
break;
}
}
else {
Print_table(arr2);
cout << "n Введите координаты клетки, в которую вы хотите стрельнуть, " << p2 << ": ";
cout << "n Вам осталось потопить клеток кораблей: " << amount_of_ship_cells_left_to_drown_P1;
cin >> arr1[choise_x][choise_y];
if ((arr1[choise_x][choise_y] == TorpedeP1
|| arr1[choise_x][choise_y] == DestroyerP1
|| arr1[choise_x][choise_y] == CruiserP1
|| arr1[choise_x][choise_y] == BattleshipP1)
&& arr1[choise_x][choise_y] != ShipHitP1
&& arr1[choise_x][choise_y] != HitMissP1)
{
arr1[choise_x][choise_y] = ShipHitP1;
--amount_of_ship_cells_left_to_drown_P1;
system("cls");
cout << "Попадание!" << endl;
system("pause");
continue;
}
else if (arr1[choise_x][choise_y] == ShipHitP1
|| arr1[choise_x][choise_y] == HitMissP1) {
system("cls");
cout << "Вы по этой клетке уже попадали!" << endl;
system("pause");
continue;
}
else {
arr1[choise_x][choise_y] = HitMissP1;
system("cls");
Pass2AnotherPlayer();
break;
}
}
}
}
bool Win(int ship_cells) {
if (ship_cells == 0)
return true;
return false;
}
int main()
{
srand((unsigned)time(0));
setlocale(LC_ALL, "Russian");
char arr1[FIELD_SIZE][FIELD_SIZE];
char arr2[FIELD_SIZE][FIELD_SIZE];
Players_names(Player1, Player2);
system("cls");
cout << "Имя первого игрока: " << Player1 << endl;
cout << "Имя второго игрока: " << Player2 << endl << endl;
system("pause");
Create_table(arr1, WaterP1);
Set_ships(arr1, 1);
Pass2AnotherPlayer();
Create_table(arr2, WaterP2);
Set_ships(arr2, 2);
system("pause");
system("cls");
cout << "t BETA TEST" << endl << endl;
cout << "Поле игрока с именем (или никнеймом) " << Player1 << endl;
Print_table(arr1);
cout << endl;
cout << "Поле игрока с именем (или никнеймом) " << Player2 << endl;
Print_table(arr2);
while (!Win)
{
Player_move(arr1, arr2, 1, Player1, Player2);
Player_move(arr1, arr2, 2, Player1, Player2);
Win(amount_of_ship_cells_left_to_drown_P1);
Win(amount_of_ship_cells_left_to_drown_P2);
if (Win(amount_of_ship_cells_left_to_drown_P2) == true) {
ifP1Win(Player1);
}
else if (Win(amount_of_ship_cells_left_to_drown_P1) == true) {
ifP2Win(Player2);
}
cout << "Поле игрока с именем (никнеймом) " << Player1 << endl << endl;
Print_table(arr1);
cout << endl;
cout << "Поле игрока с именем (никнеймом) " << Player2 << endl << endl;
Print_table(arr2);
system("pause");
}
system("pause");
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 |
#include<iostream> #include<ctime> #include<iomanip> #include<string> #include<Windows.h> using namespace std; HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE); const int FIELD_SIZE = 10; char Player1[100]; char Player2[100]; int amount_of_ship_cells_left_to_drown_P1; int amount_of_ship_cells_left_to_drown_P2; char WaterP1 = '~'; // 1 char WaterP2 = '~'; // 2 char TorpedeP1 = '^'; // 3 char TorpedeP2 = '^'; // 4 char DestroyerP1 = '^'; // 5 char DestroyerP2 = '^'; // 6 char CruiserP1 = '^'; // 7 char CruiserP2 = '^'; // 8 char BattleshipP1 = '^'; // 9 char BattleshipP2 = '^'; // 10 char ShipHit = 'x'; // 12 char HitMiss = '*'; // 13 void ifP1Win(char* p1) { system("cls"); cout << "Игрок " << p1 << " ПОБЕДИЛ!!! Поздравляем!" << endl; system("pause"); exit(1); } void ifP2Win(char* p2) { system("cls"); cout << "Игрок " << p2 << " ПОБЕДИЛ!!! Поздравляем!" << endl; system("pause"); exit(1); } bool Cell_checker(int PlayerNumber, int asked_cell) { for (int i = PlayerNumber; i < 10 + PlayerNumber; i += 2) { if (asked_cell == i) { return true; } } return false; } void Print_table(char arr[][FIELD_SIZE]) { for (int i = 0; i < FIELD_SIZE; i++) { for (int j = 0; j < FIELD_SIZE; j++) { cout << arr[i][j] << " "; } cout << endl; } } void Players_names(char* Player1, char* Player2) { cout << "Введите имя "; SetConsoleTextAttribute(h, 3); cout << "первого"; SetConsoleTextAttribute(h, 7); cout << " игрока() : "; cin >> Player1; cout << "Введите имя "; SetConsoleTextAttribute(h, 4); cout << "второго"; SetConsoleTextAttribute(h, 7); cout << " игрока() : "; cin >> Player2; } void Create_table(char arr[][FIELD_SIZE], char c) { for (int i = 0; i < FIELD_SIZE; i++) { for (int j = 0; j < FIELD_SIZE; j++) { arr[i][j] = c; } } } void Pass2AnotherPlayer() { system("cls"); cout << "Передайте меня другому игроку, что-бы он поставил свои корабли. И не подглядывайте ;)" << endl; Sleep(5000); system("cls"); } void Set_ships(char arr[][FIELD_SIZE], int PlayerNumber) { char PNEnd[5]; if (PlayerNumber == 1) strcpy_s(PNEnd, "-ый"); else strcpy_s(PNEnd, "-ой"); int amount_of_checked_cells = 0; while (amount_of_checked_cells < 21) { system("cls"); Print_table(arr); int nmb_of_cells_for_current_ship = 1; char type_of_ship[100]; if (nmb_of_cells_for_current_ship == 4) strcpy_s(type_of_ship, "линкор (4 клетки для размещения)"); if (nmb_of_cells_for_current_ship == 3) strcpy_s(type_of_ship, "крейсер (3 клетки для размещения)"); if (nmb_of_cells_for_current_ship == 2) strcpy_s(type_of_ship, "эсминец (2 клетки для размещения)"); if (nmb_of_cells_for_current_ship == 1) strcpy_s(type_of_ship, "торпедный катер (1 клетка для размещения)"); int plant_choise_x, plant_choise_y; cout << "Введите порядковый номер клетки, на которую " << PlayerNumber << PNEnd << " игрок хочет поместить кораблик (x,y)."; cout << endl << "Помещается " << type_of_ship << "." << endl; cout << " Ваши координаты: "; cin >> plant_choise_x >> plant_choise_y; if (Cell_checker(PlayerNumber, arr[plant_choise_x][plant_choise_y]) == false) { arr[plant_choise_x][plant_choise_y] = PlayerNumber + 2; // 3, 4 ([]) amount_of_checked_cells++; if (amount_of_checked_cells >= 4) { arr[plant_choise_x][plant_choise_y] = PlayerNumber + 4; // 5, 6 ([][]) if (nmb_of_cells_for_current_ship == 1) nmb_of_cells_for_current_ship++; if (amount_of_checked_cells >= 10) { if (nmb_of_cells_for_current_ship == 2) nmb_of_cells_for_current_ship++; arr[plant_choise_x][plant_choise_y] = PlayerNumber + 6; // 7, 8 ([][][]) if (amount_of_checked_cells == 16) { if (nmb_of_cells_for_current_ship == 3) nmb_of_cells_for_current_ship++; arr[plant_choise_x][plant_choise_y] = PlayerNumber + 8; // 9, 10 ([][][][]) break; } } } } else { system("cls"); cout << "Введите правильную ячейку! " << endl; Sleep(1250); } } } void Hide_table(char arr[][FIELD_SIZE]) { for (int i = 0; i < FIELD_SIZE; i++) { for (int j = 0; j < FIELD_SIZE; j++) { arr[i][j] = 178; // 178>128 (Отрицательное значение) } } } void Player_move(char arr1[][FIELD_SIZE], char arr2[][FIELD_SIZE], int PlayerNumber, char* p1, char* p2) { int choise_x; int choise_y; while (/*!Win*/true) { system("cls"); if (PlayerNumber == 1) { //Win(amount_of_ship_cells_left_to_drown_P1); if (amount_of_ship_cells_left_to_drown_P1==0) { ifP1Win(p1); } if (amount_of_ship_cells_left_to_drown_P2==0) { ifP2Win(p2); } Print_table(arr1); cout << "n Введите координаты клетки, в которую вы хотите стрельнуть, " << p1 << ": "; choise_x = 0; choise_y = 0;// Чему они должны быть равны на самом деле ????????????????????????????????????????????????????? cin >> arr2[choise_x][choise_y]; if (arr2[choise_x][choise_y] == TorpedeP2 || arr2[choise_x][choise_y] == DestroyerP2 || arr2[choise_x][choise_y] == CruiserP2 || arr2[choise_x][choise_y] == BattleshipP2) arr2[choise_x][choise_y] = ShipHit; else arr2[choise_x][choise_y] = HitMiss; } else { Print_table(arr2); cout << "n Введите координаты клетки, в которую вы хотите стрельнуть, " << p2 << ": "; cin >> arr1[choise_x][choise_y]; if (arr1[choise_x][choise_y] == TorpedeP1 || arr1[choise_x][choise_y] == DestroyerP1 || arr1[choise_x][choise_y] == CruiserP1 || arr1[choise_x][choise_y] == BattleshipP1) arr1[choise_x][choise_y] = ShipHit; else arr1[choise_x][choise_y] = HitMiss; } } } bool Win(int ship_cells) { if (ship_cells == 0) return true; return false; } int main() { srand((unsigned)time(0)); setlocale(LC_ALL, "Russian"); char arr1[FIELD_SIZE][FIELD_SIZE]; char arr2[FIELD_SIZE][FIELD_SIZE]; Players_names(Player1, Player2); system("cls"); cout << "Имя первого игрока: " << Player1 << endl; cout << "Имя второго игрока: " << Player2 << endl << endl; system("pause"); Create_table(arr1, '1'); Create_table(arr2, '2'); //Hide_table(arr1); //Hide_table(arr2); Set_ships(arr1, 1); Pass2AnotherPlayer(); Set_ships(arr2, 2); system("pause"); system("cls"); cout << "t BETA TEST" << endl << endl; cout << "Поле игрока с именем (или никнеймом) " << Player1 << endl; Print_table(arr1); cout << endl; cout << "Поле игрока с именем (или никнеймом) " << Player2 << endl; Print_table(arr2); //void Player_move(char arr1[][FIELD_SIZE], char arr2[][FIELD_SIZE], int PlayerNumber, char p1, char p2) { Player_move(arr1, arr2, 1, Player1, Player2); Player_move(arr1, arr2, 2, Player1, Player2); system("pause"); return 0; } |
1
5
18.03.2018, 16:29
Заходим в игру → нажимаем на кнопку Online → выбираем Расширенный или Классический режим → жмем Пригласить игроков → появится список тех игроков, с которыми вы играли недавно. Если вашего друга нет в этом списке, то тапаем на иконку с лупой в верхней части экрана и указываем никнейм игрока → выбираем его в списке → нажимаем на Играть → у вашего другая появится в нижней части экрана сообщение с надписью В бой!
0
0
22.05.2018, 18:52
У меня андроид у друга iOS. Мы можем играть по сети?
1
1
28.02.2019, 18:48
У меня андроид у друга iOS. Мы можем играть по сети?
І в мене та ж ситуація,скажіть чи так можна
В ответ на сообщение от Гость
#192818
3
1
16.07.2020, 14:12
Классический режим есть.А про игроков нет ссылок. Либо с другом и онлайн и ссылку отправляешь,а дальше что не понятно.И другу ссылка приходит,открывает и тоже на странице где выбрать только ссылку можно и всё через вацап.фуфло а не приложение.И объяснить никто не может что делать.
1
0
04.07.2022, 06:36
Скажите пожалуйста а когда появится лупа чтоб добавить друга в игре
0
0
04.07.2022, 06:37
Гость
Скажите пожалуйста а когда появится лупа чтоб добавить друга в игре
О какой лупе идет речь? В первом сообщении нет ни слова о лупе, вам достаточно перейти в режим Online и найти своих друзей, которых вы хотите пригласить.
В ответ на сообщение от Гость
#227742