#Isaac Wu
from JMSSGraphics import *
from JMSSNeural import *

n = 8
side_length = 32
margin = 8
border = 16
#to identify as O or X
letter = "1"
#to debounce the enter button so one set of training data doesnt get replicated
timer = 10 
jmss = Graphics(width = 350, height = 350, title = "Xs or Os", fps = 60)

pixels = [0] * n * n
#open file to write
file = open("training_data_2", "w+")
b = 0
@jmss.mainloop
def Game():
    global pixels, timer, b
    jmss.clear()

    if jmss.isKeyDown(KEY_SPACE):
        pixels = [0] * n * n

    mouse_pos = jmss.getMousePos()
    x = (mouse_pos[0] - border) // (side_length + margin)
    y = (mouse_pos[1] - border) // (side_length + margin)

    if jmss.isKeyDown(KEY_A):
        if not(x < 0 or x >= n or y < 0 or y >= n):
            pixels[y * n + x] = 1
        
    for x in range(n):
        for y in range(n):
            jmss.drawRect(border + x * (side_length + margin), \
                          border + y * (side_length + margin), \
                          border + x * (side_length + margin) + side_length, \
                          border + y * (side_length + margin) + side_length, \
                          r = pixels[y * n + x], \
                          b = 1 - pixels[y * n + x], \
                          g = 0)

    #if enter is pressed, write the pixel data into opened file
    #provided that the enter button hasnt been pressed one second before hand
    if jmss.isKeyDown(KEY_ENTER) and timer > 1:
        timer = 0
        outputpixels = []
        for i in range(len(pixels)):
            outputpixels.append(str(pixels[i]) + ",")
        #so that code will write to the next line
        outputpixels.append(letter + "\n")
        for i in range(len(outputpixels)):
            file.write(outputpixels[i])
        #reset the pixels
        pixels = [0] * n * n
        b += 1
    #advance timer
    timer += 1/60
    jmss.drawText("Number is " + str(b), 0, 0)
    #closes file only when c is pressed
    if jmss.isKeyDown(KEY_C):
        file.close()
jmss.run()
