[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [pygame] Newbie needs help, what's the most efficient (or easiest) way to do this?



YOU'RE AWESOME!!!!! Thank you, I was trying to figure out how to do it,
and after a while thought my idea was completely wrong... I owe you
one, I'll go and try this right now!

Well, actually, after I finish all of the homework that's due tomorrow.
After I get this down, I just have to get the combo timer system thing
up... But I'll ask about that a little later. Thank you!


On Thu, 4 Jan 2007 15:24:46 -0500
Brandon N <kordova@xxxxxxxxx> wrote:

> I will not give you the code since you have stated this in an  
> assignment, but hopefully I can help.
> 
> You are correct that you will need an array, or a list in Python, to  
> store the strings. I would be more concerned with ease of
> programming than efficiency, as this is a pretty straightforward and
> non- demanding application.
> 
> So, with that said, you will want your Textsprite class to take a  
> list of strings instead of just a string. You can do this by saying:
> 
> a = Textsprite(["test string1", "another test!", "can you type
> this?"])
> 
> Now, in your textsprite class, you have a variable that stores the  
> index of the current letter. You will also have to store the index
> of the current string, and replace all references of self.text with
> it, as in self.text[self.current_string]. Now, when the user
> completes a string, you can increment self.current_string and reset
> self.pos and the next string will be presented.
> 
> I hope that this is helpful for you.
> 
> Cheers,
>   Brandon
> 
> On Jan 4, 2007, at 2:45 PM, Charles Christie wrote:
> 
> > Hey, I am making a typing game in Python using pygame. I have  
> > finally hit a
> > roadblock, and I think I'm toast. I started this game as my senior  
> > project,
> > and I need to have something to at least demonstrate by June.
> >
> > I think I screwed myself on this one. I thought I knew a
> > reasonable amount of
> > programming, but absolutely none of it is coming in handy. I had
> > to ask for
> > help to get what I have now, and now I've hit a road block.
> >
> > So, what I need is:
> >
> > A. To find a way to feed multiple strings into the program. As in,  
> > when you
> > finish one string, instead of starting it over again you instead go
> > to the next word in the list, which I guessed should be an array of
> > strings. I'm probably wrong, though. What's the most efficient (or
> > easiest) way to do this?
> >
> > B. Two timers, a combo timer and a word timer that count backwards.
> > I know I can figure out how to do these myself, though.
> >
> > The code I have so far looks like this:
> > **************************************************************
> > #Credit to scriptedfun (http://www.scriptedfun.com) for the help
> > #Stil a very VERY barebones typing script. Still got one last part  
> > of the main
> > #engine to go before getting to work on part two.
> >
> > import pygame
> > from pygame.locals import *
> >
> > SCREENRECT = Rect(0, 0, 640, 480)
> >
> > class Textsprite(pygame.sprite.Sprite):
> >    def __init__(self, text):
> >        pygame.sprite.Sprite.__init__(self)
> >        self.text = text
> >        self.pos = 0
> >        self.update()
> >    def update(self):
> >        self.image = pygame.font.Font(None, 36).render(self.text,
> > 1, (0, 0, 0))
> >        self.highlight = pygame.font.Font(None,
> > 36).render(self.text[:self.pos], 1, (0, 0, 255))
> >        self.image.blit(self.highlight, (0, 0))
> >        self.rect = self.image.get_rect()
> >        self.rect.center = pygame.display.get_surface().get_rect 
> > ().center
> >    def keyin(self, key):
> >        if key == self.text[self.pos]:
> >            self.pos = self.pos + 1
> >            self.combo = self.combo + 1
> >        else:
> >            self.combo = 0
> >        if len(self.text) == self.pos:
> >            self.pos = 0
> >
> > def main():
> >    pygame.init()
> >
> >    screen = pygame.display.set_mode(SCREENRECT.size)
> >
> >    # make background
> >    background = pygame.Surface(SCREENRECT.size).convert()
> >    background.fill((255, 255, 255))
> >    screen.blit(background, (0, 0))
> >    pygame.display.update()
> >
> >    # keep track of sprites
> >    all = pygame.sprite.RenderUpdates()
> >
> >    # keep track of time
> >    clock = pygame.time.Clock()
> >
> >    textsprite = Textsprite('It works!')
> >    all.add(textsprite)
> >
> >    # game loop
> >    while 1:
> >
> >        # get input
> >        for event in pygame.event.get():
> >            if event.type == QUIT:
> >                return
> >            elif event.type == KEYDOWN:
> >                if event.key == K_ESCAPE:
> >                    return
> >                else:
> >                    textsprite.keyin(event.unicode)
> >
> >        # clear sprites
> >        all.clear(screen, background)
> >
> >        # update sprites
> >        all.update()
> >
> >        # redraw sprites
> >        dirty = all.draw(screen)
> >        pygame.display.update(dirty)
> >
> >        # maintain frame rate
> >        clock.tick(30)
> >
> > if __name__ == '__main__': main()
> > **************************************************************
> >
> > I've never used a mailing list before. I'm quite new at this. Sorry
> > if I disobeyed a rule of conduct or did something considered
> > implite/noobish/stupid.
>