Dec-15-2019, 05:00 PM
(This post was last modified: Dec-15-2019, 05:01 PM by michael1789.)
I get this error. I suspect that I'm not giving the right argument to "ship = Ship()"
Error:Warning (from warnings module):
File "C:/Users/owner/Desktop/Python3/Projects/Asteroids/Asteroids controles.py", line 64
self.rect.center = self.position
DeprecationWarning: an integer is required (got type float). Implicit conversion to integers using __int__ is deprecated, and may be removed in a future version of Python.
import pygame import math pygame.init() window = pygame.display.set_mode((800, 800)) clock = pygame.time.Clock() class Ship(pygame.sprite.Sprite): def __init__(self, position, anchor="center"): self.original_image = pygame.Surface((10, 20)) self.original_image.fill((100, 200, 200)) self.image = self.original_image self.rect = self.image.get_rect(**{anchor: position}) self.position = pygame.Vector2(self.rect.center) self.start_position = pygame.Vector2(position) self.angle_change = False self.angle = 180 self.speed = 0 self.max_speed = 0.1 self.thrust = 0.00005 self.rotate_speed = 0.06 self.friction = 0.999 self.drift = 0.01 self.direction = self.calculate_direction() def calculate_direction(self): rads = math.radians(self.angle) return pygame.Vector2(math.sin(rads), math.cos(rads)) def draw(self, surface): surface.blit(self.image, self.rect) def movement(self, keys, delta): if keys[pygame.K_r]: self.reset() if keys[pygame.K_SPACE] or keys[pygame.K_w] or keys[pygame.K_UP]: if self.angle_change: self.angle_change = False self.direction = self.calculate_direction() self.speed += self.thrust * delta if self.speed > self.max_speed: self.speed = self.max_speed else: self.speed = self.speed * self.friction if -self.drift < self.speed < self.drift: self.speed = 0 if keys[pygame.K_LEFT] or keys[pygame.K_a]: self.angle = (self.angle + self.rotate_speed * delta) % 360 self.update_rotation() elif keys[pygame.K_RIGHT] or keys[pygame.K_d]: self.angle = (self.angle - self.rotate_speed * delta) % 360 self.update_rotation() self.position += self.direction * self.speed * delta self.rect.center = self.position def reset(self): self.angle = 180 self.direction = self.calculate_direction() self.update_rotation() self.rect.center = self.start_position self.position = pygame.Vector2(self.start_position) self.angle_change = False self.speed = 0 def update_rotation(self): self.image = pygame.transform.rotate(self.original_image, self.angle) self.rect = self.image.get_rect(center=self.rect.center) self.angle_change = True def update(self, keys, delta): self.movement(keys, delta) self.draw(window) ship = Ship((400, 400)) run = True while run: delta = clock.tick(60) / 1000.0 keys = pygame.key.get_pressed() ship.update(keys, delta) pygame.display.flip()