Advertisement
Guest User

Untitled

a guest
Feb 8th, 2016
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.73 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. from getch import getch
  3. import sys
  4. import os
  5.  
  6. def cls():
  7.     """
  8.    Эта магия очищает экран
  9.    """
  10.     os.system("clear")
  11.  
  12. PX = 11
  13. PY = 9
  14.  
  15. def art(what):
  16.     wall = '\xe2\x96\x91'
  17.     space = '\xe2\x96\x88'
  18.     box = '\xe2\x96\x80'
  19.     place = '\xe2\x94\xbc'
  20.     box_on_place = 'o'
  21.     hero = '\xe2\x98\xbb'
  22.     if what == 'W':
  23.         return wall
  24.     elif what == 'S':
  25.         return space
  26.     elif what == 'B':
  27.         return box
  28.     elif what == 'P':
  29.         return place
  30.     elif what == 'Z':
  31.         return box_on_place
  32.     elif what == 'X':
  33.         return hero
  34.     else:
  35.         return '?'
  36.  
  37. LEVEL_SRC = """WWWWWWWWWWWWWWWWWWWW
  38. WWWWWWWWWWWWWWWWWWWW
  39. WWWWWSSSWWWWWWWWWWWW
  40. WWWWWBSSWWWWWWWWWWWW
  41. WWWWWSSBWWWWWWWWWWWW
  42. WWWSSBSBSWWWWWWWWWWW
  43. WWWSWSWWSWWWWWWWWWWW
  44. WSSSWSWWSWWWWWWSSPPW
  45. WSBSSBSSSSSSSSSSSPPW
  46. WWWWWSWWWSWSWWWSSPPW
  47. WWWWWSSSSSWWWWWWWWWW
  48. WWWWWWWWWWWWWWWWWWWW
  49. """
  50.  
  51. LEVEL = LEVEL_SRC.split("\n")
  52.  
  53.  
  54. def show():
  55.    
  56.     """
  57.    Эта функция отрисовывает картинку на экране
  58.    """
  59.     global PX, PY, LEVEL
  60.     cls()
  61.     # выведем уровень
  62.     for numy, row in enumerate(LEVEL):
  63.         outs = ""
  64.         for numx, col in enumerate(row):
  65.             if PX == numx and PY == numy:
  66.                 outs += art('X')
  67.             else:
  68.                 outs += art(col)
  69.         print outs
  70.  
  71. def move_to(x, y):
  72.     """
  73.    На вход функция принимает перемещение по оси X и Y (-1, 0 или 1)
  74.    """
  75.     global PX, PY
  76.     global LEVEL
  77.     # следующие координаты
  78.     nx = PX + x
  79.     ny = PY + y
  80.     # сначала Y - строка, потом X - столбец
  81.     if LEVEL[ny][nx] == 'S' or LEVEL[ny][nx] == 'P':
  82.         # пустая клетка или клетка для ящика
  83.         # смело переместим героя на неё
  84.         PX = nx
  85.         PY = ny
  86.     elif LEVEL[ny][nx] == 'B' or LEVEL[ny][nx] == 'Z':
  87.         # клетка с ящиком или ящиком на месте - нужно
  88.         # проверить, может ли быть ящик перемещен
  89.         # определим, в какую сторону движется персонаж
  90.         pass
  91.  
  92. def main():
  93.     global PX, PY
  94.     while True:
  95.         show()
  96.         # считываем с клавиатуры
  97.         ch = getch()
  98.         if ch == 'j':
  99.             move_to(-1, 0)
  100.         elif ch == 'l':
  101.             move_to(1, 0)
  102.         elif ch == 'i':
  103.             move_to(0, -1)
  104.         elif ch == 'k':
  105.             move_to(0, 1)
  106.         elif ch == 'q':
  107.             # выход
  108.             sys.exit(0)
  109.  
  110. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement