SHOW:
|
|
- or go back to the newest paste.
| 1 | import threading | |
| 2 | from time import sleep | |
| 3 | from random import randint | |
| 4 | import string | |
| 5 | ||
| 6 | class Bouncer (threading.Thread): | |
| 7 | def __init__ (self): | |
| 8 | threading.Thread.__init__ (self) | |
| 9 | self.max = 59 #Max width of the screen | |
| 10 | self.sleeptime = 50 #MS delay. Sets wave speed | |
| 11 | self.sleeplock = threading.Lock () | |
| 12 | self.chars = string.ascii_letters + string.digits + string.punctuation | |
| 13 | ||
| 14 | def rand_char (self): | |
| 15 | return self.chars [randint (0, len (self.chars) - 1)] | |
| 16 | ||
| 17 | def set_rate (self, nvalue): | |
| 18 | try: | |
| 19 | - | try: |
| 19 | + | nvalue = int (nvalue) |
| 20 | - | nvalue = int (nvalue) |
| 20 | + | except ValueError as e: |
| 21 | - | self.sleeptime = nvalue |
| 21 | + | nvalue = 2000 |
| 22 | - | except ValueError as e: |
| 22 | + | print ("Incorrect input type:", e)
|
| 23 | - | self.sleeptime = 2000 |
| 23 | + | |
| 24 | - | print ("Incorrect input type:", e)
|
| 24 | + | self.sleeptime = nvalue |
| 25 | - | |
| 25 | + | |
| 26 | def wave (self): | |
| 27 | pad = 0 | |
| 28 | dir = 'r' | |
| 29 | padchar = ' ' | |
| 30 | while True: | |
| 31 | if dir == 'l': | |
| 32 | pad += -1 | |
| 33 | elif dir =='r': | |
| 34 | pad += 1 | |
| 35 | ||
| 36 | if randint (0, 1000) == 0: | |
| 37 | padchar = '!' | |
| 38 | ||
| 39 | yield (padchar * pad) | |
| 40 | ||
| 41 | if pad > self.max: | |
| 42 | dir = 'l' | |
| 43 | elif pad < 0: | |
| 44 | dir = 'r' | |
| 45 | padchar = ' ' | |
| 46 | ||
| 47 | def run (self): | |
| 48 | for p in self.wave (): | |
| 49 | print (p + self.rand_char ()) | |
| 50 | with self.sleeplock: | |
| 51 | - | sleep (self.sleeptime / 1000) |
| 51 | + | sleeptime = self.sleeptime |
| 52 | sleep (sleeptime / 1000) | |
| 53 | ||
| 54 | wave = Bouncer () | |
| 55 | wave.start () | |
| 56 | ||
| 57 | while True: | |
| 58 | wave.set_rate (input ("")) |