import pygame from pygame.locals import HWSURFACE, DOUBLEBUF import math FLAGS= HWSURFACE | DOUBLEBUF #| FULLSCREEN GX = 450 GY = 450 CELL_COLOR = (80,80,80) CAR_SIZE=50 pygame.init() IMG = pygame.image.load("car50.png")#.convert() def angle_to_vector(angle): angle=angle*math.pi/180 return [math.cos(angle), math.sin(angle)] class Car(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.surface = pygame.Surface((CAR_SIZE, CAR_SIZE)) self.original_image = IMG # self.image = pygame.Surface((CAR_SIZE, CAR_SIZE)) # self.image.fill((0,255,0)) # self.original_image = self.image self.image = self.original_image self.rect = self.surface.get_rect() self.rect.center = (GX / 2, GY / 2) self.speed = 5 self.heading = 0 self.heading_change = 0 # def draw(self,screen): # # self.surface.blit(self.image, (0,0)) # screen.blit(self.surface, self.rect.center) def update_position(self): vec = angle_to_vector(self.heading) old_center = self.rect.center self.rect.center = (self.speed * vec[0] + old_center[0], self.speed * vec[1] + old_center[1]) def update(self): # rotate old_center = self.rect.center self.image = pygame.transform.rotate(self.original_image, self.heading) self.rect = self.image.get_rect() self.rect.center = old_center # self.update_position() self.heading += self.heading_change self.heading = self.heading % 360 # self.rect = self.image.get_rect(center=self.rect.center) self.rect.x += self.speed screen = pygame.display.set_mode((GX, GY), FLAGS) all_cars = pygame.sprite.Group() car = Car() all_cars.add(car) car2 = Car() car2.heading_change = 5 car2.speed = -2 all_cars.add(car2) clock = pygame.time.Clock() while True : screen.fill(CELL_COLOR) all_cars.update() all_cars.draw(screen) pygame.draw.rect(screen, (125,255,125),pygame.Rect(car2.rect.center, (3,3))) pygame.display.flip() clock.tick(10)