Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как правильно написать Hello World? (http://www.flasher.ru/forum/showthread.php?t=213041)

Cake_Eater 20.06.2016 07:55

Как правильно написать Hello World?
 
Недавно решил написать Hello World, и пришел к довольно сложному решению.
Я явно что-то сделал не так. Посоветуйте что можно исправить

Код AS3:

package 
{
        import flash.display.MovieClip;
        import flash.display.Sprite;
 
        public class main extends MovieClip
        {
 
                public function main()
                {
                        //Каждый программист начинает изучение нового языка с написания Hello World
                        //Однако это очень непростая задача, что очень часто отпугивает новичков
                        //Поэтому наша команда решила написать упрощенный вариант Hello World
 
                        //Создаем массив из кодов символов строки
                        var charCodes:Array = new Array(72,101,108,108,111,32,87,111,114,108,100);
 
                        //Создаем массив и переносим в него расшифрованные буквы
                        var chars:Array = new Array  ;
                        for (var i=0; i<charCodes.length; i++)
                        {
                                chars[i] = String.fromCharCode(charCodes[i]);
                        }
 
                        //Создаем матрицу
                        var pixels:Array = new Array  ;
                        for (i=0; i<100; i++)
                        {
                                var row:Array = new Array(0,0,0,0,0);
                                pixels.push(row);
                        }
 
                        //Заносим пиксели каждой полученной буквы в матрицу
                        var w = 0;
                        i = 0;
                        while (i<chars.length)
                        {
                                switch (chars[i])
                                {
                                        case "H" :
                                                pixels[w] = [1,1,1,1,1];
                                                w++;
                                                pixels[w] = [0,0,1,0,0];
                                                w++;
                                                pixels[w] = [1,1,1,1,1];
                                                w++;
                                                pixels[w] = [0,0,0,0,0];
                                                w++;
                                                break;
                                        case "e" :
                                                pixels[w] = [1,1,1,1,1];
                                                w++;
                                                pixels[w] = [1,0,1,0,1];
                                                w++;
                                                pixels[w] = [1,0,0,0,1];
                                                w++;
                                                pixels[w] = [0,0,0,0,0];
                                                w++;
                                                break;
                                        case "l" :
                                                pixels[w] = [1,1,1,1,1];
                                                w++;
                                                pixels[w] = [0,0,0,0,1];
                                                w++;
                                                pixels[w] = [0,0,0,0,1];
                                                w++;
                                                pixels[w] = [0,0,0,0,0];
                                                w++;
                                                break;
                                        case "o" :
                                                pixels[w] = [1,1,1,1,1];
                                                w++;
                                                pixels[w] = [1,0,0,0,1];
                                                w++;
                                                pixels[w] = [1,1,1,1,1];
                                                w++;
                                                pixels[w] = [0,0,0,0,0];
                                                w++;
                                                break;
                                        case "W" :
                                                pixels[w] = [1,1,1,1,0];
                                                w++;
                                                pixels[w] = [0,0,0,0,1];
                                                w++;
                                                pixels[w] = [0,0,0,1,0];
                                                w++;
                                                pixels[w] = [0,0,0,0,1];
                                                w++;
                                                pixels[w] = [1,1,1,1,0];
                                                w++;
                                                pixels[w] = [0,0,0,0,0];
                                                w++;
                                                break;
                                        case "r" :
                                                pixels[w] = [1,1,1,1,1];
                                                w++;
                                                pixels[w] = [1,0,1,1,0];
                                                w++;
                                                pixels[w] = [1,1,1,0,1];
                                                w++;
                                                pixels[w] = [0,0,0,0,0];
                                                w++;
                                                break;
                                        case "d" :
                                                pixels[w] = [1,1,1,1,1];
                                                w++;
                                                pixels[w] = [1,0,0,0,1];
                                                w++;
                                                pixels[w] = [0,1,1,1,0];
                                                w++;
                                                pixels[w] = [0,0,0,0,0];
                                                w++;
                                                break;
                                        case " " :
                                                pixels[w] = [0,0,0,0,0];
                                                w++;
                                                pixels[w] = [0,0,0,0,0];
                                                w++;
                                                pixels[w] = [0,0,0,0,0];
                                                w++;
                                                pixels[w] = [0,0,0,0,0];
                                                w++;
                                                break;
                                }
                                i++;
                                //Lfkmit ktym lol
                        }
 
                        //Расставляем пиксели по полученной матрице
                        //1 - есть пиксель
                        //0 - нет пикселя
 
                        for (i=0; i<pixels.length; i++)
                        {
                                for (var i2=0; i2<5; i2++)
                                {
                                        if (pixels[i][i2] == 1)
                                        {
                                                var pixel:Sprite = new Sprite  ;
                                                pixel.graphics.beginFill(0x000000);
                                                pixel.graphics.drawRect(i,i2,1,1);
                                                addChild(pixel);
                                        }
                                }
                        }
 
                        //Вот так, всего за 150 строк, пишется Hello World
                        //Мы долго работали всей коммандой чтобы создать этот код,
                        //Чтобы вам не нужно было всё это делать самим
 
                        //Чтобы купить лицензию на использование этого кода,
                        //Переходите на наш сайт CakeEaterGames.ru
                }
        }
}

Посоветуйте альтернативу по-проще пожалуйста

caseyryan 20.06.2016 10:08

Неплохо :D
Я уж подумал серьезно кто-то про hello world спрашивает)

