WorldViz User Forum

WorldViz User Forum (https://forum.worldviz.com/index.php)
-   Vizard (https://forum.worldviz.com/forumdisplay.php?f=17)
-   -   Python Programming Question (https://forum.worldviz.com/showthread.php?t=2160)

jaylocco 07-15-2009 08:06 PM

Python Programming Question
 
Im sory to ask this because Im still new to Python. but is there such a thing as 'nested While' in Python just like in C++? Im trying to loop a vizard game which contain a 'while true:' loop. the thing is, how do I repeat the whole program. this is the sample programming code.

Code:

    def game()
       
        yield viztask.waitKeyDown(' ') #<----starts the game
        #fade intro page
        fadeOut = vizact.fadeTo(0,begin=1,time=1)
        startpage.addAction(fadeOut)
        #call throwing function
        throwing ()
        viz.phys.setGravity(0,0,0)

        while True: # this while loop will repeat the flying Aliens to and fro
                FlyAliens() #flies the Aa Bb Cc Aliens
                ResetPositionAliens()   
    myTask = viztask.schedule( game() )

Aliens= [Aa,Bb,Cc]
Ship.enable(viz.COLLIDE_NOTIFY)
               
def oncollide (e) :       
       
        if e.obj2 in Aliens:

                Ship.visible(viz.OFF)
                Shipcrash.visible(viz.ON)
                view.lookat([2,0,-5])
             

viz.callback(viz.COLLIDE_BEGIN_EVENT,oncollide)

Let say if the ship collide with any of the aliens, the ship will crashes down and it will prompt user whether to replay again or not.

So how do we reset the game by using another while loop by pressing the 'r' button ( yield viztask.waitKeyDown('r') ) and back to the beginning. (#<----starts the game)

tq:confused:

farshizzo 07-20-2009 09:54 AM

There seems to be a problem with your current code. The while loop inside your game task is not yielding. This will probably cause the graphics loop to freeze. It seems like there should be a yield None statement at the end of the loop.

Regarding your original question. You can setup a simple callback function that restarts the game task when the 'r' key is pressed. Example:
Code:

def ResetGame():
        global myTask
        myTask.kill() # Kill existing task
        myTask = viztask.schedule( game() ) # Create new game task
       
vizact.onkeydown('r',ResetGame)


jaylocco 07-21-2009 02:23 AM

Thanks..especially for the reset function that u suggested.it makes my life easier..


All times are GMT -7. The time now is 09:58 AM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
Copyright 2002-2023 WorldViz LLC