Jump to content

  • Log In with Google      Sign In   
  • Create Account

Trouble with importing my own modules


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
7 replies to this topic

#1 K1NNY   Members   -  Reputation: 163

Like
0Likes
Like

Posted 28 February 2013 - 10:10 PM

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.



Sponsor:

#2 Bacterius   Crossbones+   -  Reputation: 8945

Like
0Likes
Like

Posted 28 February 2013 - 10:15 PM

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.


The slowsort algorithm is a perfect illustration of the multiply and surrender paradigm, which is perhaps the single most important paradigm in the development of reluctant algorithms. The basic multiply and surrender strategy consists in replacing the problem at hand by two or more subproblems, each slightly simpler than the original, and continue multiplying subproblems and subsubproblems recursively in this fashion as long as possible. At some point the subproblems will all become so simple that their solution can no longer be postponed, and we will have to surrender. Experience shows that, in most cases, by the time this point is reached the total work will be substantially higher than what could have been wasted by a more direct approach.

 

- Pessimal Algorithms and Simplexity Analysis


#3 K1NNY   Members   -  Reputation: 163

Like
0Likes
Like

Posted 28 February 2013 - 10:22 PM

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?



#4 ultramailman   Prime Members   -  Reputation: 1572

Like
2Likes
Like

Posted 01 March 2013 - 01:10 AM

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, 01 March 2013 - 01:13 AM.


#5 KnolanCross   Members   -  Reputation: 1317

Like
0Likes
Like

Posted 01 March 2013 - 10:40 AM

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.


Currently working on a scene editor for ORX (http://orx-project.org), using kivy (http://kivy.org).


#6 ch1mera   Members   -  Reputation: 176

Like
0Likes
Like

Posted 01 March 2013 - 04:56 PM

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();
 

 



#7 K1NNY   Members   -  Reputation: 163

Like
0Likes
Like

Posted 02 March 2013 - 10:26 AM

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.



#8 dmreichard   Members   -  Reputation: 384

Like
0Likes
Like

Posted 02 March 2013 - 08:12 PM



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.






Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS