bonk/scrollup.py
2023-09-30 17:31:49 +02:00

100 lines
2.3 KiB
Python
Executable file

#!/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.")