Страница 1 из 10 123 ... ПоследняяПоследняя
Показано с 1 по 10 из 95

Тема: Свободный практикум

  1. #1
    Бывалый Аватар для Dark32
    Информация о пользователе
    Регистрация
    30.12.2008
    Адрес
    Арзамас
    Сообщений
    640
    Записей в дневнике
    2
    Репутация: 20 Добавить или отнять репутацию

    Icon1 Свободный практикум

    Начинаю свободный практикум по скриптописанию. Суть практикума такова: в начале каждой недели (или чаще, в зависимости от сложности) я даю задание на составление простенького скрипта-алгоритма на нашем любимом RGSS (Можно использовать псевдоязык).
    В течение недели вы присылаете мне в открытую (пост в теме) или скрытую (ЛС, аська, почта) свой пример решения. В конце недели выкладываются все решения одним постом, в т.ч. и моё решение, и вы сами решаете какое решение для вас более приемлемое.
    Задания можно так же предлагать, но желательно в личном порядке.
    В практикум может вступить любой человек в любое время, ровно как и выйти из него.
    Язык исполнения желательно RGSS, но так же разрешён и псевдоязык. Можно прислать решение на другом любом языке, если это не затрагивает особенностей данного языка.

    Спойлер Задание №1:
    Замена подстроки.
    Заменить подстроку в строке на другую подстроку.
    Спойлер Теория:
    Подстрока - не пустая часть строки.
    Задание очень простое, я не могу написать внятной теории. Решается множеством способов.


    Метод должен принимать 3 строки: исходную строку, строку заменяемую, строку на которую меняют. Должно работать со строками любой длины и любыми символами.

    Дана строка
    "RMXP/VX for game developers. Many opportunities in the new version."
    Заменить RMXP/VX на RM2k3
    "RM2k3 for game developers. Many opportunities in the new version."

    Спойлер Задание 2:
    Вывод чисел в обратном порядке.
    Спойлер Теория:
    Мы вводим на клавиатуре ряд чисел(символов) и необходимо вывести их в обратном порядке. Решается занесением в массив всех цифр и вывод из массива в обратном порядке

    Задача: вывести в обратном порядке введённые символы не используя для вывода массив и не более 1 переменной.

    На вводе имеем ряд чисел (каждое число отдельно через Readln на паскале или аналог)
    1,2,3,4,5,6,7,8,9,0
    вывести числа в обратном порядке
    0,9,8,7,6,5,4,3,2,1
    0 - служет выходом из ввода чисел


    Спойлер Задача 3. Andrew:

    НОК
    (Время: 1 сек. Память: 16 Мб Сложность: 24%)

    Требуется написать программу, определяющую наименьшее общее кратное (НОК) чисел a и b.
    Входные данные


    В единственной строке входного файла INPUT.TXT записаны два натуральных числа А и В через пробел, не превышающих 46340.
    Выходные данные


    В единственную строку выходного файла OUTPUT.TXT нужно вывести одно целое число — НОК чисел А и В.
    Примеры
    № |INPUT.TXT |OUTPUT.TXT
    1 |36 27 |108
    2 |39 65 |195
    Спойлер Вот объяснение алгоритма.:


    Наименьшее общее кратное (НОК) двух целых чисел a и b есть наименьшее натуральное число, которое делится на a и b. Обычно обозначается [a,b], а иногда НОК(m,n) или LCM(a,b). Например, НОК(16,24)=48.

    Для нахождения НОК удобно использовать следующее свойство: для любых натуральных чисел a и b верно равенство НОД(a,b)*НОК(a,b)=a*b , откуда получаем, что НОК(a,b)=a*b/НОД(a,b).

    В условиях данной задачи можно НОД найти перебором, но более универсально использовать алгоритм Евклида, реализация которого рассмотрена здесь.



    Спойлер Задание 4:

    Анимация по кадрам.
    framerate.PNG
    Спойлер Теория:
    Вывод картинки
    PHP код:
    $spr=Sprite.new
    $spr.bitmap Bitmap.new (Image_path)
    $spr.x,$spr.x,
    Вывод участка картинки
    PHP код:
    $spr=Sprite.new
    $spr.bitmap.blt(x4Bitmap.new (Image_path), Rect.new(002424)) 

    Задача: вывести анимацию на экран.
    Болванка сцены будет дана, если необходимо
    Спойлер Болванка сцены:
    PHP код:
    class Scene_Dummy
      def initialize
      end
      def main
        
    @status_window Window_Dummy.new
        
    Graphics.transition
        loop 
    do
          
    Graphics.update
          Input
    .update
          update
          
    if $scene != self
            
    break
          
    end
        end
        Graphics
    .freeze
        
    @status_window.dispose
      end
      
    #--------------------------------------------------------------------------
      # * Frame Update
      #--------------------------------------------------------------------------
      
    def update
      end
    end


    class Window_Dummy Window_Base
      def initialize
    (actor)
        
    super(00640480)
        
    self.contents Bitmap.new(width 32height 32)
        
    refresh
      end   
      
    #--------------------------------------------------------------------------
      # * Refresh
      #--------------------------------------------------------------------------
      
    def refresh
        self
    .contents.clear
        end
      
    end 

    Можно вывести анимацию перед отрисовкой титульника, это особой роли не играет.
    Уровни сложности:
    1 уровень. Самое простое: разрезать на отдельные кадры, подогнать положения, менять кадры-файлы
    2 уровень. Посложнее: перекроить, разбить на одинаковые прямоугольники, пенять прямоугольники.
    3 уровень. Сложно: Изменять картинку настрого нельзя!
    При выполнение 1 и 2 уровня - выкладывать графику необходимо.
    Картинка избыточна, на любом уровне можно использовать не все кадры, а только ключевые.


    Спойлер Задание №5:

    Довольно простое задание - сделать меню биографии героя. По сути это изменённое меню статуса, но желательно статус не затирать. Весьма простое задание: нужно знать 2 вещи: как делать окно и как выводить текст, остальное можно взять из меню статуса.

    И так, что требуется: Создать меню биографии содержащие различную информацию о герое, информация должна подхватываться либо из переменных, либо из текстовый фалов. Должна иметься возможность спокойно изменять информацию о любом герое. Информация о героях не должна зависеть от их расположения в группе, т.е. должна крепиться к ID героя, а не к положению в группе.
    На Светлом есть хороший пример скрипта биографии, можете его проанализировать. Но, дабы, не было тупого плагиата, ввожу дополнительные требования - окно должно быть полупрозрачным или прозрачным, на заднем фоне должна быть текущая карта местности (не миникарта) или что-то тёмно-красное(тёмно-зелёное) двигаться. Не должно быть сильных тормозов.
    Теперь относительно выводимой информации.
    Обязательно:
    Имя, возраст, дата рождения (с указанием начала отсчёта, н-р.: 2.05.340 от рождества Архитектора),место рождения, группа крови (или её аналога), стихия (или аналог), портрет или чарсет.
    Не обязательно:
    Список родителей (создателей или аналог), братья и сёстры, имя партнёра(ов), любимое что-то (цвет, блюдо, оружие, магия, и т.п.)
    Остальная информация на ваш вкус.
    Последний раз редактировалось Dark32; 08.07.2011 в 12:49.
    Нужна помощь в скриптах? Запутался? Голова не варит?
    Читал это и это тоже? Не помогло? Тогда тебе сюда!
    Спойлер •••:
    Цитата Сообщение от Реймон
    В мире нет вещей которые нельзя решить с помощью сладостей
    Цитата Сообщение от Ундер
    Ночью можно обойтись и без сладостей...

  2. #2
    Маститый Аватар для Andrew
    Информация о пользователе
    Регистрация
    08.02.2011
    Адрес
    Беларусь, Витебск
    Сообщений
    1,049
    Записей в дневнике
    3
    Репутация: 30 Добавить или отнять репутацию

    По умолчанию

    Уже делаю.


  3. #3
    Маститый Аватар для Andrew
    Информация о пользователе
    Регистрация
    08.02.2011
    Адрес
    Беларусь, Витебск
    Сообщений
    1,049
    Записей в дневнике
    3
    Репутация: 30 Добавить или отнять репутацию

    По умолчанию

    Вот. Всё готово.
    PHP код:
    def changestrst1st2)
      return 
    str.gsub(st1) {|sst2 
    end
    print change("RMXP/VX for game developers. Many opportunities in the new version.","XP/VX","2k3"
    Последний раз редактировалось Andrew; 30.05.2011 в 18:54.


  4. #4
    Маститый Аватар для Рыб
    Информация о пользователе
    Регистрация
    12.11.2008
    Адрес
    [ДАННЫЕ УДАЛЕНЫ]
    Сообщений
    1,421
    Записей в дневнике
    50
    Репутация: 55 Добавить или отнять репутацию

    По умолчанию

    т.к. Ренпи как не странно получил распространение в комьюнити, то я пожалуй напишу на python'e
    PHP код:
    def change(strstr2str3):
        return 
    str.replace(str2str3)
    print 
    change("RMXP/VX for game developers. Many opportunities in the new version.","XP/VX","2k3"
    Альтернативное решение Ruby:
    PHP код:
    def change(str,str2,str3)
        
    str[str2] = str3
    end
    print change("RMXP/VX for game developers. Many opportunities in the new version.","XP/VX","2k3"
    Последний раз редактировалось Рыб; 30.05.2011 в 18:05.

  5. #5
    Маститый Аватар для Andrew
    Информация о пользователе
    Регистрация
    08.02.2011
    Адрес
    Беларусь, Витебск
    Сообщений
    1,049
    Записей в дневнике
    3
    Репутация: 30 Добавить или отнять репутацию

    По умолчанию

    Цитата Сообщение от Kambala Посмотреть сообщение
    т.к. Ренпи как не странно получил распространение в комьюнити, то я пожалуй напишу на python'e
    PHP код:
    def change(strstr2str3):
        return 
    str.replace(str2str3)
    print 
    change("RMXP/VX for game developers. Many opportunities in the new version.","XP/VX","2k3"
    Альтернативное решение Ruby:
    PHP код:
    def change(str,str2,str3)
        
    str[str2] = str3
    end
    print change("RMXP/VX for game developers. Many opportunities in the new version.","XP/VX","2k3"
    Второй вариант не работает. Исправь.

    Dark32, давай новое задание.
    Последний раз редактировалось Andrew; 30.05.2011 в 18:59.


  6. #6
    Бывалый Аватар для Inkognitoo
    Информация о пользователе
    Регистрация
    30.09.2008
    Адрес
    Пермь.
    Сообщений
    988
    Записей в дневнике
    4
    Репутация: 16 Добавить или отнять репутацию

    По умолчанию

    Pascal..)

    Код:
    Var a:array[1..100] of String;
        i,j:Integer;
        s:String;
    Begin
     j:=1;
     s:='RMXP/VX for game developers. Many opportunities in the new version.';
      For i:=1 to length(s) do
       begin
        If s[i]<>' ' then
                      begin
                       a[j]:=a[j]+s[i];
                      end;
        If i<>length(s) then
                         begin
                          If (s[i]<>' ') and (s[i+1]=' ') then
                                                           begin
                                                            j:=j+1;
                                                           end;
                         end;
       end;
      
      For i:=1 to j do
       begin
        If a[i]='RMXP/VX' then 
                            begin
                             a[i]:='RM2k3';
                            end;    
       end;
    End.

  7. #7
    Маститый Аватар для Andrew
    Информация о пользователе
    Регистрация
    08.02.2011
    Адрес
    Беларусь, Витебск
    Сообщений
    1,049
    Записей в дневнике
    3
    Репутация: 30 Добавить или отнять репутацию

    По умолчанию

    Inkognitoo, тоже хотел сделать на паскале.)


  8. #8

    По умолчанию

    Цитата Сообщение от Kambala Посмотреть сообщение
    Альтернативное решение Ruby:
    PHP код:
    def change(str,str2,str3)
        
    str[str2] = str3
    end
    print change("RMXP/VX for game developers. Many opportunities in the new version.","XP/VX","2k3"
    Цитата Сообщение от Andrew Посмотреть сообщение
    Второй вариант не работает. Исправь.
    Исправлю за него

    Код:
    def change(str,str2,str3)
        str[str2] = str3
        return str
    end
    p change('RMXP/VX for game developers. Many opportunities in the new version.','RMXP/VX','RM2k3')
    Последний раз редактировалось Arnon; 30.05.2011 в 20:05.

  9. #9
    Бывалый Аватар для Dark32
    Информация о пользователе
    Регистрация
    30.12.2008
    Адрес
    Арзамас
    Сообщений
    640
    Записей в дневнике
    2
    Репутация: 20 Добавить или отнять репутацию

    По умолчанию

    Инкогнитоо, ты как всегда поражаешь меня своими оригинальными кодами...
    А я всё ждал, когда замену строк перебором выложат.
    Уважаю тебя за это! Не многие могут меня удивить!
    (в паскале есть более простой способ замены подстрок основанный на копи-делете-пасте)

    Не обижайся только, я совершенно без сарказма выражаю уважение к твоим кодам. Я тоже всегда изобретал велосипеды на паскале, строк так на 200-300, когда можно было обойтись 2-10 строками...

    О, я придумал второе задание, как раз для тебя Инкогнито, но в мейкере его проблемно будет реализовать, в отличии от паскаля.
    Нужна помощь в скриптах? Запутался? Голова не варит?
    Читал это и это тоже? Не помогло? Тогда тебе сюда!
    Спойлер •••:
    Цитата Сообщение от Реймон
    В мире нет вещей которые нельзя решить с помощью сладостей
    Цитата Сообщение от Ундер
    Ночью можно обойтись и без сладостей...

  10. #10
    Маститый Аватар для Andrew
    Информация о пользователе
    Регистрация
    08.02.2011
    Адрес
    Беларусь, Витебск
    Сообщений
    1,049
    Записей в дневнике
    3
    Репутация: 30 Добавить или отнять репутацию

    По умолчанию

    Dark32, дай мне тоже. Я тоже паскаль знаю.


Страница 1 из 10 123 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Свободный практикум