Friday, March 11, 2022

Sliding game in Python

from random import shuffle, choice


L  = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, '']]

LL = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, '']]

arrow_keys = ["I", "L", "K", "J"]


def distribute():

  for ctr in range(1000):

    for i in range(4):

      flag = 0

      for j in range(4):

        if L[i][j] == '':

          r, c = i, j

          flag = 1

          break

      if flag == 1:

        break

    

    key = choice(arrow_keys)


    if key == 'I' and r != 3:

      L[r+1][c], L[r][c] = L[r][c], L[r+1][c]

    elif key == 'L' and c != 0:

      L[r][c-1], L[r][c] = L[r][c], L[r][c-1]

    elif key == 'K' and r != 0:

      L[r][c], L[r-1][c] = L[r-1][c], L[r][c]

    elif key == 'J' and c != 3:

      L[r][c+1], L[r][c] = L[r][c], L[r][c+1]


def display():

  print("/===========================\\")

  print("|      |      |      |      |")

  print("|  %2s  |  %2s  |  %2s  |  %2s  |" % (L[0][0], L[0][1], L[0][2], L[0][3]))

  print("|      |      |      |      |")

  print("|======|======|======|======|")

  print("|      |      |      |      |")

  print("|  %2s  |  %2s  |  %2s  |  %2s  |" % (L[1][0], L[1][1], L[1][2], L[1][3]))

  print("|      |      |      |      |")

  print("|======|======|======|======|")

  print("|      |      |      |      |")

  print("|  %2s  |  %2s  |  %2s  |  %2s  |" % (L[2][0], L[2][1], L[2][2], L[2][3]))

  print("|      |      |      |      |")

  print("|======|======|======|======|")

  print("|      |      |      |      |")

  print("|  %2s  |  %2s  |  %2s  |  %2s  |" % (L[3][0], L[3][1], L[3][2], L[3][3]))

  print("|      |      |      |      |")

  print("\===========================/")


def play():

  while LL != L:

    r, c = 0, 0

  

    for i in range(4):

      flag = 0

      for j in range(4):

        if L[i][j] == '':

          r, c = i, j

          flag = 1

          break

      if flag == 1:

        break


    key = input().upper()


    if key == 'I' and r != 3:

      L[r+1][c], L[r][c] = L[r][c], L[r+1][c]

    elif key == 'L' and c != 0:

      L[r][c-1], L[r][c] = L[r][c], L[r][c-1]

    elif key == 'K' and r != 0:

      L[r][c], L[r-1][c] = L[r-1][c], L[r][c]

    elif key == 'J' and c != 3:

      L[r][c+1], L[r][c] = L[r][c], L[r][c+1]

    

    display()

  print("You won!!")


distribute()

display()

play()


No comments:

Post a Comment