pixel_art.py
Created by
wperez274
Created on
April 05, 2023
7.4 KB
from kandinsky import *
from ion import *
from time import sleep
from random import *
from kandinsky import fill_rect as fill
from kandinsky import draw_string as string
enabled = False
erase = False
currentpos = [ 150 , 110 ]
currentxy = [ 15 , 11 ]
currentcolor = color ( 0 , 0 , 0 )
selectcolor = color ( 200 , 200 , 200 )
savedata = []
pixmap = []
for i in range ( 704 ):
pixmap . append ( 7 )
def main ():
global enabled
global erase
global currentpos
global currentcolor
global selectcolor
fill ( 0 , 0 , 320 , 240 , color ( 255 , 255 , 255 ))
updrect ()
cbar ()
sleep ( 0.1 )
while True :
if keydown ( KEY_LEFT ):
if currentxy [ 0 ] >= 1 and ( pixmap [ convertp ([ currentxy [ 0 ] - 1 , currentxy [ 1 ]])] != convertc ( currentcolor ) or currentcolor == color ( 255 , 255 , 255 ) or not enabled or erase ):
drawrect ( - 10 , col = currentcolor )
elif keydown ( KEY_RIGHT ):
if currentxy [ 0 ] <= 30 and ( pixmap [ convertp ([ currentxy [ 0 ] + 1 , currentxy [ 1 ]])] != convertc ( currentcolor ) or currentcolor == color ( 255 , 255 , 255 ) or not enabled or erase ):
drawrect ( 10 , col = currentcolor )
elif keydown ( KEY_UP ):
if currentxy [ 1 ] >= 1 and ( pixmap [ convertp ([ currentxy [ 0 ], currentxy [ 1 ] - 1 ])] != convertc ( currentcolor ) or currentcolor == color ( 255 , 255 , 255 ) or not enabled or erase ):
drawrect ( ydif =- 10 , col = currentcolor )
elif keydown ( KEY_DOWN ):
if currentxy [ 1 ] <= 20 and ( pixmap [ convertp ([ currentxy [ 0 ], currentxy [ 1 ] + 1 ])] != convertc ( currentcolor ) or currentcolor == color ( 255 , 255 , 255 ) or not enabled or erase ):
drawrect ( ydif = 10 , col = currentcolor )
elif keydown ( KEY_ZERO ):
currentcolor = color ( 0 , 0 , 0 )
cbar ()
updrect ()
elif keydown ( KEY_ONE ):
currentcolor = color ( 255 , 0 , 0 )
cbar ()
updrect ()
elif keydown ( KEY_TWO ):
currentcolor = color ( 255 , 255 , 0 )
cbar ()
updrect ()
elif keydown ( KEY_THREE ):
currentcolor = color ( 0 , 255 , 0 )
cbar ()
updrect ()
elif keydown ( KEY_FOUR ):
currentcolor = color ( 0 , 255 , 255 )
cbar ()
updrect ()
elif keydown ( KEY_FIVE ):
currentcolor = color ( 0 , 0 , 255 )
cbar ()
updrect ()
elif keydown ( KEY_SIX ):
currentcolor = color ( 255 , 0 , 255 )
cbar ()
updrect ()
elif keydown ( KEY_SEVEN ):
currentcolor = color ( 255 , 255 , 255 )
cbar ()
updrect ()
elif keydown ( KEY_BACKSPACE ):
erase = True
updrect ( color ( 255 , 255 , 255 ))
elif keydown ( KEY_OK ):
if enabled == True :
selectcolor = color ( 200 , 200 , 200 )
enabled = False
elif enabled == False :
enabled = True
selectcolor = color ( 150 , 50 , 200 )
drawrect ( force = True )
sleep ( 0.2 )
elif keydown ( KEY_EXE ):
fill_rect ( 0 , 0 , 320 , 240 , color ( 255 , 255 , 255 ))
for i in range ( len ( pixmap )):
pixmap [ i ] = 7
updrect ()
cbar ()
elif keydown ( KEY_VAR ):
string ( " Saving... " , 130 , 100 )
save ()
load ()
elif keydown ( KEY_TOOLBOX ):
loadsave ()
elif keydown ( KEY_DOT ):
drawrect ( force = True )
elif keydown ( KEY_LOG ):
savedisk ()
elif keydown ( KEY_LN ):
loaddisk ()
elif keydown ( KEY_ANS ):
help ()
elif keydown ( KEY_EE ):
fill ( currentpos [ 0 ], currentpos [ 1 ], 10 , 10 , convertc ( pixmap [ convertp ( currentxy )]))
fill ( 0 , 220 , 360 , 2 , color ( 255 , 255 , 255 ))
def convertc ( col ):
if col == color ( 0 , 0 , 0 ):
return 0
elif col == color ( 255 , 0 , 0 ):
return 1
elif col == color ( 255 , 255 , 0 ):
return 2
elif col == color ( 0 , 255 , 0 ):
return 3
elif col == color ( 0 , 255 , 255 ):
return 4
elif col == color ( 0 , 0 , 255 ):
return 5
elif col == color ( 255 , 0 , 255 ):
return 6
elif col == color ( 255 , 255 , 255 ):
return 7
elif col == 0 :
return color ( 0 , 0 , 0 )
elif col == 1 :
return color ( 255 , 0 , 0 )
elif col == 2 :
return color ( 255 , 255 , 0 )
elif col == 3 :
return color ( 0 , 255 , 0 )
elif col == 4 :
return color ( 0 , 255 , 255 )
elif col == 5 :
return color ( 0 , 0 , 255 )
elif col == 6 :
return color ( 255 , 0 , 255 )
elif col == 7 :
return color ( 255 , 255 , 255 )
def convertp ( pos ):
val = pos [ 0 ] + ( pos [ 1 ] * 32 )
return val
def updrect ( c = "" ):
global prevcolor
prevcolor = convertc ( pixmap [ convertp ( currentxy )])
fill ( currentpos [ 0 ], currentpos [ 1 ], 10 , 10 , selectcolor )
if c == "" :
fill ( currentpos [ 0 ] + 2 , currentpos [ 1 ] + 2 , 6 , 6 , currentcolor )
else :
fill ( currentpos [ 0 ] + 2 , currentpos [ 1 ] + 2 , 6 , 6 , c )
def drawrect ( xdif = 0 , ydif = 0 , col = "" , force = False ):
global erase
global currentpos
global currentxy
global pixmap
if col == "" :
col = currentcolor
if erase :
fill_rect ( currentpos [ 0 ], currentpos [ 1 ], 10 , 10 , color ( 255 , 255 , 255 ))
pixmap [ convertp ( currentxy )] = 7
erase = False
elif enabled or force :
fill ( currentpos [ 0 ], currentpos [ 1 ], 10 , 10 , col )
pixmap [ convertp ( currentxy )] = convertc ( col )
else :
fill ( currentpos [ 0 ], currentpos [ 1 ], 10 , 10 , prevcolor )
pixmap [ convertp ( currentxy )] = convertc ( prevcolor )
if xdif >= 1 :
currentxy [ 0 ] += 1
currentpos [ 0 ] = currentpos [ 0 ] + 10
elif xdif <=- 1 :
currentxy [ 0 ] -= 1
currentpos [ 0 ] = currentpos [ 0 ] - 10
if ydif >= 1 :
currentxy [ 1 ] += 1
currentpos [ 1 ] = currentpos [ 1 ] + 10
elif ydif <=- 1 :
currentxy [ 1 ] -= 1
currentpos [ 1 ] = currentpos [ 1 ] - 10
updrect ()
sleep ( 0.1 )
def cbar ():
fill ( 0 , 220 , 360 , 2 , currentcolor )
def save ():
global savedata
savedata = []
for i in range ( 704 ):
savedata . append ( pixmap [ i ])
def savedisk ():
string ( " Saving... " , 130 , 100 )
save ()
with open ( " save.py " , " w " ) as file :
file . write ( "" )
i = 0
for j in range ( 22 ):
for k in range ( 32 ):
file . writelines ( str ( savedata [ i ]))
i += 1
file . writelines ( " \n " )
load ()
def loaddisk ():
global savedata
with open ( " save.py " , " r " ) as file :
savedata = file . read ()
if len ( savedata ) >= 50 :
savedata = list ( savedata )
for i in savedata :
if i == " \n " :
savedata . remove ( i )
loadsave ()
def loadsave ():
global pixmap
x = 0
y = 0
for i in range ( 704 ):
fill ( x , y , 10 , 10 , convertc ( int ( savedata [ i ])))
pixmap [ i ] = int ( savedata [ i ])
if x >= 310 :
x = 0
y += 10
else :
x += 10
updrect ()
cbar ()
def load ():
x = 0
y = 0
for i in range ( len ( pixmap )):
fill ( x , y , 10 , 10 , convertc ( pixmap [ i ]))
if x >= 310 :
x = 0
y += 10
else :
x += 10
updrect ()
cbar ()
def help ( isstart = False ):
b = color ( 200 , 200 , 200 )
f = color ( 0 , 0 , 0 )
fill ( 10 , 5 , 300 , 210 , color ( 150 , 50 , 200 ))
fill ( 20 , 10 , 280 , 200 , b )
string ( " HELP " , 140 , 10 , f , b )
string ( " Arrow keys - Move " , 30 , 30 , f , b )
string ( " OK - Draw " , 30 , 50 , f , b )
string ( " 0-7 - Colors " , 30 , 70 , f , b )
string ( " . - Dot " , 30 , 90 , f , b )
string ( " Backspace - Erase " , 30 , 110 , f , b )
string ( " EXE - Clear " , 30 , 130 , f , b )
string ( " x10X - Hide pen " , 30 , 150 , f , b )
string ( " Copy/Paste - Save/Load " , 30 , 170 , f , b )
string ( " log/ln - Full S/L " , 30 , 190 , f , b )
sleep ( 0.2 )
while True :
if keydown ( KEY_OK ) or keydown ( KEY_BACKSPACE ) or keydown ( KEY_EXE ) or keydown ( KEY_DOT ) or keydown ( KEY_LEFT ) or keydown ( KEY_RIGHT ) or keydown ( KEY_UP ) or keydown ( KEY_DOWN ) or keydown ( KEY_ANS ):
if isstart :
start ()
else :
fill ( 0 , 0 , 320 , 240 , color ( 255 , 255 , 255 ))
load ()
break
def start ():
fill ( 0 , 0 , 320 , 240 , color ( 0 , 0 , 0 ))
fill ( 250 , 150 , 50 , 50 , color ( 255 , 0 , 0 ))
fill ( 255 , 140 , 10 , 10 , color ( 255 , 0 , 0 ))
fill ( 250 , 130 , 5 , 5 , color ( 255 , 0 , 0 ))
fill ( 245 , 160 , 10 , 10 , color ( 255 , 0 , 0 ))
fill ( 235 , 155 , 5 , 5 , color ( 255 , 0 , 0 ))
fill ( 230 , 130 , 3 , 3 , color ( 255 , 0 , 0 ))
string ( ' OK ' , 265 , 165 , color ( 255 , 255 , 255 ), color ( 255 , 0 , 0 ))
string ( ' Pixel Pad ' , 40 , 50 )
string ( ' By squidink7 ' , 30 , 170 )
string ( ' Help - Ans ' , 10 , 200 )
sleep ( 0.5 )
while True :
if keydown ( KEY_OK ):
main ()
break
if keydown ( KEY_ANS ):
help ( True )
else :
sleep ( 0.1 )
start ()
main ()