Jump to content

UberTaco

Members
  • Posts

    3
  • Joined

  • Last visited

Posts posted by UberTaco

  1. And a pair of bash functions for dropping in your .bashrc (assuming you're running on Linux)

    function writeScreen()
    {
    echo "$@" > ~/test.txt
    }
    
    function writeScreenln()
    {
    echo "$@" >> ~/test.txt
    }

    These again assume a file (this time in the home dir) called test.txt. You may need to change this path as necessary. :)

  2. Hey guys, I'm lovin' the graffiti wall (even though it's more like the Graffitivision now.)

    I went ahead and hacked together a script in python to let folks run something similar on their own machines.

    You need:

    Python

    PyGame

    #import and initialize
    import pygame
    pygame.init()
    
    class Message(pygame.sprite.Sprite):
      def __init__(self, filename):
        pygame.sprite.Sprite.__init__(self)
        self.font = pygame.font.SysFont("Verdana", 36)
        self.filename = filename    
        in_file = open(self.filename, "r")
        filetext = in_file.read()
        in_file.close()
            
        self.text = filetext
        self.image = self.font.render(self.text, 1, (255, 255, 255))
        self.rect = self.image.get_rect()
    
      def rendertext(self, font, text, pos=(0,0), color=(255,255,255), bg=(0,0,0)):
          lines = text.splitlines()
          #first we need to find image size...
          width = height = 0
          for l in lines:
              width = max(width, font.size(l)[0])
              height += font.get_linesize()
          #create 8bit image for non-aa text..
          img = pygame.Surface((width, height), 0, 8)
          img.set_palette([(0,0,0), (255,255,255)])
          #render each line
          height = 0
          for l in lines:
           t = font.render(l, 1, (255,255,255), (0,0,0))
           img.blit(t, (0, height))
           height += font.get_linesize()
          return img
    
      def update(self):
        #-----Read text from text.txt----#
        in_file = open(self.filename, "r")
        filetext = in_file.read()
        in_file.close()
                
        self.text = filetext
        #self.image = self.font.render(self.text, 1, (255, 255, 255))   
        self.image = self.rendertext(self.font, self.text)
        self.rect = self.image.get_rect()
        label.rect.centerx = background.get_rect().centerx
        label.rect.centery = background.get_rect().centery
    
    
    #display
    screen = pygame.display.set_mode((800, 600), pygame.FULLSCREEN | pygame.DOUBLEBUF | pygame.SWSURFACE)
    FULLSCREEN = True
    
    #Entities
    background = pygame.Surface(screen.get_size())
    background = background.convert()
    background.fill((0, 0, 0))
    label = Message("test.txt")
    labelSprite = pygame.sprite.Group(label)
    
    #Action
    #  Assign vals to vars
    clock = pygame.time.Clock()
    keepGoing = True
    
    #  Loop
    while keepGoing:
      
      #T - Timer for framerate
      clock.tick(30)
    
      #E - Events
      for event in pygame.event.get():
        if event.type == pygame.QUIT:
          keepGoing = False
        elif event.type == pygame.KEYDOWN:
          if event.key == pygame.K_ESCAPE:
            keepGoing = False
          elif event.key == pygame.K_f:
            if FULLSCREEN:
              screen = pygame.display.set_mode((800, 600), pygame.DOUBLEBUF | pygame.SWSURFACE)
              background = pygame.Surface(screen.get_size())
              background = background.convert()
              background.fill((0, 0, 0))
              label = Message("test.txt")
              labelSprite = pygame.sprite.Group(label)
            else:
              screen = pygame.display.set_mode((800, 600), pygame.FULLSCREEN | pygame.DOUBLEBUF | pygame.SWSURFACE)
              background = pygame.Surface(screen.get_size())
              background = background.convert()
              background.fill((0, 0, 0))
              label = Message("test.txt")
              labelSprite = pygame.sprite.Group(label)
    
            FULLSCREEN = not FULLSCREEN
            screen = pygame.display.get_surface()
    
    
      #R - Refresh display
      screen.blit(background, (0, 0))
      labelSprite.update()
      labelSprite.draw(screen)
      pygame.display.flip()

    Can't take credit for quite everything, as I had to creatively Google to find that rendertext function that I dropped in the Message class (Why the heck doesn't pygame.font.Font.render support newline chars?) but the rest is mine. :)

    Note that this reads from a file "test.txt" in the same directory as the script itself...still working on checking for existence and creating if non-existent file.

    EDIT: Had to update a few things: the Python was erroring out on Windows (I have to reinitialize each surface each time I reinitialize the screen...)

    Also set the font to "Verdana" because I know every Windows user will have it, and (almost) every Linux user will default to the much prettier FreeSans if they don't have it....

    I can zip up a py2exe, if anyone wants it for "drop-in-and-go"

×
×
  • Create New...