Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can't use variables in pygame.draw.circle?

When I try to make a shape using variables, I keep getting this error message:

"TypeError: integer argument expected, got float"

import pygame._view
import pygame, sys
from pygame.locals import *
import random

pygame.init()

...

barrel = pygame.image.load("images\Barrel.gif")
barrel_create = 0
barrelx = screen.get_height()- barrel.get_height()
barrely = screen.get_width()/2 - barrel.get_width()/2
barrel_exist = 0
explosion_delay = 0

...

while running:

    if barrel_exist == 0:
        if barrel_create == 500:
            barrely = 200
        barrelx = random.randint(0,400)
        barrel_exist = 1
    if barrel_exist == 1:
        barrely = barrely + 0.1
        if barrely > 400:
            barrel_exist = 0

    if explosion_delay > 0:
        pygame.draw.circle(screen, (0,255,0), (barrelx, barrely), 64, 0)
    explosion_delay = explosion_delay + 1

    if explosion_delay == 100:
    explosion_delay = 0

The explosion_delay > 0 when the barrel is "shot".

like image 249
Ripspace Avatar asked Sep 18 '11 16:09

Ripspace


2 Answers

barrely = barrely + 0.1

barrely must be a float at some point because of this line.

I think you should do pygame.draw.circle(screen, (0,255,0), (int(barrelx), int(barrely)), 64, 0) to truncate the variables to integers as the function requires.

like image 60
QasimK Avatar answered Sep 18 '22 11:09

QasimK


You don't say which line is giving the error, but if you're using Python 3, / gives a float result. Use // for an integer.

like image 28
Tom Zych Avatar answered Sep 18 '22 11:09

Tom Zych