Скорая Компьютерная Помощь г. Калуга

Полный спектр компьютерных услуг!

Здравствуйте, гость ( Вход | Регистрация )

> Внимание!

  • Вся информация, расположенная в данном и других разделах форума получена из открытых источников (интернет-ресурсы, средства массовой информации, печатные издания и т.п.) и/или добавлена самими пользователями. Администрация форума предоставляет его участникам площадку для общения / размещения файлов / статей и т.п. и не несет ответственности за содержание сообщений, а также за возможное нарушение авторских, смежных и каких-либо иных прав, которое может повлечь за собой информация, содержащаяся в сообщениях.
Ремонт компьютеров в калуге Рекламное место сдается
 
Ответить в эту темуОткрыть новую тему
> Prince of Persia [NES], Генератор паролей на PHP ;)
Decker
сообщение 19.9.2013, 1:13
Сообщение #1


Администратор
*****

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1



А помните в свое время была такая замечательная игра на Dendy, как Prince of Persia? Кто из нас не пытался подбирать пароли к различным уровням? Помнится даже журнал Великий Дракон опубликовал статью с названием вроде "секреты паролей принца" или схожим. Однако алгоритм генерации паролей так и не был найден. Что ж ... вот он, спустя 19 лет такна открыта wink.gif Скрипт принимает на входе два аргумента - уровень и оставшееся игровое время wink.gif

Код
<?php

if ($argc != 3) {
     echo "Usage: " . $argv[0] . ' <level> <time>';
     die();
}

$plevel = intval($argv[1])-1; $ptime = intval($argv[2]);
echo "Level: " . ($plevel+1) . "\r\n";
echo "Time: " . $ptime . "\r\n";

$r1 = rand(0,9); $r2 = rand(0,9);
$pass[0] = (intval($ptime / 10) + $r1) % 10;
$pass[3] = (intval($ptime % 10) + $r2) % 10;
$pass[1] = (intval($plevel & 3) + $r1) % 10;
$pass[7] = (intval($plevel / 4) + $r2) % 10;
$pass[2] = $r1;
$pass[5] = $r2;
$sum = $pass[0] + $pass[1] + $pass[2] + $pass[3];
$sum = $sum + ($sum % 10) + $pass[5];
$sum = $sum + intval($sum / 10) + $pass[7];
$pass[4] = $sum % 10;
$pass[6] = intval($sum / 10);

echo "Password: " . $pass[0].$pass[1].$pass[2].$pass[3].$pass[4].$pass[5].$pass[6].$pass[7] . "\r\n";
?>


Пример. Уровень 1. 99 минут - 56608121 wink.gif

Прикрепленное изображение
Прикрепленное изображение


p.s. Сам алгоритм был взять мной из замечательной статьи [NES] Пишем редактор уровней для Prince of Persia с Хабра и переписан с bash'а на PHP. Вот кстати ссылки на эту статью:


p.s. Ссылка, по которой можно загрузить архив с редактором, небольшой документацией по игре и исходному коду патча.


Прикрепленные файлы
Прикрепленный файл  nesprinced.zip ( 550,41 килобайт ) Кол-во скачиваний: 76
 


--------------------

Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

Рекламное место сдается Рекламное место сдается
Текстовая версия Сейчас: 30.1.2025, 9:56
Рейтинг@Mail.ru
Яндекс.Метрика Яндекс цитирования