#!/usr/bin/python3 # -*- coding: utf-8 -*- """ Ein hilfloser Versuch, Tasteneingaben abzufragen. Man kann auch in Python C schreiben. Ein Thread wär evtl besser. """ import os, sys, termios, tty, time, random from math import sin, cos esc = chr(27) bracket = chr(91) c_up = chr(65) c_down = chr(66) c_right = chr(67) c_left = chr(68) clear = "'\x1b[2J\x1b[H" car = "🚜" replstring = " " fd = sys.stdin.fileno() remember_attributes = termios.tcgetattr(fd) termsize_xy = os.get_terminal_size() xmax = termsize_xy[0] - 1 ymax = termsize_xy[1] x, xold, y, yold = xmax / 2, xmax / 2, ymax - 1, ymax - 1 ymin = 1 xmin = 1 street = "# #" streetlen = len(street) pi = 3.1416 deg2rad = pi / 180 curvelen = 40 toggle = 1 curvemax = random.randint(len(street) + 1, xmax - len(street)) taste = "" z = 90 x = int((sin(curvelen * deg2rad) * cos(xmax - curvelen * deg2rad) + 1) * (xmax / 2)) def curpos(x, y): print("\033[%d;%dH" % (y, x), end="", flush=True) def cursoroff(): sys.stdout.write("\033[?25l") def cursoron(): sys.stdout.write("\033[?25h") def getkey(): getkey_buffer = 1 tty.setraw(sys.stdin.fileno()) taste = sys.stdin.read(getkey_buffer) termios.tcsetattr(fd, termios.TCSADRAIN, remember_attributes) return taste print(clear) cursoroff() while taste != "x" and taste != "q": taste = getkey() if taste == esc: taste = getkey() ########## Print car if taste == bracket: taste = getkey() yold = y xold = x if taste == c_right: if x < xmax and y < ymax: x += 1 elif taste == c_left: if x >= xmin: x -= 1 curpos(x, y) print(car, end="") curpos(xold, yold - 1) print(replstring, end="") ####### print street curvelen = int(curvelen + toggle) % 360 if curvelen <= 40 or curvelen == curvemax: curvemax = random.randint(len(street) * 3, 180) z += toggle toggle *= -1 curvelen = int(curvelen + toggle) % 360 streetpos = int((sin(curvelen * deg2rad) * cos(xmax - curvelen * deg2rad) + 1) * (xmax / 2)) curvelen += toggle % 360 curpos(streetpos, ymax) print(street) cursoron() sys.exit("Schulz nun.")