nur mit den Pfeiltasten hoch+runter linksrum links+rechts rechtsrum
so ich hab das ganze mal animiert und in eine klasse gepackt
der Panzer springt noch etwas beim 90grad übergang
oder eine bessere idee
image
Panz.png Panza
Code: Alles auswählen
import sys, os
import pygame
from pygame.locals import *
SCREENRECT = Rect(0, 0, 320, 240)
class Panzer(pygame.sprite.Sprite):
speed = 10
images = []
animcycle = 3
frame = 0
angle = 0
def __init__(self):
pygame.sprite.Sprite.__init__(self,self.containers)
self.images.append(pygame.image.load('Panz.png').convert_alpha())
self.images.append(pygame.image.load('Panza.png').convert_alpha())
self.original_a = pygame.image.load('Panz.png').convert_alpha()
self.original_b = pygame.image.load('Panza.png').convert_alpha()
self.image = self.images[0]
self.rect = self.image.get_rect(midleft=SCREENRECT.midleft)
self.rect = self.image.get_rect(center = (SCREENRECT.centerx,SCREENRECT.centery))
def move_vertical(self, moving_vertical):
self.rect.move_ip(0 ,moving_vertical*self.speed)
self.rect = self.rect.clamp(SCREENRECT)
self.frame += 1
self.imind = self.frame/self.animcycle%2
self.image = self.images[self.imind]
def move_horizontal(self, moving_horizontal):
self.rect.move_ip(moving_horizontal*self.speed, 0)
self.rect = self.rect.clamp(SCREENRECT)
def rotate(self,rotate_left,rotate_right):
center = self.rect.center
if rotate_left == 2:
self.angle += 5
if rotate_right == 2:
self.angle -= 5
if self.angle == 360 or self.angle == 0:angle = 0
self.images[0] = pygame.transform.rotate(self.original_a,self.angle)
self.images[1] = pygame.transform.rotate(self.original_b,self.angle)
self.rect = self.images[0].get_rect()
self.rect.center = center
def main():
pygame.init()
pygame.display.set_caption('Panzer move')
pygame.mouse.set_visible(0)
screen = pygame.display.set_mode(SCREENRECT.size)
background = pygame.Surface(screen.get_size())
background.fill([0,0,255])
clock = pygame.time.Clock()
all = pygame.sprite.RenderUpdates()
panzer = pygame.sprite.Group()
Panzer.containers = all
player = Panzer()
while True:
clock.tick(60)
all.clear(screen, background)
all.update()
event = pygame.event.poll()
if event.type == QUIT or \
(event.type == KEYDOWN and event.key == K_q):
break
if event.type == KEYDOWN and event.key == K_ESCAPE:
break
keystate = pygame.key.get_pressed()
moving_vertical = keystate[K_DOWN] - keystate[K_UP]
moving_horizontal = keystate[K_RIGHT] - keystate[K_LEFT]
rotate_left = keystate[K_DOWN] + keystate[K_UP]
rotate_right = keystate[K_RIGHT] + keystate[K_LEFT]
player.move_vertical(moving_vertical)
player.move_horizontal(moving_horizontal)
player.rotate(rotate_left,rotate_right)
screen.blit(background, (0, 0))
dirty = all.draw(screen)
pygame.display.update(dirty)
pygame.display.flip()
pygame.time.wait(50)
pygame.quit()
if __name__ == '__main__': main()