MiniDemo: Классическая бегучка

Pixilang по русски
goglus
Posts: 122
Joined: Tue Dec 04, 2007 4:19 pm
Contact:

Re: MiniDemo: Классическая бегучка

Post by goglus »

ну чтобы все в текстовом виде иметь - всетаки подгружаемые пикчи это не чистый вариант всеже можно в коде делать
User avatar
Al_Rado
Posts: 239
Joined: Tue Dec 04, 2007 2:33 pm
Location: Krasnodar
Contact:

Re: MiniDemo: Классическая бегучка

Post by Al_Rado »

Goglus, если есть мысли как это реализовать - подскажи... Или ты имеешь ввиду сохранить 256 файлов .txt а затем все ручками слепить?
ВекторКодПиксельПолигон - ВотЧтоЯЛюблю!
User avatar
NightRadio
Site Admin
Posts: 3944
Joined: Fri Jan 23, 2004 12:28 am
Location: Ekaterinburg. Russia
Contact:

Re: MiniDemo: Классическая бегучка

Post by NightRadio »

Я так понимаю, речь о конвертере TTF->TXT. Кормишь ему файл реального шрифта, а он его преобразовывает в один TXT файл, в котором лежит многокадровый пикси.
Утилита может оказаться полезной, но только лишь в том случае, если её кто-то напишет :)
User avatar
Al_Rado
Posts: 239
Joined: Tue Dec 04, 2007 2:33 pm
Location: Krasnodar
Contact:

Re: MiniDemo: Классическая бегучка

Post by Al_Rado »

Да, в принципе, достаточно прожки-конвертера Gif(аним)-txt(много кадров)... Т.е. один кадр - один .txt понятно как (save_screen)... а вот также, но много кадров?
ВекторКодПиксельПолигон - ВотЧтоЯЛюблю!
goglus
Posts: 122
Joined: Tue Dec 04, 2007 4:19 pm
Contact:

Re: MiniDemo: Классическая бегучка

Post by goglus »

или аниматор, где сейв в тхт покадрово
User avatar
Al_Rado
Posts: 239
Joined: Tue Dec 04, 2007 2:33 pm
Location: Krasnodar
Contact:

Пробовал Gif anim -> Txt anim

Post by Al_Rado »

Вот, пробовал перегнать многокадровую Gif-ку в файлы .txt, а затем запихнуть все в один файл .txt - не выходит... Одни и теже цвета в каждом файле определяются по-разному :(

//Al_Rado// Сохраняю в .ТХТ
Q=load_pixi( "SLIX_F1_.gif" )
frames=get_pixi_frames ( Q )
xsize = get_pixi_xsize( Q )
ysize = get_pixi_ysize( Q )
f=0
aa:
clear(BLACK)
set_screen( Q, f )
frame(0)
save_screen( "image$f.txt",-(xsize/2),-(ysize/2),xsize,ysize )
f + 1
if f < frames { go aa }

Получаю в одном кадре
... O=#10214A ...
img="
........................
........................
........................
........................
........................
.RRR....................
.FFR....................
JJJROOO.................
JJJROOOO.JJJ............
JJJROFJJJJJTl......OO...
JJJROJJJJJJTOFF...OOOO..
.JJFFFFJJJJFFOJJJ.OOOO..
..OOOFFFFFFFFFJJJJJJO...
.OOOOORRRFFFFFJJJJJJJJ..
.ORROORRRRRRRR....JJJJJ.
.OccOO...RRRRR...OO.....
..OOO...........OOOO....
................OccO....
.................OO.....
........................
"
В следующем:
... O=#09132A ... Q=#10214A ..
img="
........................
........................
........................
........................
...VV...................
...EEV..................
BBEEEVQQQ...............
BBBEVVQQQQ..............
BBBVVVQBBBBB............
BBBVVBBBBBBTl...........
.BBVEEBBBBBTQEEE....QQ..
.QQQEEEEBBBEEQBB...QQQQ.
QQQQQVVEEEEEEEBBBB.QQQQ.
QVVQQVVVVVVEEBBBBBBBQQ..
QcVQQ..VVVVVVV.BBBBBB...
.QQQ.......VV...QQBBBB..
...............QQQQ.....
...............QcVQ.....
................QQ......
........................
"
Т.е. значения цвета такие-же, а вот имя переменной уже другое... Что здесь можно придумать?
ВекторКодПиксельПолигон - ВотЧтоЯЛюблю!
User avatar
NightRadio
Site Admin
Posts: 3944
Joined: Fri Jan 23, 2004 12:28 am
Location: Ekaterinburg. Russia
Contact:

Re: MiniDemo: Классическая бегучка

Post by NightRadio »

Боюсь, пока тут нечего посоветовать :) Цветовую палитру определяет нейросеть, которая в особом порядке распределяет самые используемые цвета в кадре. То есть, для каждого кадра такая палитра будет своя - оптимальная. Можно было бы конечно сделать расчет палитры для всех кадров одновременно - но это, мне кажется, слишком накладно получится и тормознуто.
Тут два варианта:
1) Экспортить каждый кадр в отдельный пикси, а потом с помощью несложной программки соединить их воедино.
2) Использовать команды fopen, fclose, fput и экспортировать в TXT-файл своими силами :)
User avatar
Al_Rado
Posts: 239
Joined: Tue Dec 04, 2007 2:33 pm
Location: Krasnodar
Contact:

