71 lines
1.3 KiB
Python
71 lines
1.3 KiB
Python
|
from PIL import Image
|
||
|
|
||
|
# Palette de couleurs
|
||
|
pierre = (0, 0, 0, 255)
|
||
|
brique = (255, 0, 0, 255)
|
||
|
empty = (255, 255, 255, 255)
|
||
|
|
||
|
# Load image
|
||
|
filename = input("File name ?\n> ")
|
||
|
img = Image.open(filename)
|
||
|
print("Loaded", filename, "(size =", img.size, ")")
|
||
|
|
||
|
code = "w_current_x = " + str(img.size[0]) + ";\nw_current_y = " + str(img.size[1]) + ";\nworld_t lvl[]=\n{"
|
||
|
largeur=img.size[0]
|
||
|
hauteur=img.size[1]
|
||
|
|
||
|
# Balayage des pixels : passe pour dessiner les murs
|
||
|
pixels = img.load()
|
||
|
for x in range(0,img.size[0]):
|
||
|
code += "\n "
|
||
|
for i in range(0, img.size[1]):
|
||
|
y=img.size[1]-i-1
|
||
|
if pixels[x,y] == brique:
|
||
|
code += "{BRICK,0}, "
|
||
|
elif pixels[x,y] == pierre:
|
||
|
hexa="0x"
|
||
|
|
||
|
left=1
|
||
|
right=1
|
||
|
|
||
|
if x != 0:
|
||
|
left = (pixels[x-1,y] == pierre)
|
||
|
if x != img.size[0]-1:
|
||
|
right = (pixels[x+1,y] == pierre)
|
||
|
|
||
|
sx=0
|
||
|
if left and right:
|
||
|
sx=1
|
||
|
elif left and right==0:
|
||
|
sx=2
|
||
|
elif left==0 and right:
|
||
|
sx=0
|
||
|
hexa+= str(sx)
|
||
|
|
||
|
|
||
|
up=0 # vide par defaut
|
||
|
down=1
|
||
|
|
||
|
if y != 0:
|
||
|
up = (pixels[x,y-1] == pierre)
|
||
|
if y != img.size[1]-1:
|
||
|
down = (pixels[x,y+1] == pierre)
|
||
|
|
||
|
sy=0
|
||
|
if up and down:
|
||
|
sy=1
|
||
|
elif up and down==0:
|
||
|
sy=1
|
||
|
elif up==0 and down:
|
||
|
sy=0
|
||
|
hexa+= str(sy)
|
||
|
|
||
|
|
||
|
code += "{EARTH," + hexa + "}, "
|
||
|
elif pixels[x,y]==empty:
|
||
|
code += "{0,0}, "
|
||
|
else:
|
||
|
code += "{0,'?'}, "
|
||
|
#code += str(pixels[x,y])
|
||
|
|
||
|
print (code)
|