"""
    Basic Breakout
    Rory Solomon, solomonr@newschool.edu

    For Code Toolkit: Python
    Eugene Lang College, Fall 2020
    
    If you lose, press SPACE to continue
"""

row1Bricks = []
row2Bricks = []
row3Bricks = []

def setup():
    size(800, 600)

    global ballX, ballY, ballXDirection, ballYDirection
    global paddleX
  
    ballX = 400
    ballY = 300

    ballXDirection = 5
    ballYDirection = -5

    paddleX = 400

    i = 0
    while i < 40:
        row1Bricks.append(True)
        row2Bricks.append(True)
        row3Bricks.append(True)
        i = i + 1

def draw():
    global ballX, ballY, ballXDirection, ballYDirection
    global paddleX
  
    background(25)

    # Draw bricks
    stroke(100)
    strokeWeight(1)
    rectMode(CORNER)
    i = 0
    while i < 40:
        fill(255, 38, 0);
        if row1Bricks[i]:
            rect(i * 20, 50, 18, 10)

        fill(255, 141, 0);
        if row2Bricks[i]:
            rect(i * 20, 70, 18, 10)

        fill(255, 230, 0);
        if row3Bricks[i]:
            rect(i * 20, 90, 18, 10)
      
        i = i + 1

    # Draw paddle
    fill(0, 244, 255)
    rectMode(CENTER)
    rect(paddleX, height - 50, 200, 10)

    if keyPressed:
        if keyCode == LEFT:
            paddleX = paddleX - 10
      
        if keyCode == RIGHT:
            paddleX = paddleX + 10

    # Draw ball
    fill(150)
    noStroke()
    ellipse(ballX, ballY, 10, 10)

    # Move ball
    ballX = ballX + ballXDirection
    ballY = ballY + ballYDirection

    # Check collion of ball and paddle
    if ballX > paddleX - 100 and ballX < paddleX + 100 / 2 and ballY > height - 55 and ballY < height - 45:
      
        ballYDirection = ballYDirection * -1
        ballXDirection = random(-5, 5)

    # Check collision of ball with walls
    if ballX > width or ballX < 0:
        ballXDirection = ballXDirection * -1
      
    if ballY < 0:
        ballYDirection = ballYDirection * -1

    # Check brick collisions
    i = 0
    while i < 40:

        if ballX > i * 20 and ballX < i * 20 + 20 and ballY > 50 and ballY < 60 and row1Bricks[i]:
            row1Brick[i] = False
            ballYDirection = ballYDirection * -1

        if ballX > i*20 and ballX < i*20+20 and ballY > 70 and ballY < 80 and row2Bricks[i]:
            row2Bricks[i] = False
            ballYDirection = ballYDirection * -1

        if ballX > i*20 and ballX < i*20+20 and ballY > 90 and ballY < 100 and row3Bricks[i]:
            row3Bricks[i] = False
            ballYDirection = ballYDirection * -1

        i = i + 1

def keyPressed():
    global ballX, ballY, ballYDirection
    print ("in here")
    if key == ' ':
        ballX = 400
        ballY = 300
        ballYDirection = -5