Gif anim -> Txt anim

Post by Al_Rado »

Пришел к выводу, что пока нет смысла хранить многокадровые Pixi в текстовом формате (и шрифты содержащие несколько цветов, и спрайты). Gif-ки проще делать да и нагляднее. Опять же, не засоряют текст основной программы, лежат себе в tar-архивчике, никому не мешают :)
ВекторКодПиксельПолигон - ВотЧтоЯЛюблю!
User avatar
NightRadio
Site Admin
Posts: 3944
Joined: Fri Jan 23, 2004 12:28 am
Location: Ekaterinburg. Russia
Contact:

Re: MiniDemo: Классическая бегучка

Post by NightRadio »

Тоже верно :)
User avatar
Al_Rado
Posts: 239
Joined: Tue Dec 04, 2007 2:33 pm
Location: Krasnodar
Contact:

MiniDemo: Классическая бегучка v0.4

Post by Al_Rado »

// Al_Rado // MiniDemo "Бегучка" v.04 // Новый алгоритм бегущей стоки. Шрифты тут http://slil.ru/25327958
resize_pixi (0,320,240)
start_timer(0)
set_disk0( "Beg_data.tar" )
font1=load_pixi("0:/font32х32_Arial.gif")
font2=load_pixi("0:/font16х16_TimesNewRoman.gif")
font3=load_pixi("0:/font32х32_Presentum.gif")
font4=load_pixi("0:/font32х32_Stylo.gif")

yfont1=get_pixi_ysize(font1)+2
yfont2=get_pixi_ysize(font2)+2
yfont3=get_pixi_ysize(font3)+2
yfont4=get_pixi_ysize(font4)+2

x1=-get_pixi_xsize(0)/2
y1=-get_pixi_ysize(0)/2
x2=x1 y2=y1+36
x3=(x1+50)*8 y3=y2+36
x4=(x1-20)*8 y4=y3+36

xx=x1

i=0
text=" Привет! Вот вам и HELLO WORLD! Pixilang - пиксельно-ориентированный язык программирования. "
PPP=get_pixi_xsize(0)
stroka_1=new_pixi(1,yfont1,PPP)
stroka_2=new_pixi(1,yfont2,PPP)
stroka_3=new_pixi(1,yfont3,PPP)
stroka_4=new_pixi(1,yfont4,PPP)
clear(ORANGE)

start:
x1=x1-1 x2=x1 x3=x3-6 x4=x4-4
pixi_font (font1)
print(text,x1+2,y1+2,GREEN)
print(text,x1,y1,SNEG)

