Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- class Kusok:
- def __init__(self, coords, next = None, prev = None):
- self.next = next
- self.prev = prev
- self.coords = coords
- self.ishead = False
- self.isend = False
- def create_head(zmeya, direction):
- coords_new_head = [zmeya.coords[0] + direction[0], zmeya.coords[1] + direction[1]]
- new_head = Kusok(coords_new_head, next = zmeya)
- zmeya.ishead = False
- zmeya.prev = new_head
- new_head.ishead = True
- return new_head
- def delete_end(zmeya):
- hvost = zmeya
- while hvost.isend != True:
- hvost = hvost.next
- hvost.prev.isend = True
- hvost.prev.next = None
- return zmeya
- def create_pole():
- pole = [[0]*12 for x in range(12)]
- for i in range(len(pole)):
- for j in range(len(pole)):
- if i == 0 or j == 0 or i == len(pole)-1 or j == len(pole) -1:
- pole[i][j] = 1
- return pole
- def print_pole (pole):
- for i in range(len(pole)):
- print(*pole[i])
- def draw(zmeya, yabloko):
- pole = create_pole()
- pole[yabloko[0]][yabloko[1]] = "X"
- pole[zmeya.coords[0]][zmeya.coords[1]] = "G"
- zmeya = zmeya.next
- while zmeya.isend != True:
- x = zmeya.coords[0]
- y = zmeya.coords[1]
- pole[x][y] = "="
- zmeya = zmeya.next
- x = zmeya.coords[0]
- y = zmeya.coords[1]
- pole[x][y] = "="
- print_pole(pole)
- return pole
- def possible_move(zmeya, pole, direction):
- x = zmeya.coords[0] + direction[0]
- y = zmeya.coords[1] + direction[1]
- if pole[x][y]== 0 or pole[x][y]== "X":
- return True
- else:
- return False
- def move(pole, zmeya, direction, yabloko):
- if possible_move(zmeya, pole, direction):
- zmeya = create_head(zmeya, direction)
- if zmeya.coords == yabloko:
- yabloko = create_yabloko(zmeya, pole)
- else:
- zmeya = delete_end(zmeya)
- flag = 0
- else:
- flag = 1
- return zmeya, yabloko, flag
- def create_yabloko(zmeya, pole):
- while pole[yabloko[0]][yabloko[1]] != 0:
- yabloko[0] = random.randint(0,len(pole)-1)
- yabloko[1] = random.randint(0,len(pole)-1)
- print([yabloko[0],yabloko[1]])
- return [yabloko[0],yabloko[1]]
- zmeya = Kusok([5,5])
- zmeya.ishead = True
- hvost = Kusok([5,6])
- hvost.isend = True
- zmeya.next = hvost
- hvost.prev = zmeya
- yabloko = [0,0]
- pole = create_pole()
- yabloko = create_yabloko(zmeya, pole)
- pole = draw(zmeya, yabloko)
- inp = input()
- while inp != "end":
- flag = 0
- directions = {"w":[-1, 0], "d":[0, 1], "s":[1, 0], "a": [0, -1]}
- inp = directions[inp]
- zmeya, yabloko, flag = move(pole, zmeya, inp, yabloko)
- pole = draw(zmeya, yabloko)
- if flag == 1:
- print("LOL, u are dead")
- inp = "end"
- else:
- inp = input()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement