139 lines
No EOL
3.8 KiB
Python
139 lines
No EOL
3.8 KiB
Python
#!/usr/bin/python3
|
|
#import os
|
|
from tengine.main import *#ty,tx,scene.clear,genscene,strscene,change_char,bg_char
|
|
from pynput import keyboard
|
|
from time import sleep
|
|
from physics.parabelfunc import berechneflugbahn
|
|
import ascii
|
|
import random
|
|
|
|
def on_press(key):
|
|
global key_space
|
|
if key == keyboard.Key.space:
|
|
key_space = True
|
|
|
|
|
|
def on_release(key):
|
|
global running,key_space
|
|
if key == keyboard.Key.space:
|
|
key_space = False
|
|
if key == keyboard.Key.esc:
|
|
# Stop listener
|
|
running = "finito"
|
|
|
|
key_space = None
|
|
listener = keyboard.Listener(on_press=on_press, on_release=on_release)
|
|
listener.start()
|
|
|
|
txhalb = int(tx / 2)-2
|
|
wobble_speed = 0.01
|
|
wobble_pos = 0
|
|
wobble_way = "right"
|
|
points = 0
|
|
startscreen = True
|
|
running = True
|
|
if not ty >= 11 :
|
|
running = False
|
|
print("please resize you teerminal over 11 lines")
|
|
|
|
if __name__ == "__main__" and running == True:
|
|
scene = tengine()
|
|
scene.set_block(ascii.logo,[0,int(tx/2-21)])
|
|
|
|
while startscreen == True:
|
|
scene.set_block(ascii.start_screen_text,[ty,int(tx/2-5)])
|
|
scene.print()
|
|
sleep(0.2)
|
|
clear()
|
|
if key_space == True:
|
|
while not key_space == False:
|
|
startscreen = False
|
|
|
|
scene.viereck([ty,int(tx/2-4)],11,1," ")
|
|
scene.print()
|
|
sleep(0.2)
|
|
clear()
|
|
if key_space == True:
|
|
while not key_space == False:
|
|
startscreen = False
|
|
|
|
scene.bg_char(" ")
|
|
scene.set_block(ascii.cowsay,[int(ty/2)-2,int (tx/2)-12])
|
|
cows = "🐵🐒🦍🦧🐕🐯🦝🐩🐅🐴🐎🦄🦌🐗🐂🐃🐄🐪🐫🦙🦒🐹🦘🦡🐧🕊️ 🦅🦆🦉🐍🦎🐊🦜🦚🦩🐲🐉🦕"
|
|
cowlistlength = len(cows)
|
|
cow = "#" #cows[random.randint(0, cowlistlength - 1)]
|
|
clear()
|
|
#scene[ty][tx] ### 2zeichen kuhh mach probleme
|
|
while running == True:
|
|
wobl = "-" * (tx - wobble_pos - 5)
|
|
wobr = "-" * wobble_pos
|
|
wobbl = f"{wobr}{cow}{wobl}"
|
|
scene.set_block(" " * txhalb+"↓",[ty-1,0])
|
|
scene.set_block(f"[{wobbl}]",[ty,0])
|
|
scene.print()
|
|
if wobble_pos > txhalb:
|
|
wobble_site = "left"
|
|
else:
|
|
wobble_site = "right"
|
|
|
|
if wobble_way == "right":
|
|
wobble_pos += 1
|
|
if wobble_site == "right":
|
|
points += 1
|
|
else:
|
|
points -= 1
|
|
else:
|
|
wobble_pos -= 1
|
|
if wobble_site == "right":
|
|
points -= 1
|
|
else:
|
|
points += 1
|
|
|
|
if wobble_pos >= tx - 5:
|
|
wobble_way = "left"
|
|
elif wobble_pos == 0:
|
|
wobble_way = "right"
|
|
|
|
sleep(wobble_speed)
|
|
clear()
|
|
|
|
if key_space == True:
|
|
break
|
|
points_prozent = int((points/txhalb)*100)
|
|
clear()
|
|
for a in range(int(points*2)-2):
|
|
scene.set_block("-"*a+cow,[0,0])#🐄️
|
|
scene.set_block(str(points_prozent)+"%",[1,int(tx/2-2)])
|
|
scene.print()
|
|
sleep(0.01)
|
|
clear()
|
|
scene.print()
|
|
|
|
exit()
|
|
|
|
xsteps = int((tx+2)/2) #20#xmax
|
|
xmax = tx-1 #termsize_xy[0] - 1
|
|
ymax = ty #termsize_xy[1]
|
|
ymin = 0
|
|
xmin = 0
|
|
startwinkel = 70#+180
|
|
startgeschwindigkeit = 30
|
|
starthoehe = 0#int(ty/2)
|
|
####
|
|
## needed for erasing old position
|
|
|
|
## Call the function, which calculates the coordinates)
|
|
ergebnis = berechneflugbahn(xmax, ymax, xsteps, startwinkel, startgeschwindigkeit, starthoehe, gravitation=1, xstep=2)
|
|
#
|
|
## here we draw the cow
|
|
xold = xmin
|
|
yold = ymin
|
|
x = xmin
|
|
y = xmin
|
|
for count in range(2, len(ergebnis), 2):
|
|
xold, yold = x, y
|
|
x, y = ergebnis[count], ergebnis[count + 1]
|
|
set_block(scene,"@",[x, y])
|
|
sleep(0.1)
|
|
set_block(scene,"-",[xold, yold]) #☁️
|
|
scene.print() |