Автор Тема: [Осваивающий] Вывод змейки в консоль (в виде буквы S)  (Прочитано 9153 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7787
  • Репутация: 2278
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Задача:
Вывести в консоль змейку, в виде английской буквы S.

Пример
Код: ( ) [Выделить]
  1.  ***************
  2. *
  3. *
  4. *
  5.  **************
  6.                *
  7.                *
  8.                *
  9.                *
  10. ***************

Условия:
  • Вывод должен осуществляться по вызову функции Snake(), которая принимает 4 параметра:
    Параметры$W - Ширина змейки (допускается только численное значение не меньше 3-ёх)
    $H - Высота змейки (допускается только численное значение не меньше 5-ти)
    $sPen_Char - Символ вывода змейки, в примере выше это * (допускается только 1 символ, и не может быть пустой строкой)
    $sBk_Char - Символ фонового заполнения змейки, в примере выше это ' ', т.е пробел (допускается только 1 символ, и не может быть пустой строкой)
  • Использование подключаемых библиотек запрещено.
  • Использование рекурсии запрещено.
  • Для построения змейки использование цикла обязательно!
  • Позволено использовать не более чем 1 цикл.
  • Требуется предусмотреть корректность указанных параметров (см. описание к параметрам выше), в случае некорректности устанавливать код ошибки.



Победитель в конкурсе:
glax24 - получил Золотую звезду!
« Последнее редактирование: Декабрь 05, 2012, 19:45:39 от CreatoR »


Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.


«Не оказываю тех. поддержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

Русское сообщество AutoIt


Оффлайн inververs [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 2052
  • Репутация: 448
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
А ответы куда, сюда публиковать?

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7787

  • Автор темы
  • Репутация: 2278
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Ну конечно, а куда ещё? :laugh:

Оффлайн inververs [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 2052
  • Репутация: 448
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0

Код удалён за нарушение правил конкурса.
« Последнее редактирование: Ноябрь 30, 2012, 15:11:16 от CreatoR »

Русское сообщество AutoIt

Re: [Осваивающий] Вывод змейки в консоль (в виде буквы S)
« Ответ #3 Отправлен: Ноябрь 30, 2012, 14:41:39 »

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7787

  • Автор темы
  • Репутация: 2278
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
inververs
Неплохо!

А с циклами?
:whistle:


P.S.
Это нарушение правил конкурса, твой ранг это Скриптер, а конкурс для Осваивающих!

Оффлайн WSWR [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 926
  • Репутация: 351
    • Награды
  • Версия AutoIt: 3.3.14.0
Мой пример.

OffTopicТ.к. некоторые моменты мне непонятны - что есть высота змейки, и должен ли ее вывод быть непрерывным или однократным, так что, возможно, не совсем правильно... :)


Код удалён за нарушение правил конкурса.

А на уровень-то я и не посмотрел :whistle:
« Последнее редактирование: Ноябрь 30, 2012, 15:10:57 от CreatoR »

Оффлайн inververs [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 2052
  • Репутация: 448
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
OffTopic :rofl: я тоже не понял что осваивающий это ранг

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7787

  • Автор темы
  • Репутация: 2278
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2

Русское сообщество AutoIt

Re: [Осваивающий] Вывод змейки в консоль (в виде буквы S)
« Ответ #7 Отправлен: Ноябрь 30, 2012, 15:14:41 »

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7787

  • Автор темы
  • Репутация: 2278
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Ещё одно условие:

Для построения змейки использование циклов обязательно!

Оффлайн DarWiM [?]

  • Продвинутый
  • ***
  • Сообщений: 527
  • Репутация: 90
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.8.1

Код удалён за нарушение правил конкурса.

P.S. Только на днях репутация перевалила через 50, даже не заметил, что ранг другой..
« Последнее редактирование: Ноябрь 30, 2012, 16:49:32 от CreatoR »

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7787

  • Автор темы
  • Репутация: 2278
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Снова обновил условия, см. первое сообщение темы.

Оффлайн DarWiM [?]

  • Продвинутый
  • ***
  • Сообщений: 527
  • Репутация: 90
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.8.1
CreatoR
OffTopicА у меня была проверка на корректность.. :)

Оффлайн glax24 [?]

  • Новичок
  • *
  • Сообщений: 72
  • Репутация: 14
    • Награды
Вот что получилось
(нажмите для показа/скрытия)
Код: AutoIt [Выделить]
Snake()

;Функция выводит змейку в консоль
Func Snake($iW = 16, $iH = 9, $sPenChar = "*", $sBkChar = ' ')
    Local $i
    Local $iCentr ; Центр
    Local $sWLine  = "" ; Линия
    Local $iWCount = 0 ; Количество символов в строке
    Local $iLineCount = 0 ; Количество строк
    Local $iAllCount = $iH * $iW ; Общее количество символов
    Local $sSnakeMsg = ''

    ;Проверка данных
    Select
        Case Not StringIsInt($iW) Or $iW < 3
            Return SetError(1, 0, "")
        Case Not StringIsInt($iH) Or $iH < 5
            Return SetError(2, 0, "")
        Case StringLen($sPenChar) <> 1 Or Not IsString($sPenChar) Or Not $sPenChar
            Return SetError(3, 0, "")
        Case StringLen($sBkChar) <> 1 Or Not IsString($sBkChar) Or Not $sBkChar
            Return SetError(4, 0, "")
    EndSelect

    $iCentr = Int($iH / 2)

    For $i = 0 To $iAllCount

        $iWCount += 1

        Select
            ;Верх линия
            Case $iLineCount = 0
                If $iWCount = 1 Then
                    $sWLine &= $sBkChar
                Else
                    $sWLine &= $sPenChar
                EndIf
                ;Центр
            Case $iLineCount = $iCentr
                If $iWCount = 1 Or $iWCount = $iW Then
                    $sWLine &= $sBkChar
                Else
                    $sWLine &= $sPenChar
                EndIf
                ;Нижняя линия
            Case $iLineCount = $iH - 1
                If $iWCount = $iW Then
                    $sWLine &= $sBkChar
                Else
                    $sWLine &= $sPenChar
                EndIf
            Case $iLineCount < $iCentr And $iLineCount
                ;Рисует левую сторону
                If $iWCount = 1 Then
                    $sWLine &= $sPenChar
                Else
                    $sWLine &= $sBkChar
                EndIf
            Case $iLineCount > $iCentr And $iLineCount
                ;Рисует правую сторону
                If $iWCount < $iW Then
                    $sWLine &= $sBkChar
                Else
                    $sWLine &= $sPenChar
                EndIf
        EndSelect

        If $iWCount = $iW Then
            ConsoleWrite($sWLine & @CRLF)
            $sSnakeMsg &= $sWLine & @CRLF
            $sWLine = ''
            $iWCount = 0
            $iLineCount += 1
        EndIf
    Next

    MsgBox(0,"Snake", $sSnakeMsg)

EndFunc   ;==>Snake


Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7787

  • Автор темы
  • Репутация: 2278
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
glax24  [?]
Цитировать
Вот что получилось
Отлично.

За решение вручена Золотая звезда!

 :beer:

Русское сообщество AutoIt

Re: [Осваивающий] Вывод змейки в консоль (в виде буквы S)
« Ответ #13 Отправлен: Декабрь 05, 2012, 19:44:23 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
0 Ответов
4071 Просмотров
Последний ответ Январь 15, 2012, 22:12:25
от IIuOHeP
20 Ответов
14918 Просмотров
Последний ответ Март 14, 2012, 00:21:18
от Arei
3 Ответов
1725 Просмотров
Последний ответ Май 05, 2014, 02:13:29
от xaker
0 Ответов
779 Просмотров
Последний ответ Май 04, 2014, 15:35:56
от madmasles
2 Ответов
1261 Просмотров
Последний ответ Октябрь 13, 2014, 17:29:58
от jam
0 Ответов
943 Просмотров
Последний ответ Февраль 16, 2015, 17:30:38
от itskun
5 Ответов
1237 Просмотров
Последний ответ Ноябрь 10, 2015, 10:51:18
от belovkirill
20 Ответов
1434 Просмотров
Последний ответ Сентябрь 05, 2016, 14:17:01
от InnI
2 Ответов
1575 Просмотров
Последний ответ Декабрь 16, 2016, 17:57:00
от Alofa
3 Ответов
263 Просмотров
Последний ответ Март 12, 2017, 19:12:59
от Garrett