Как написать скрипт для игры. Работаем с операционной системой Windows

  • Категоря: Без рубрики
  • Внимай, даю установку: скрипты — это круто. Ты это знаешь, я это знаю, короче — мы это знаем. Установку дал! Успешно. Теперь о них — любимых скриптах — и поговорим. Приятно наваять своими ручками ка- кую-нибудь скриптятину на яве и дать соседу-ламаку пропереться, а по- ка тот будет ее разглядывать — дать ему пинка. Вот только бага: по ходу все клевое в скриптинге уже придумано. Предложить что-либо карди- нально новое (во всяком случае, мне) уже сложно, лучше пива попить пойти. С другой стороны, можно легко насочинять целый ворох вторич- ных вещей, которые при ближайшем рассмотрении сведутся к Нагромож- дению все тех же базовых методов. А это неправильно — вторичное само по себе на хрен никому не нужно. Наконец (не на конец, а в конце концов!)…

    Внимай, даю установку: скрипты — это круто. Ты это знаешь, я это знаю, короче — мы это знаем. Установку дал! Успешно. Теперь о них — любимых скриптах — и поговорим. Приятно наваять своими ручками ка- кую-нибудь скриптятину на яве и дать соседу-ламаку пропереться, а по- ка тот будет ее разглядывать — дать ему пинка. Вот только бага: по ходу все клевое в скриптинге уже придумано. Предложить что-либо карди- нально новое (во всяком случае, мне) уже сложно, лучше пива попить пойти. С другой стороны, можно легко насочинять целый ворох вторич- ных вещей, которые при ближайшем рассмотрении сведутся к Нагромож- дению все тех же базовых методов. А это неправильно — вторичное само по себе на хрен никому не нужно. Наконец (не на конец, а в конце концов!), наступило «творческое озарение»: если нельзя ничего выжать внутри документа, то надо перехо- дить на качественно новый уровень манипуляции самим окном броузера. Сначала чуть-чуть информации для тех, кто забыл (или не знал). В объектной модели современных броузеров (под современными я имею в виду Internet Explorer и Netscape Navigator) есть два очень интерес- ных метода: window.resizeTo (x,y) и window.moveTo (x,y), которые сулят просто огромные возможности. Первый метод изменяет размер «смотро- вого окна» броузера до указанных размеров (то есть х на у пикселей), а второй перемещает само окно, помещая левый верхний угол в точку с ко- ординатами х по горизонтали и у по вертикали. Таким образом, грамотно используя эти два метода, ты легко можешь добиться весьма интересных эффектов, которые буквально валят с ног неподготовленного зрителя.

    Для начала давай рассмотрим простенький скриптик, отвечающий за перемещение окна броузера по десктопу и его отражение от «краев» экрана:

    Окно в стиле Xenix

    // Начинаем script блок function move_the_window(){ // Наша стартовая функция window.resizeTo(screen. width/2, screen, height/2);- // Сначала сжимаем окно до половины рабочего стола window.moveTo(1,1); // Теперь помещаем его в левый верхний угол экрана var x=1; // Это будет наша Х-координата. Вначале равна единице var y=1; // Это будет наша Y-координата. Вначале равна единице var dx=7; // Смещение по X var dy=10; // … и по Y move(); // Теперь вызываем функцию, которая и будет двигать окно function move(){ // .Объявляем функцию while(true){ // Объявляем бесконечный цикл if(x>=(screen.width) || x=(screen.height) || y javascript is cool! Как только страница полностью загружена, вызывается функция move_the_window. Она объявляет все необходимые переменные и помеща- ет окно в левый верхний угол рабочего стола. Методы screen.width и screen.height возвращают нам значения (ширину и высоту) рабочего сто- ла, и, уже зная их, мы сжимаем окно до половины.

    Теперь приступим к функции move. Так как все действия здесь вы- полняются внутри бесконечного цикла, то окно так и будет безостановоч- но бегать по экрану. Попытка же свернуть его через task manager Приведет к интересным визуальным эффектам (советую убедиться на собственном опыте). В случае, если ты хочешь, чтобы цикл выполнялся определенное количество раз, замени оператор while на while(var i < твое число) и добавь в конце цикла оператор i++. С помощью метода resizeTo можно делать довольно любопытные вещи. Посмотри, как можно сжать окно до размеров заглавной рамки и заставить все это, как обычно, бегать по экрану:

    Развитие темы

    // Начинаем script блок function move_the_windows(){ // Наша стартовая функция window. resizeTo(screen.width, 25); // Сжимаем окно номер 1 window.moveTo(0,1); // Теперь помещаем его в левый верхний угол экрана window2 = ореп(\»\», null); // Создаем объект второго окна window2.document.write(\» Window N2\»); // Пишем в не- го заголовок window2.resizeTo(screen.width,25); // Сжимаем его и window2.moveTo(0, screen.height-25); // помещаем в низ экрана var dy1=2; // Начальное смещение для верхнего окна var dy2=-2; // … и для нижнего var y1 = 1; // Y-координата верхнего окна var y2 = screen.height-25; // и Y-координата нижнего move(); // Теперь вызываем функцию, которая и будет двигать оба окна function move(){ // Объявляем функцию while(true){ // Объявляем бесконечный цикл if (y1>=(screen.height) || y1 =(screen.height) || y2 /etc/sysconfig/network«lfs»

    Из книги Компьютерные советы (сборник статей) автора Автор неизвестен

    Настройка сетевых скриптов Эта часть нужна для настройки сетевой карты.Если у вас нет сетевой карты, вам не требуется создавать или настраивать файлы, относящиеся к сетевой карте. В этом случае удалите симлинк network из всех директорий (/etc/rc.d/rc*.d)Настройка шлюза по

    Из книги HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов автора Дронов Владимир

    § 4.6 Использование скриптов Автор FB Editor предусмотрел расширение его возможностей при помощи Java Script.Вызываются они из меню ToolsScripts[скрипт].Первые девять скриптов можно вызывать клавишами Ctrl+1…9.Документации, разумеется, не предусмотрено никакой. Во всем придется

    Из книги Ководство автора Лебедев Артём Андреевич Из книги Краткое введение в программирование на Bash автора Родригес Гарольд Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

    Правила написания выражений В процессе чтения этой главы мы изучили множество выражений JavaScript. Но так и не узнали, по каким правилам они пишутся. Настала пора восполнить пробел в наших знаниях.- Между операндами, операторами, вызовами функций и методов и ключевыми

    Из книги Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil автора Ковязин Алексей Николаевич

    § 163. Правила написания почтовых адресов 21 марта 2010Раньше реквизиты адреса принято было писать от большего к меньшему: страна, индекс, город, улица, дом, квартира, Васе Пупкину. В мире принята другая система составления адреса, потому что в мире отправляют много почты и

    Из книги Написание скриптов для Blender 2.49 автора Anders Michel

    Так все-таки программирование (programming) или написание скриптов (scripting)? Новичков в программировании, как правило, озадачивает разница между, собственно, программированием и языками скриптов. Программы, написанные на каких-то языках программирования, обычно гораздо более

    Из книги автора

    Что нужно знать для написания своих скриптов? Для этого необходимо знание основных команд Linux. Например, вы должны знать, как копировать, перемещать и создавать новые файлы. Обязательно умение использовать какой-либо текстовый редактор. Существуют три основных текстовых

    Из книги автора

    Переносимость ваших скриптов на bash При написании ваших собственных скриптов важно делать это так, чтобы они оставались переносимыми. Термин «переносимость» означает, что если ваш скрипт работает под Linux, то он должен работать в другой Unix-системе с малыми изменениями или

    Из книги автора

    Инструменты для написания фильтров API Firebird содержит группу макрофункций, начинающихся с isc_biob_fiiter_, которые являются "инструментом программиста" для написания фильтров BLOB. Документы API Guide и Embedded SQL Guide из набора документов Borland по InterBase версии 6 бета имеют разделы по

    Из книги автора

    Создание базы данных Employee с помощью скриптов После выполнения инсталляции Firebird база данных Employee будет создана и будет сделана ее резервная копия из скриптов. Скрипты empddl.sql (который создает метаданные) и empdll.sql (который заполняет базу данных) доступны в области Downloads на

    Из книги автора

    Использование скриптов в клиентских приложениях базы данных InterBase Время от времени у любого программиста появляется желание вынести часть логики своих приложений на уровень, который можно было бы изменять без перекомпиляции приложения. А для определенного класса задач

    Любой начинающий системный администратор Linux рано или поздно сталкивается с таким понятием, как “скрипт ”, будь то один из загрузочных скриптов вроде /etc/rc.d/rc или написанный разработчиком ПО скрипт конфигурирования configure . В данной статье я постараюсь показать, что написание скриптов на shell не является чем-то из ряда вон выходящим и вполне под силу даже новичку в мире Linux.

    Начнем с того, что разберем, что же скрывается за английскими терминами shell и скрипт . Shell , или оболочка, как этот термин иногда переводят - это командный интерпретатор, интерфейс между пользователем и операционной системой, ее ядром. Но, кроме этого, это еще и мощный язык программирования и написания сценариев. Он содержит свои служебные слова и управляющие конструкции и позволяет писать на нем программы. Такая программа на языке сценариев, называемая скриптом , может объединять в себе системные вызовы и команды операционной системы, а также внешние утилиты, создавая мощный инструмент для системного администрирования.

    Одной из задач системного администрирования является резервное копирование важной информации. Поэтому давайте рассмотрим пример скрипта, реализующего back-up информации.

    Начало начал

    Итак, прежде всего, нам необходимо разобраться в структуре скрипта. Она не представляет собой ничего сложного. По большому счету, простейший скрипт - просто перечисление системных команд. Например:

    Echo This is just example
    whoami
    uname -a

    Эти команды объединены в одном файле. Но shell должен знать, что он должен этот файл обработать, а не просто прочесть его содержимое. Для этого служит специальная конструкция: #!

    Эта конструкция называется «sha-bang ». Вообще-то, # задает комментарий, но в данном случает sha-bang означает, что после нее пойдет путь к обработчику скрипта. Напрмер:

    #!/bin/bash
    #!/bin/sh
    #!/usr/bin/perl

    Мы остановимся на Bash, Bourne-Again shell. Это shell устанавливается по умолчанию практически во всех Linux-системах, и /bin/sh ссылается на него. Об окончании скрипта говорит служебное слово exit.

    Вооружившись этими знаниями, напишем наш первый скрипт:

    #!/bin/bash
    echo Простой скрипт # Команда echo выводит сообщение на экран
    echo Вы:
    whoami # whoami показывает имя зарегистрированного пользователя
    echo Ваша система стартовала
    uptime # uptime показывает время включения машины
    echo Сегодня
    date # date показывает текущую дату и время
    echo Пока все
    exit

    Сохраним этот файл под именем tutor1.sh. Выполним команду чтобы сделать скрипт исполняемым.

    Chmod +rx tutor1.sh

    Результатом выполнения скрипта будет:

    Voland@superstar:~/Doc/Open Source$ ./tutor1.sh
    Простой скрипт
    Вы:
    voland
    Ваша система стартовала
    14:38:46 up 1:48, 2 users, load average: 0.47, 0.43, 0.41
    Сегодня
    Вск Фев 26 14:38:46 MSK 2006
    Пока все

    Переходим к более серьезному.

    Теперь, когда мы научились писать простейшие скрипты, самое время перейти к серьезным вещам: написанию скрипта для резервного копирования.

    Перво-наперво, необходимо определить - резервную копию чего мы будем делать. Поэтому наш скрипт должен уметь работать с командной строкой. Аргументы командной строки задаются после имени скрипта через пробел: somescript arg1 arg2 arg3. Скрипт воспринимает аргументы по номерам их следования, поэтому мы будем использовать конструкции вида $номер_аргумента, т.е. $1, $2, $3. $ - это символ подстановки, который нам понадобится и при работе с переменными. Переменные в скрипте задаются в виде имя_переменной=значение. Мы будем использовать переменные MAXPARAMS для определения максимального количества параметров командной строки, BACKUPFILE для задания имени архива, BACKUPDIR для папки, резервную копию которой мы будем делать и ARCHIVEDIR для папки, куды мы поместим архив. Самой главной частью скрипта будут команды поиска и архивации всех найденных файлов и папок в указанной:

    Find . -type f -print0 | xargs -0 tar rvf "$archive.tar" > /dev/null
    gzip $archive.tar

    Давайте разберемся, что же эти команды делают. find ищет в текущем каталоге (об этом говорит первый аргумент ".") все файлы и выдает полный путь к ним (print0). Эти пути перенаправляюся команде tar, которая собирает все файлы в один. Затем командой gzip мы архивируем получившийся tar-файл. Команда > /dev/null удобна, если вы архивируете большое количество файлов. В этом случае их имена и полный путь к ним не выводятся на консоль.

    Следующий шаг должен предусмотреть подсказки пользователю как пользоваться скриптом, если он допустит какие-то ошибки.

    Например, эта конструкция

    If [ $# -lt "$MAXPARAMS" ];
    then
    echo

    echo
    exit 0
    fi

    подскажет, что пользователь указал недостаточное количество аргументов командной строки. If [условие]...fi задает условную конструкцию. $# -lt "$MAXPARAMS" проверяет введенное количество параметров и если это число окажется меньше MAXPARAMS, то пользователю будет выдано сообщение об ошибочном вводе. Exit 0 заставит скрипт прекратить работу без указания кода ошибки. Аналогично проверяется превышение допустимого числа параметров, только вместо ls (less then - меньше, чем), необходимо указать gt (greater then - больше, чем). Теперь, когда основные моменты скрипта разъяснены, можно переходить к полной его версии:

    #!/bin/bash
    # Описание:
    #+ Делает резервную копию всех файлов в указанной директории
    #+ в "tarball" (архив tar.gz).
    #+ Использование:
    #+ sh backup.sh имя_архива папка-источник папка-назначение
    #+

    # Максимальное количество параметров командной строки
    MAXPARAMS=3

    if [ $# -lt "$MAXPARAMS" ];
    then
    echo
    echo "Использование: sh `basename $0` имя_архива папка-источник папка-назначение"
    echo
    exit 0
    fi

    if [ $# -gt "$MAXPARAMS" ];
    then
    echo
    echo "Для этого скрипта нужно только $MAXPARAMS аргументов командной строки!"
    echo
    exit 0
    fi

    # Переменные, которые мы используем в скрипте
    BACKUPFILE=$1-backup-$(date +%m-%d-%Y)
    archive=$BACKUPFILE
    BACKUPDIR=$2
    ARCHIVEDIR=$3

    # Проверяем, есть ли папка-источник и папка-назначение
    if [ ! -e $BACKUPDIR ];
    then
    echo
    echo "\"$BACKUPDIR\" не существует!"
    echo
    exit 0
    fi

    if [ ! -e $ARCHIVEDIR ];
    then
    echo
    echo "\"$ARCHIVEDIR\" не существует, создаем..."
    mkdir $ARCHIVEDIR
    echo "Готово."
    fi

    # Проверяем, есть ли архивы в источнике и назначении.
    cd $ARCHIVEDIR
    if [ -e $archive.tar.gz ];
    then rm $archive.tar.gz
    fi

    cd $BACKUPDIR
    if [ -e $archive.tar.gz ];
    then rm $archive.tar.gz
    fi

    # Главная часть скрипта...
    echo "Делаем резервную копию \"$BACKUPDIR\" в файл \"$archive.tar.gz\"..."
    find . -type f -print0 | xargs -0 tar rvf "$archive.tar" > /dev/null
    gzip $archive.tar
    echo "\"$BACKUPDIR\" была успешно заархивирована в файл \"$archive.tar.gz\"."

    # Перемещаем архив в папку ARCHIVEDIR
    echo "Перемещаем архив \"$archive.tar.gz\" в папку \"$ARCHIVEDIR\"."
    mv $archive.tar.gz $ARCHIVEDIR/$archive.tar.gz
    echo "Готово."

    Надеюсь, основные моменты я прокомментировал достаточно подробно. Если у вас возникли какие-либо вопросы, то вы можете связаться со мной по адресу [email protected] Рекомендую также замечательную книгу Advanced Bash-Scripting Guide Менделя Купера (Mendel Cooper), которая очень помогла мне в свое время, когда я только знакомился со скриптами. Удачного программирования.

    P.S. Большое спасибо mar за ее замечания и советы.