Bottom Page

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
 pygame zero keep count
#1
Hello, I'm very new to Python. I'm learning from a book called "Coding Games in Python"
The first exercise walks me through a simple "Shoot the Fruit" program. (using pygame zero)
It then suggests that I tweak it so that it can keep count of the number of times I click successfully.

I created the variable "score = 0" then inside the "if successful click" statement I added the line "score = score + 1", I also tried the variation: "score += 1" but always get an error message.

In my mind this is perfectly logical but clearly I'm doing something wrong.
I've tried searching for answers and examples but I think my question is perhaps too basic. (or am not wording my queries properly)
Help and guidance in understanding is appreciated.

OS: Windows 10
Python 3.7.2

Here is my code:

from random import randint

apple = Actor("apple")
score = 0

def draw():
    screen.clear()
    apple.draw()

def place_apple():
    apple.x = randint(10, 800)
    apple.y = randint(10, 600)

def on_mouse_down(pos):
    if apple.collidepoint(pos):
        score = score + 1
        print("Good Shot! Your score is: ", score)
        place_apple()
    else:
        print("You missed!")
        quit()

place_apple()
This is the message I recceive:

Error:
pygame 1.9.4 Hello from the pygame community. https://www.pygame.org/contribute.html Traceback (most recent call last): File "c:\program files\python37\lib\runpy.py", line 193, in _run_module_as_main "__main__", mod_spec) File "c:\program files\python37\lib\runpy.py", line 85, in _run_code exec(code, run_globals) File "C:\Program Files\Python37\Scripts\pgzrun.exe\__main__.py", line 9, in <module> File "c:\program files\python37\lib\site-packages\pgzero\runner.py", line 93, in main run_mod(mod) File "c:\program files\python37\lib\site-packages\pgzero\runner.py", line 113, in run_mod PGZeroGame(mod).run() File "c:\program files\python37\lib\site-packages\pgzero\game.py", line 217, in run self.mainloop() File "c:\program files\python37\lib\site-packages\pgzero\game.py", line 247, in mainloop self.dispatch_event(event) File "c:\program files\python37\lib\site-packages\pgzero\game.py", line 172, in dispatch_event handler(event) File "c:\program files\python37\lib\site-packages\pgzero\game.py", line 164, in new_handler return handler(**prepped) File "shoot.py", line 16, in on_mouse_down score = score + 1 UnboundLocalError: local variable 'score' referenced before assignment
Quote
#2
score is unknown to the function on_mouse_down. The best way when not using classes would be to pass that variable to that function. Global keyword is a simple option, but it invites bad programming style.
Quote

Top Page

Possibly Related Threads...
Thread Author Replies Views Last Post
  count unique letters in a word sunny_awesome 4 287 Jun-06-2019, 07:15 PM
Last Post: kotter
  Count how many carpets you need to fill room floor without multiplication/division Ech0ke 1 217 Apr-20-2019, 07:50 PM
Last Post: ichabod801
  While loop that needs to count up ImLearningPython 4 418 Dec-17-2018, 02:30 PM
Last Post: ImLearningPython
  If + Count Itay 5 491 Nov-09-2018, 09:57 PM
Last Post: nilamo
  Python count mohan7490 3 622 Nov-07-2018, 04:19 AM
Last Post: ichabod801
  Unique Count Talch 0 556 Aug-16-2018, 11:15 AM
Last Post: Talch
  Unable to implement loop count zukochew 3 588 Jul-25-2018, 06:23 PM
Last Post: ichabod801
  Count Letters in a Sentence (without using the Count Function) bhill 3 799 Jun-19-2018, 02:52 AM
Last Post: bhill
  Program: count and find Truman 3 1,134 Feb-11-2018, 11:06 PM
Last Post: Larz60+
  Count in Dictionaries Wolfpack2605 2 863 Jan-28-2018, 03:34 AM
Last Post: ka06059

Forum Jump:


Users browsing this thread: 1 Guest(s)