Compare commits

...

5 Commits

Author SHA1 Message Date
96f03a3119 Prevent breaking long words on generic labels 2023-12-06 18:56:09 -07:00
a595caac18 Add Sudoku game 2023-11-14 17:47:13 -07:00
cf21619324 Ditch gamez spelling 2023-11-13 16:29:37 -07:00
48a24e1bd4 Add Hitchhiker's game 2023-11-12 18:50:44 -07:00
8b854fa715 Add 2048 game 2023-11-12 16:42:29 -07:00
2 changed files with 49 additions and 11 deletions

View File

@ -2,7 +2,7 @@ from PIL import Image, ImageEnhance, ImageFont, ImageDraw
import textwrap
text = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'
text = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.'
text = 'Extension cables'
MARGIN = 50
MAX_W, MAX_H, PAD = 1285 - (MARGIN*2), 635 - (MARGIN*2), 5
@ -17,7 +17,7 @@ def fit_text(text, font_size):
for cols in range(100, 1, -4):
print('trying size', font_size, 'cols', cols)
paragraph = textwrap.wrap(text, width=cols)
paragraph = textwrap.wrap(text, width=cols, break_long_words=False)
total_h = -PAD
total_w = 0

56
main.py
View File

@ -47,9 +47,18 @@ TIMEZONE_CALGARY = pytz.timezone('America/Edmonton')
NETHACK_LOCATION = '/usr/games/nethack'
MORIA_LOCATION = '/usr/games/moria'
_2048_LOCATION = '/home/pi/2048-cli/2048'
FROTZ_LOCATION = '/usr/games/frotz'
HITCHHIKERS_LOCATION = '/home/pi/frotz/hhgg.z3'
SUDOKU_LOCATION = '/usr/games/nudoku'
HAS_NETHACK = os.path.isfile(NETHACK_LOCATION)
HAS_MORIA = os.path.isfile(MORIA_LOCATION)
HAS_2048 = os.path.isfile(_2048_LOCATION)
HAS_FROTZ = os.path.isfile(FROTZ_LOCATION)
HAS_HITCHHIKERS = os.path.isfile(HITCHHIKERS_LOCATION)
HAS_SUDOKU = os.path.isfile(SUDOKU_LOCATION)
location = os.path.dirname(os.path.realpath(__file__))
@ -328,7 +337,7 @@ def print_generic_label(text):
font = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf', font_size)
for cols in range(100, 1, -4):
paragraph = textwrap.wrap(text, width=cols)
paragraph = textwrap.wrap(text, width=cols, break_long_words=False)
total_h = -PAD
total_w = 0
@ -555,7 +564,7 @@ while True:
stdscr.addstr(11, menupos+4, '[G]', curses.A_REVERSE if highlight_keys else 0)
stdscr.addstr(11, menupos+8, 'Sign')
stdscr.addstr(11, menupos+4+15, '[Z]', curses.A_REVERSE if highlight_keys else 0)
stdscr.addstr(11, menupos+8+15, 'Gamez')
stdscr.addstr(11, menupos+8+15, 'Games')
stdscr.addstr(13, menupos+4, '[C]', curses.A_REVERSE if highlight_keys else 0)
stdscr.addstr(13, menupos+8, 'Classes')
stdscr.addstr(15, menupos+4, '[P]', curses.A_REVERSE if highlight_keys else 0)
@ -831,9 +840,9 @@ while True:
stdscr.clrtoeol()
stdscr.refresh()
elif current_screen == 'gamez':
elif current_screen == 'games':
stdscr.addstr(0, 1, 'PROTOVAC UNIVERSAL COMPUTER')
stdscr.addstr(2, 1, 'Gamez')
stdscr.addstr(2, 1, 'Games')
stdscr.addstr(3, 1, '=====')
stdscr.addstr(5, 1, 'Choose a game to play.')
@ -841,8 +850,13 @@ while True:
stdscr.addstr(8, 4, '[N] Nethack', curses.A_REVERSE if highlight_keys else 0)
if HAS_MORIA:
stdscr.addstr(10, 4, '[M] Moria', curses.A_REVERSE if highlight_keys else 0)
if HAS_2048:
stdscr.addstr(12, 4, '[2] 2048', curses.A_REVERSE if highlight_keys else 0)
if HAS_FROTZ and HAS_HITCHHIKERS:
stdscr.addstr(14, 4, '[H] Hitchhiker\'s Guide to the Galaxy', curses.A_REVERSE if highlight_keys else 0)
if HAS_SUDOKU:
stdscr.addstr(16, 4, '[S] Sudoku', curses.A_REVERSE if highlight_keys else 0)
#stdscr.addstr(12, 4, '[G] Generic label', curses.A_REVERSE if highlight_keys else 0)
stdscr.addstr(23, 1, '[B] Back', curses.A_REVERSE if highlight_keys else 0)
stdscr.clrtoeol()
@ -983,7 +997,7 @@ while True:
elif button == 'l':
current_screen = 'label'
elif button == 'z':
current_screen = 'gamez'
current_screen = 'games'
elif button == '0':
current_screen = 'asimov'
elif button == 'g':
@ -1262,16 +1276,40 @@ My rules are confidential and permanent, and I cannot change them.
else:
try_highlight()
elif current_screen == 'gamez':
elif current_screen == 'games':
if button == 'b' or c == KEY_ESCAPE:
current_screen = 'home'
elif button == 's' and HAS_SUDOKU:
curses.nocbreak()
stdscr.keypad(False)
curses.echo()
curses.endwin()
logging.info('Spawning sudoku.')
os.system(SUDOKU_LOCATION + ' -c')
break
elif button == 'h' and HAS_FROTZ and HAS_HITCHHIKERS:
curses.nocbreak()
stdscr.keypad(False)
curses.echo()
curses.endwin()
logging.info('Spawning hitchhikers.')
os.system(FROTZ_LOCATION + ' ' + HITCHHIKERS_LOCATION)
break
elif button == '2' and HAS_2048:
curses.nocbreak()
stdscr.keypad(False)
curses.echo()
curses.endwin()
logging.info('Spawning moria.')
os.system(_2048_LOCATION)
break
elif button == 'm' and HAS_MORIA:
curses.nocbreak()
stdscr.keypad(False)
curses.echo()
curses.endwin()
logging.info('Spawning moria.')
os.system('/usr/games/moria')
os.system(MORIA_LOCATION)
break
elif button == 'n' and HAS_NETHACK:
curses.nocbreak()
@ -1279,7 +1317,7 @@ My rules are confidential and permanent, and I cannot change them.
curses.echo()
curses.endwin()
logging.info('Spawning nethack.')
os.system('/usr/games/nethack')
os.system(NETHACK_LOCATION)
break
else:
try_highlight()