pixi_font (font2)
print(text,x2+2,y2+2,BLACK)
print(text,x2,y2,YELLOW)

pixi_font (font3)
print(text,x3/8+2,y3+2,RED)
print(text,x3/8,y3,SNEG)

pixi_font (font4)
print(text,x4/8+2,y4+2,BLUE)
print(text,x4/8,y4,RED)

p=0 while (p<PPP)
{
n=y1 while (n<(y1+yfont1))
{
stroka_1 = get_dot (xx+p,n)
i+1
n+1
}
p+1
}
i=0

p=0 while (p<PPP)
{
n=y2 while (n<(y2+yfont2))
{
stroka_2 = get_dot (xx+p,n)
i+1
n+1
}
p+1
}
i=0

p=0 while (p<PPP)
{
n=y3 while (n<(y3+yfont3))
{
stroka_3 = get_dot (xx+p,n)
i+1
n+1
}
p+1
}
i=0

p=0 while (p<PPP)
{
n=y4 while (n<(y4+yfont4))
{
stroka_4 = get_dot (xx+p,n)
i+1
n+1
}
p+1
}
i=0

clear(ORANGE)

pixi_transp (stroka_1,1,ORANGE)
pixi_transp (stroka_2,1,ORANGE)
pixi_transp (stroka_3,1,ORANGE)
pixi_transp (stroka_4,1,ORANGE)

p=0 while (p<PPP)
{
fpixi(stroka_1,-get_pixi_xsize(0)/2+p,(cos((get_timer(0)-3*p)/6)/3+128)/4-80,1,1,p)
fpixi(stroka_2,-get_pixi_xsize(0)/2+p,(cos((get_timer(0)-8*p)/4)/8+64)/6,1,1,p)
fpixi(stroka_3,-get_pixi_xsize(0)/2+p,(cos((get_timer(0)-8*p)/6)/4+64)/6+55,1,1,p)
fpixi(stroka_4,-get_pixi_xsize(0)/2+p,(cos((get_timer(0)-4*p)/2)/8+64)/6+85,1,1,p)
p+1
}

frame (30)
clear(ORANGE)
goto start
ВекторКодПиксельПолигон - ВотЧтоЯЛюблю!
User avatar
Al_Rado
Posts: 239
Joined: Tue Dec 04, 2007 2:33 pm
Location: Krasnodar
Contact:

MiniDemo: Классическая бегучка v.05

Post by Al_Rado »

// Al_Rado // MiniDemo "Бегучка" v.05 // Прикрутил шейдеры, получилась рождественская бегучка :) Также, укоротил код. Данные тут http://slil.ru/25332954
resize_pixi (0,320,240)
start_timer(0)
set_disk0( "Beg_data.tar" )
font1=load_pixi("0:/font32х32_Arial.gif")
font2=load_pixi("0:/font16х16_TimesNewRoman.gif")
font3=load_pixi("0:/font32х32_Presentum.gif")
font4=load_pixi("0:/font32х32_Stylo.gif")
zima=load_pixi("0:/zima.jpg")

yfont=get_pixi_ysize(font1)+2

x1=-get_pixi_xsize(0)/2
y1=-get_pixi_ysize(0)/2
x2=x1 y2=y1+36
x3=(x1+50)*8 y3=y2+36
x4=(x1-20)*8 y4=y3+36
xx=x1
i=0
text=" Привет! HELLO WORLD! Всех с наступившими зимними праздниками! Но впереди еще Старый Новый Год!!! :)"
PPP=get_pixi_xsize(0)
stroka_1=new_pixi(1,yfont,PPP)
stroka_2=new_pixi(1,yfont,PPP)
stroka_3=new_pixi(1,yfont,PPP)
stroka_4=new_pixi(1,yfont,PPP)
clear(ORANGE)

start:
x1=x1-1 x2=x1 x3=x3-6 x4=x4-4

pixi_font (font1)
print(text,x1+2,y1+2,BLACK)
print(text,x1,y1,SNEG)

pixi_font (font2)
print(text,x2+2,y2+2,BLACK)
print(text,x2,y2,YELLOW)