delphic 27.06.2016 20:17

кидаем тект,делаем динамическим
даем имя например - vvod
Код AS3:

vvod.text="1111"

все,в кавычках что хочем

undefined 27.06.2016 21:13

тут видимо стоит задача написать без использования текстфилдов и шрифотв.2 ТС - а зачем последний ряд у всех букв с нулями?

ZackMercury 27.06.2016 22:32

Нет, ну, вариант Hello World и правда упрощённый - нет всяких TextField, Font, и подобной мутни.
Так что, упростить ещё более можно только найдя места в шуме, которые соответствуют последовательностям в массивах и заменить массив на доставание значений из шума.(ох, я мастер прятать реализацию)

caseyryan 28.06.2016 07:31

Цитата:

а зачем последний ряд у всех букв с нулями?
Как я понял, для пробела

КорДум 28.06.2016 11:23

Одно из упрощенй: развернуть каждый одномерный массив буквы в двумерный, чтобы на выходе слово представляло собой пиксели в трехмерном массиве: [буква][x][y]. Тогда свитч заменится на более удобочитаемую и поддерживаемую конструкцию:
Код AS3:

case "H" :
    pixels.push([
        [1,1,1,1,1],
        [0,0,1,0,0],
        [1,1,1,1,1],
        [0,0,0,0,0]
    );
    break;


ZackMercury 02.07.2016 01:12

Упрощение(без использования двумерного массива)
Код AS3:

var b:ByteArray = new ByteArray();
b.writeInt(parseInt("11100111"+
                                        "01000010"+
                                        "01000010"+
                                        "01111110", 2));
b.writeInt(parseInt("01111110"+
                                        "01000010"+
                                        "01000010"+
                                        "11100111", 2));                 
 
 
function bitFor(b:ByteArray, f:Function):void
{
        var len:int = b.length;
        var cntr:int = 0;
        for(var i:int = 0; i < len; i ++)
        {
                var curr:int = b[i];
                f(cntr,0x01 & (curr >> 7)); cntr++;
                f(cntr,0x01 & (curr >> 6)); cntr++;
                f(cntr,0x01 & (curr >> 5)); cntr++;
                f(cntr,0x01 & (curr >> 4)); cntr++;
                f(cntr,0x01 & (curr >> 3)); cntr++;
                f(cntr,0x01 & (curr >> 2)); cntr++;
                f(cntr,0x01 & (curr >> 1)); cntr++;
                f(cntr,0x01 & curr); cntr++;
        }
}
 
var bmd:BitmapData = new BitmapData(8, 8, true, 0);
bitFor(b, function(i:int,bool:Boolean)
{
        bmd.setPixel32(i%8, int(i/8), bool?0xFF000000:0x00000000);
});
 
var bmp:Bitmap = new Bitmap(bmd, "auto", false);
bmp.scaleX = bmp.scaleY = 9;
addChild(bmp);

https://pp.vk.me/c630723/v630723943/...7_lpuoR5h0.jpg

Добавлено через 10 часов 35 минут
Упрощённый вариант функции прохождения по битам.
Код AS3:

function bitFor(b:ByteArray, f:Function):void
{
        var len:int = b.length;
        var cntr:int = 0;
        for(var i:int = 0; i < len; i ++)
        {
                var curr:int = b[i];
                for(var j:int = 7; j > -1; j--)
                        f(cntr,0x01 & (curr >> j)), cntr++;
        }
}



Часовой пояс GMT +4, время: 20:46.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.