traktor/traktor.py

93 lines
2.3 KiB
Python
Raw Normal View History

2019-04-29 03:49:45 +02:00
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")