Programming Forums
User Name Password Register
 

RSS Feed
FORUM INDEX | TODAY'S POSTS | UNANSWERED THREADS | ADVANCED SEARCH

Reply
 
Thread Tools Display Modes
Old Dec 15th, 2005, 12:56 PM   #1
Sane
Programming Guru
 
Sane's Avatar
 
Join Date: Apr 2005
Location: Waterloo, Ontario
Posts: 1,885
Rep Power: 5 Sane will become famous soon enough
Send a message via MSN to Sane
Weird Problem

events.py
from pygame.image import load
#from pygame.draw import circle
from random import randrange

class Snow:

    def __init__(self, snowfall, speed, spinspeed, size):
        self.snow = []
        self.width = size[0]
        self.height = size[1]
        for i in range(snowfall):
            self.snow.append( [ randrange(self.width),
                                randrange(self.height),
                                randrange(1,4),
                                randrange(1,3),
                                randrange(2),
                                randrange(1,4)] )
        self.snowflakes = { 1:load('images/snowflake1.bmp'), 2:load('images/snowflake2.bmp'), 3:load('images/snowflake3.bmp') }
        self.speed = speed
        self.spinspeed = spinspeed
        self.i = 0
        self.ii = 0
            
    def routine(self, image, x, y, to_type, to_place):

        # assume it's an "area", and check to see if on screen by
        # using the x, y and the same image blit formula
        
        for f in range(len(self.snow)):
            image.blit( self.snowflakes[self.snow[f][5]], (self.snow[f][0]-4, self.snow[f][1]-4))
            #circle( image, (200, 200, 200), (self.snow[f][0], self.snow[f][1]), 3, 0 )

        self.i += 1
        if self.i == self.speed:
            self.i = 0

            spin = False
            self.ii += 1
            if self.ii == self.spinspeed:
                self.ii = 0
                spin = True

            for f in range(len(self.snow)):
                if self.snow[f][4] == 0:
                    self.snow[f][0] -= self.snow[f][3]
                else:
                    self.snow[f][0] += self.snow[f][3]
                self.snow[f][1] += self.snow[f][2]

                if spin:
                    self.snow[f][5] = [2, 3, 1][self.snow[f][5]-1]

                if self.snow[f][0] > self.width+4 or self.snow[f][0] < -4 or\
                   self.snow[f][1] > self.height+4 or self.snow[f][1] < -4:
                    self.snow[f] = [ randrange(self.width),
                                     -4,
                                     randrange(1,4),
                                     randrange(1,3),
                                     randrange(2),
                                     randrange(1,4)]
                        
        return image


main.py
from pygame import init
from pygame.image import load
from pygame.display import set_mode, flip, quit
from sys import exit

from pygame.event import get
from pygame.locals import QUIT

from events import Snow
from time import sleep

class Soulodine:

    def __init__(self):
        self.screen = set_mode((324, 295))
        self.events = [Snow(100, 1, 4, map.get_size())]

    def ingame(self):
        
        map = load("images/area1.png")
        
        while 1:

            map = load("images/area1.png")   ### THIS LINE
            for event in self.events:
                newmap = event.routine(map, 0, 0, 0, 0)
            self.screen.blit( newmap, (0, 0) )
            flip()

            for event in get():

                if event.type == QUIT:
                    quit()
                    exit()


Soulodine().ingame()

Look at the line commented "THIS LINE", if you take that out, the variable will not reset itself as it logically should. And therefore the snowflakes continue overlapping the screen. Replace the image names with some fake stuff to test it out.

Help?
Sane is offline   Reply With Quote
Reply

Bookmarks

« Previous Thread in Forum | Next Thread in Forum »

Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump




DaniWeb IT Discussion Community
All times are GMT -5. The time now is 2:18 AM.

Powered by vBulletin® Version 3.7.0, Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Copyright ©2007 DaniWeb® LLC