Код для создания предельно сжатых уровней. На Блице.
© Undead!!!
Первая версия - для уровня 64*64
Здесь нужен графический файл лабиринта, это программа-шифровальщик монохромного изображения.
Для теста возьмите мой файлег из прошлых версий M.A.Z.E
Очень скоро, вот-вот выложу новую версию. Осталось доделать совсем немного.
Код
Graphics 512,256,16,2
a=LoadImage("ter1.bmp")
DrawImage a,0,0
file=WriteFile("lvl1.AK")
WriteByte(file,4)
x=0
y=0
g=0
x2=100
y2=0
For z=0 To 64*8
GetColor(x,y)
If ColorRed()=255 Then g=g+128
x=x+1
GetColor(x,y)
If ColorRed()=255 Then g=g+64
x=x+1
GetColor(x,y)
If ColorRed()=255 Then g=g+32
x=x+1
GetColor(x,y)
If ColorRed()=255 Then g=g+16
x=x+1
GetColor(x,y)
If ColorRed()=255 Then g=g+8
x=x+1
GetColor(x,y)
If ColorRed()=255 Then g=g+4
x=x+1
GetColor(x,y)
If ColorRed()=255 Then g=g+2
x=x+1
GetColor(x,y)
If ColorRed()=255 Then g=g+1
x=x+1
If x=64 Then
x=0
y=y+1
EndIf
Color 0,g,g
WriteByte(file,g)
g=0
Plot x2,y2
x2=x2+1
If x2=108 Then
x2=100
y2=y2+1
EndIf
Next
CloseFile file
file2=ReadFile("lvl1.AK")
size=ReadByte(file2)
For y1=0 To size*16-1
For x1=0 To size*2-1
w=ReadByte(file2)
Color w,w,0
Plot x1+110,y1
Color 255,255,255
If w=>128 Then
w=w-128
Plot x1*8+160,y1
EndIf
If w=>64 Then
w=w-64
Plot x1*8+161,y1
EndIf
If w=>32 Then
w=w-32
Plot x1*8+162,y1
EndIf
If w=>16 Then
w=w-16
Plot x1*8+163,y1
EndIf
If w=>8 Then
w=w-8
Plot x1*8+164,y1
EndIf
If w=>4 Then
w=w-4
Plot x1*8+165,y1
EndIf
If w=>2 Then
w=w-2
Plot x1*8+166,y1
EndIf
If w=>1 Then
w=w-1
Plot x1*8+167,y1
EndIf
Next
Next
WaitKey()
End
Извините за корявость.
Есть какие-нибудь рацпредложения по сортировке, чтобы было ещё более просто и эффективно сжать файл?
Формат "AK" - это мой собственный, личный формат, с АКА не путать.
Добавлено ([mergetime]1205428077[/mergetime]):
(код не был оптимизирован, написан только что)