pixi_font (font3)
print(text,x3/8+2,y3+2,BLUE)
print(text,x3/8,y3,YELLOW)

pixi_font (font4)
print(text,x4/8+2,y4+2,BLUE)
print(text,x4/8,y4,RED)

p=0 while (p<PPP)
{
n=0 while (n<yfont)
{
stroka_1 = get_dot (xx+p,y1+n)
stroka_2 = get_dot (xx+p,y2+n)
stroka_3 = get_dot (xx+p,y3+n)
stroka_4 = get_dot (xx+p,y4+n)
i+1
n+1
}
p+1
}
i=0

pixi_transp (stroka_1,1,ORANGE)
pixi_transp (stroka_2,1,ORANGE)
pixi_transp (stroka_3,1,ORANGE)
pixi_transp (stroka_4,1,ORANGE)

pixi( zima, 0, 0, 1, 0 )

p=0 while (p<PPP)
{
t = get_timer( 0 )
transp( 256 )
pixel_shader( MY_PIXEL_SHADER_GLASS )
fpixi(stroka_1,-get_pixi_xsize(0)/2+p,(cos((get_timer(0)-3*p)/6)/3+128)/4+40,1,1,p)
fpixi(stroka_2,-get_pixi_xsize(0)/2+p,(cos((get_timer(0)-8*p)/4)/8+64)/6-10,1,1,p)
fpixi(stroka_3,-get_pixi_xsize(0)/2+p,(cos((get_timer(0)-8*p)/6)/4+64)/6-80,1,1,p)
fpixi(stroka_4,-get_pixi_xsize(0)/2+p,(cos((get_timer(0)-4*p)/2)/8+64)/6+85,1,1,p)
transp( 64 )
pixel_shader( -1 )
fpixi(stroka_1,-get_pixi_xsize(0)/2+p,(cos((get_timer(0)-3*p)/6)/3+128)/4+40,1,1,p)
fpixi(stroka_2,-get_pixi_xsize(0)/2+p,(cos((get_timer(0)-8*p)/4)/8+64)/6-10,1,1,p)
fpixi(stroka_3,-get_pixi_xsize(0)/2+p,(cos((get_timer(0)-8*p)/6)/4+64)/6-80,1,1,p)
fpixi(stroka_4,-get_pixi_xsize(0)/2+p,(cos((get_timer(0)-4*p)/2)/8+64)/6+85,1,1,p)
p+1
}

transp( 256 )
frame (30)
clear
goto start

MY_PIXEL_SHADER_GLASS:
v = get_red( PS_T[ PS_TP - 1 ] ) - get_red( PS_T[ PS_TP + 1 ] )
PS_R = get_blend( scr0[ PS_P + get_red( PS_T[ PS_TP ] ) / 8 ], WHITE, v )
ret
ВекторКодПиксельПолигон - ВотЧтоЯЛюблю!
User avatar
NightRadio
Site Admin
Posts: 3944
Joined: Fri Jan 23, 2004 12:28 am
Location: Ekaterinburg. Russia
Contact:

Re: MiniDemo: Классическая бегучка

Post by NightRadio »

красота :)
User avatar
Al_Rado
Posts: 239
Joined: Tue Dec 04, 2007 2:33 pm
Location: Krasnodar
Contact:

Re: MiniDemo: Классическая бегучка

Post by Al_Rado »

Спасибо, я вот думаю киким бы боком все это на видео наложить :) Возможно через градации серого и нод "Displace" в Blendere =)
ВекторКодПиксельПолигон - ВотЧтоЯЛюблю!
User avatar
NightRadio
Site Admin
Posts: 3944
Joined: Fri Jan 23, 2004 12:28 am
Location: Ekaterinburg. Russia
Contact:

Re: MiniDemo: Классическая бегучка

Post by NightRadio »

Наверное, только так =)
Пока что Пикси не поддерживает входной видео-поток. Но какие-то такие мысли всеже есть на будущее =)
Post Reply