Quantcast
Channel: Active questions tagged python - Stack Overflow
Viewing all articles
Browse latest Browse all 23390

Python Turtle : Handling two successive screens for two successive event-listener driven game Functions

$
0
0

I'm new to Python and trying out Turtle through Tutorials. This question turned out to be verbose, my bad.

I have designed 2 Games handled by 2 Functions (in a separate module) which are called from MAIN -

F1 : Plays an Etch a Sketch Game where user inputs are used to move the Turtle to draw
F2 : Plays a Turtle Race where 5 Turtles (I have used a list to handle 5 Objects) move at randomized paces to see who wins.

The ISSUE :

  • The Games work fine individually on the first iteration but I have a loop in MAIN where user can choose games multiple times. On the second iteration, the screen pops up but I don't see the Turtles and when I click I get Turtle Terminator error.
  • I have initialized a create_screen() method in a separate config.py file which I import in each FN to create a screen. I then use exitonclick() to end the display. Mainloop() didn't work here. (Should I use Global - Just wanted to see how to make it work WITHOUT Global)
  • I need FN1 to stop listening and the ask user if he wants FN2, then move to FN2 and I can't seem to get that done without exitonclick() on FN1. How can I keep the screen alive, displayed, ready for FN2 ? It's the only reason I am using Screen on config file and creating with FNs. I'm sure there is a way, I just don't know it yet.

Solutions I have checked indicate the Turtle._RUNNING = True Flag which can be changed, but what is a better way to implement this without changing a Class Variable (or using Global) ? If someone can point me to the some sources (other than TURTLE DOCS) for Screen and Event Listeners to solve this, I'll do the learning myself !

Code Skeleton : I'm loading config.py into FN Module and the Game Functions from MAIN

# Module : config.pyfrom turtle import Turtle, Screensquad = []for i in range(0, 5):  # List of Turtle Objects available to all Modules    raphael = Turtle()    raphael.speed(0)    squad.append(raphael)def create_screen():"""Creates and Returns a screen Object"""    screen = Screen()    screen.screensize(400, 400)    screen.colormode(255)    return screen
# Module : gamefunction.pyfrom config import squad, create_screendef etch_sketch_game():"""Plays the Etch a Sketch Game"""    screen_fn = create_screen()    def forwards():  # Other FNs designed but not included for this Question        squad[0].fd(30)    screen_fn.listen()    screen_fn.onkey(key="w", fun=forwards)    screen_fn.exitonclick()def turtle_race(): # Only adde"""Plays the Turtle Race Game"""    screen_fn = create_screen()    squad[0].setpos(-200, 30)    squad[1].setpos(-200, 20)    squad[2].setpos(-200, 0)    squad[3].setpos(-200, -20)    squad[4].setpos(-200, -30)    def forwards():  # Other FNs designed but not included for this Question        squad[0].fd(30)    screen_fn.onkey(key="w", fun=forwards)    screen.exitonclick()

Viewing all articles
Browse latest Browse all 23390

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>