Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pygame
- TRANSPARENT = 0, 0, 0, 0
- class ImageHandler:
- def __init__(self):
- color = pygame.Color('darkgreen').lerp('white', 0.1)
- self.tank = self.create_tank(color)
- self.turret = self.create_turret('darkgreen')
- self.shell = self.create_shell('grey10')
- def create_tank(self, color):
- w, h = size = 50, 40
- surface = pygame.Surface(size, pygame.SRCALPHA)
- surface.fill(TRANSPARENT)
- rect = -5, 0, w + 10, 10
- pygame.draw.ellipse(surface, 'black', rect)
- rect = -5, 30, w + 10, 10
- pygame.draw.ellipse(surface, 'black', rect)
- rect = 0, 8, w, h - 16
- surface.fill(color, rect)
- return surface
- def create_turret(self, color):
- size = 35, 12
- surface = pygame.Surface(size, pygame.SRCALPHA)
- surface.fill(color)
- return surface
- def create_shell(self, color):
- size = 20, 10
- surface = pygame.Surface(size, pygame.SRCALPHA)
- surface.fill(color)
- return surface
- class Sprite:
- def __init__(self, image, position, anchor):
- self.oimage = image
- self.image = image
- self.rect = image.get_rect(**{anchor:position})
- def draw(self, surface):
- surface.blit(self.image, self.rect)
- class Tank:
- def __init__(self, tank, turret, shell, center):
- self.tank = Sprite(tank, center, 'center')
- self.turret = Sprite(turret, center, 'midleft')
- # turret pivot center and pivot point
- self.pcenter = pygame.Vector2(center)
- self.pivot = self.turret.rect.center - self.pcenter
- # turret distance from center
- self.distance = 1.4
- # set turret from center
- self.turret.rect.center += self.pivot * (self.distance - 1)
- self.shell = shell
- def draw(self, surface):
- self.tank.draw(surface)
- self.turret.draw(surface)
- def rotate(self, mpos):
- angle = (mpos - self.pcenter).as_polar()[1]
- pivot = self.pivot.rotate(angle) * self.distance
- self.turret.image = pygame.transform.rotate(self.turret.oimage, -angle)
- self.turret.rect = self.turret.image.get_rect(center=pivot + self.pcenter)
- def shoot(self):
- pass
- def main():
- # Basic Pygame Setup
- pygame.init()
- pygame.display.set_caption("Example")
- surface = pygame.display.set_mode((800, 600))
- clock = pygame.time.Clock()
- rect = surface.get_rect()
- running = True
- delta = 0
- fps = 60
- # Variables
- background = 'lawngreen'
- images = ImageHandler()
- tank = Tank(images.tank, images.turret, images.shell, rect.center)
- # Main Loop
- while running:
- for event in pygame.event.get():
- if event.type == pygame.MOUSEMOTION:
- tank.rotate(event.pos)
- elif event.type == pygame.MOUSEBUTTONDOWN:
- if event.button == 1:
- tank.shoot()
- elif event.type == pygame.QUIT:
- running = False
- surface.fill(background)
- tank.draw(surface)
- pygame.display.flip()
- delta = clock.tick(fps) * 0.001
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement