Sign in to follow this  

Trouble with importing my own modules

This topic is 1782 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I have three files: Main.py, Game.py, and CreateDisplay.py . Obviously Main is going to be the main file where everything is going to run from. This is my first project that i have split the code into separate modules and i am having problems.

 

The problem i am having is that when the display is made, the background isn't filled with white, its black, and no matter what i do to the variable 'WHITE' it stays black.

 

Here is the code for each:

 

Main.py

import pygame
import sys
import Game
import CreateDisplay

#####the main file#####

pygame.init()

if __name__ == '__main__':


    Game.Main()

    for event in pygame.event.get():
        
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    pygame.display.update()

 

 

Game.py

 

import pygame
import sys
import CreateDisplay

#####the real main game file#####

pygame.init()    


def Main():

    while True:

        CreateDisplay.Display()


        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()

 

 

CreateDisplay.py

 

import pygame
import sys

#####this is the file to make the screen#####

pygame.init()

def Display():

    WHITE = (255, 255, 255)

    DISPLAY = pygame.display.set_mode((1024, 720))

 

Please help! I can't figure out what is wrong and i've been working with it for about an hour.

Share this post


Link to post
Share on other sites

Why are you importing CreateDisplay into Main.py? You are not using it. Anyway, I suspect the problem is you are trying to use python modules like C++ headers. You import pygame three times, once in each file. Each file will have a separate, distinct pygame object (or whatever it is). What you should do is create your stuff in the main script, and pass it to the other scripts. But for simplicity I suggest you stick to a single file for now.

Share this post


Link to post
Share on other sites

Why are you importing CreateDisplay into Main.py? You are not using it. Anyway, I suspect the problem is you are trying to use python modules like C++ headers. You import pygame three times, once in each file. Each file will have a separate, distinct pygame object (or whatever it is). What you should do is create your stuff in the main script, and pass it to the other scripts. But for simplicity I suggest you stick to a single file for now.

 

I've made many programs using one file and am doing my new project this way to learn how to properly do it. So I should only import pygame in Main.py?

Share this post


Link to post
Share on other sites

You are not using the variable WHITE anywhere though. If you want the surface to be white, you have to call fill on DISPLAY, then call flip.

 

Each file will have a separate, distinct pygame object (or whatever it is).

 

I think multiple imports of the same module will only have the effect of one import. The first will add the module object to a dict, and any other times it will just do a look up.

Edited by ultramailman

Share this post


Link to post
Share on other sites

What is the error message?

Also, why are you calling pygame.init() in every file?

 

You should rethink the way your game is made, you have unreachable codes and very, very confusing names.

When you have a main and a real main there is definitely something wrong with your code.

Share this post


Link to post
Share on other sites

As ultramailman mentioned, you initialized "WHITE" but never used it anywhere. The value is correct for a true white color, it just comes down to setting the color of the screen. 

 

 

 

screen.fill(WHITE); 
 

 

 

and after that you are going to want to make sure that you use pygame's flip method to properly display the screen. 

 

 

 

pygame.display.flip();
 

 

Share this post


Link to post
Share on other sites

As ultramailman mentioned, you initialized "WHITE" but never used it anywhere. The value is correct for a true white color, it just comes down to setting the color of the screen. 

 

 

 

screen.fill(WHITE); 
 

 

 

and after that you are going to want to make sure that you use pygame's flip method to properly display the screen. 

 

 

 

pygame.display.flip();
 

 

I'm not sure why it isn't in the code sections above but i called for "DISPLAY" to be filled "WHITE" and it is not working. I combined CreateDisplay.py and Game.py, and added pygame.diplsay.flip() to the Game() definition and it works fine now. I assumed having pygame.display.update() in Main.py would be enough.

Share this post


Link to post
Share on other sites



I've made many programs using one file and am doing my new project this way to learn how to properly do it.

 

Sometimes using one file is the proper way to do it, depending on how you are structuring the code. How complex your game is would also have a big impact on how the code is layed out. As Bacterius mentioned, you are using Python modules like C++ headers. Try and treat modules like their name implies for a "modular" design. A google search for "python idioms" may yield some useful information.

Share this post


Link to post
Share on other sites
Sign in to follow this