import string import sys import os import time import random from Tomato import Tomato from Cucumber import Cucumber from Plant import Plant from Point import Point from Trac import Trac string.ascii_letters = 'oOpPx' string.ascii_numbers = '01' OKGREEN = '\033[92m' OKBLUE = '\033[94m' OKRED = '\033[91m' ENDC = '\033[0m' def initialize_field(): field = [] for i in range(11): row = [] for j in range(7): if i == 0 or i == 10 or j == 0 \ or j == 3 or j == 6: # row.append((Point((i, j)), None)) row.append(None) elif i < 3: # row.append((Point((i, j)), Cucumber())) row.append(Cucumber()) else: # row.append((Point((i, j)), Tomato())) row.append(Tomato()) field.append(row) return field def print_field(field, tractor): sys.stdout.write(OKBLUE) sys.stdout.write("$") sys.stdout.write(" ") sys.stdout.write("\n") for x, row in enumerate(field): for y, i in enumerate(row): if not i: if tractor.get_position().get_x() == x \ and tractor.get_position().get_y() == y: sys.stdout.write(OKBLUE) sys.stdout.write(tractor.get_symbol()) sys.stdout.write(" ") else: sys.stdout.write(" ") else: symbol = i.get_symbol() if symbol[1] == "green": sys.stdout.write(OKGREEN) sys.stdout.write(symbol[0]) sys.stdout.write(" ") else: sys.stdout.write(OKRED) sys.stdout.write(symbol[0]) sys.stdout.write(" ") sys.stdout.write("\n") def update_state(field): for row in field: for i in row: if i: i.tick(1) if __name__ == "__main__": field = initialize_field() tractor = Trac('S', Point((0,0))) sys.stdout.write(ENDC) i = 40 while i>=0: if sys.platform == "win32": os.system("cls") else: os.system("clear") print_field(field, tractor) update_state(field) time.sleep(0.4) i = i-1 print("The end of time")