From e462ec5b3bed1437b58a6fa88652089dcd0c70d4 Mon Sep 17 00:00:00 2001 From: Bernard Blackham Date: Sun, 27 Jun 2004 20:50:56 +0000 Subject: [PATCH] Funkiness. --- sql-edition/servers/HorizScroll.py | 4 +- sql-edition/servers/VendServer.py | 120 +++++++++++++++++++++++++---- 2 files changed, 109 insertions(+), 15 deletions(-) diff --git a/sql-edition/servers/HorizScroll.py b/sql-edition/servers/HorizScroll.py index 69644fb..b82d664 100644 --- a/sql-edition/servers/HorizScroll.py +++ b/sql-edition/servers/HorizScroll.py @@ -13,14 +13,14 @@ class HorizScroll: if len(self.text) <= 10: return [text] - if not padding: + if padding == None: padding = len(self.text) / 2 + 1 format = "%-" + str(padding) + "." + str(padding) + "s" pad = string.replace(format % " "," ",paddingchar) padtext = self.text + pad if wraparound: - numiters = len(self.text) - 1 + numiters = len(self.text) - 10 else: numiters = len(padtext) diff --git a/sql-edition/servers/VendServer.py b/sql-edition/servers/VendServer.py index b1274da..184546c 100755 --- a/sql-edition/servers/VendServer.py +++ b/sql-edition/servers/VendServer.py @@ -11,6 +11,7 @@ from LATClient import LATClient from VendingMachine import VendingMachine from ConfigParser import ConfigParser from HorizScroll import HorizScroll +from random import random, seed GREETING = 'UCC SNACKS' PIN_LENGTH = 4 @@ -110,17 +111,100 @@ def verify_user_pin(uid, pin): def door_open_mode(vending_machine): print "Entering open door mode" - v.display("DOOR OPEN") + v.display("-FEED ME-") while True: e = v.next_event() if e == None: break (event, params) = e if event == DOOR: if params == 1: # door closed - v.display("BYE BYE!") + v.display("-YUM YUM!-") sleep(1) return +class Idler: + def __init__(self, v): + self.idle_state = 0 + self.v = v + + def put_shark(self, s, l): + if self.s[l] == ' ': + self.s[l] = s + elif self.s[l] == 'X': + self.s[l] = '*' + else: + self.s[l] = 'X' + + def next(self): + # does the next stage of a dance + self.s = [' ']*10 + shark1 = self.idle_state % 18 + if shark1 < 9: + self.put_shark('^', shark1) + else: + self.put_shark('^', 18-shark1) + + shark2 = ((self.idle_state+4) % 36)/2 + if shark2 < 9: + self.put_shark('<', shark2) + else: + self.put_shark('<', 18-shark2) + + shark3 = ((self.idle_state+7) % 54)/3 + if shark3 < 9: + self.put_shark('>', 9-shark3) + else: + self.put_shark('>', 9-(18-shark3)) + + train1 = ((self.idle_state%(18*36))) + train1_start = 122 + if train1 > train1_start and train1 < train1_start+(10*2): + for i in range(5): + ptr = i+train1-train1_start-5 + if ptr >= 0 and ptr < 10: self.s[ptr] = '#' + + train2 = ((self.idle_state%(18*36))) + train2_start = 400 + if train2 > train2_start and train2 < train2_start+(10*2): + for i in range(5): + ptr = i+train2-train2_start-5 + if ptr >= 0 and ptr < 10: self.s[9-ptr] = '#' + + train3 = ((self.idle_state%(18*36))) + train3_start = 230 + if train3 > train3_start and train3 < train3_start+(10*2): + for i in range(10): + ptr = i+train3-train3_start-10 + if ptr >= 0 and ptr < 10: self.s[ptr] = '-' + + self.v.display(string.join(self.s, '')) + self.idle_state += 1 + self.idle_state %= 18*36*54 + +def cookie(v): + seed(time()) + messages = [' WASSUP! ', 'PINK FISH ', ' SECRETS '] + choice = int(random()*len(messages)) + msg = messages[choice] + left = range(len(msg)) + for i in range(len(msg)): + if msg[i] == ' ': left.remove(i) + reveal = 1 + while left: + s = '' + for i in range(0, len(msg)): + if i in left: + if reveal == 0: + left.remove(i) + s += msg[i] + else: + s += chr(int(random()*26)+ord('A')) + else: + s += msg[i] + reveal += 1 + reveal %= 173 + v.display(s) + def center(str): LEN = 10 return ' '*((LEN-len(str))/2)+str @@ -148,7 +232,7 @@ class MessageKeeper: if len(self.scrolling_message[0][0]) > 10: (m, r, t) = self.scrolling_message[0] a = [] - exp = HorizScroll(m).expand(padding = 0, wraparound = False) + exp = HorizScroll(m).expand(padding = 0, wraparound = True) if t == None: t = 0.1 else: @@ -201,30 +285,37 @@ if __name__ == '__main__': mk = MessageKeeper(v) mk.set_message(GREETING) - logout_timeout = None + time_to_autologout = None + idler = Idler(v) + time_to_idle = None last_timeout_refresh = None while True: if USE_DB: db.handle_events() - if logout_timeout != None: - time_left = logout_timeout - time() + if time_to_autologout != None: + time_left = time_to_autologout - time() if time_left < 5 and (last_timeout_refresh is None or last_timeout_refresh > time_left): mk.set_message('LOGOUT: '+str(int(time_left))) last_timeout_refresh = int(time_left) cur_selection = '' - if logout_timeout != None and logout_timeout - time() <= 0: - logout_timeout = None + if time_to_autologout != None and time_to_autologout - time() <= 0: + time_to_autologout = None cur_user = '' cur_pin = '' cur_selection = '' mk.set_message(GREETING) - if logout_timeout and not mk.done(): logout_timeout = None - if len(cur_pin) == PIN_LENGTH and mk.done() and logout_timeout == None: + if time_to_autologout and not mk.done(): time_to_autologout = None + if cur_user == '' and time_to_autologout: time_to_autologout = None + if len(cur_pin) == PIN_LENGTH and mk.done() and time_to_autologout == None: # start autologout - logout_timeout = time() + 15 + time_to_autologout = time() + 15 + + if time_to_idle == None and cur_user == '': time_to_idle = time() + 60 + if time_to_idle != None and cur_user != '': time_to_idle = None + if time_to_idle is not None and time() > time_to_idle: idler.next() mk.update_display() @@ -306,10 +397,11 @@ if __name__ == '__main__': continue cur_selection += chr(key + ord('0')) mk.set_message('SELECT: '+cur_selection) + time_to_autologout = None elif len(cur_selection) == 1: if key == 11: cur_selection = '' - logout_timeout = None + time_to_autologout = None scroll_options(username, mk) continue else: @@ -319,6 +411,8 @@ if __name__ == '__main__': if cur_selection == '55': v.display('GOT DOOR?') os.system('su - "%s" -c "dispense door"'%username) + elif cur_selection == '91': + cookie(v) elif cur_selection == '99': scroll_options(username, mk) cur_selection = '' @@ -333,4 +427,4 @@ if __name__ == '__main__': v.display('THANK YOU') sleep(0.5) cur_selection = '' - logout_timeout = time() + 10 + time_to_autologout = time() + 10 -- 2.20.1