2

How would I go about achieving scrolling text in pygame? As the Text class is derived from Sprite, I thought I would be able to wrap it in the usual way I would a Sprite object. Instead, it simply disappears off the left edge of the screen, never to return (I can't get it to bounce off each side either).

My aim with this program is to reinforce things I've just covered in some educational material. However, scrolling text wasn't one of them (would look cool though).

Thanks,

Dave

Code(specific block is under comment 'add scrolling text at bottom of screen'):

# Simon Says
# Displays sequences of sounds and/or colors which the user must repeat

from livewires import games, color
import random

# initialise screen
games.init(screen_width = 640, screen_height = 480, fps = 50)

class Game(object):
    """A sequence repeat game"""
    def __init__(self):
        """Initialize Game object"""

        # create key
        self.menu_title = games.Text(value = "Key",
                          size = 25,
                          color  = color.red,
                          top = 5,
                          left = games.screen.width - 100,
                          is_collideable = False)
        self.menu_choice0 = games.Text(value = "0 - Quit",
                          size = 20,
                          color  = color.red,
                          top = self.menu_title.bottom + 5,
                          left = games.screen.width - 120,
                          is_collideable = False)
        self.menu_choice1 = games.Text(value = "1 - Yellow",
                          size = 20,
                          color  = color.red,
                          top = self.menu_choice0.bottom + 5,
                          left = games.screen.width - 120,
                          is_collideable = False)
        self.menu_choice2 = games.Text(value = "2 -Thrust sound",
                          size = 20,
                          color  = color.red,
                          top = self.menu_choice1.bottom + 5,
                          left = games.screen.width - 120,
                          is_collideable = False)
        games.screen.add(self.menu_title)
        games.screen.add(self.menu_choice0)
        games.screen.add(self.menu_choice1)
        games.screen.add(self.menu_choice2)

        # add scrolling text at bottom of screen
        self.instructions = games.Text(value = "Repeat the sequence by entering the "
                                               "corresponding number.",
                                               size = 20,
                                               color = color.green,
                                               x = games.screen.width/2,
                                               bottom = games.screen.height - 2,
                                               dx = - 0.75)

        games.screen.add(self.instructions)

        # wrap
        if self.instructions.left < 0:
            self.instructions.left = games.screen.width



    def play(self):
        """Play game"""
        # load and set background
        black_background = games.load_image("blackbackground.jpg", transparent = False)
        games.screen.background = black_background
        games.screen.mainloop()

def main():
    sequence = Game()
    sequence.play()

main()
Michael Johnson
  • 450
  • 5
  • 15
  • what version of `livewires` are you using? The latest (2.1) does not match your code. – cmd Nov 19 '15 at 21:03

1 Answers1

1

I don't see anything that would handle it all for you in livewires. You could probably use livewires.Object with some custom code. Build your surface like livewires.game.Text does then, move it around. Or even make it tickable and keep track of what part of the text should be shown and blit just that part to the object surface.

cmd
  • 5,246
  • 13
  • 29