Objectsclass with movement implemented
TODO: Check for bordercollision and change of direction
This commit is contained in:
125
pygame-test.py
125
pygame-test.py
@@ -1,7 +1,7 @@
|
|||||||
import pygame
|
import pygame
|
||||||
|
|
||||||
pygame.init()
|
pygame.init()
|
||||||
screen = pygame.display.set_mode((640,480))
|
MAINSCREEN = pygame.display.set_mode((640,480))
|
||||||
pygame.display.set_caption("Testgame")
|
pygame.display.set_caption("Testgame")
|
||||||
|
|
||||||
WEISS = ( 255, 255, 255)
|
WEISS = ( 255, 255, 255)
|
||||||
@@ -9,12 +9,6 @@ active = True
|
|||||||
|
|
||||||
clock = pygame.time.Clock()
|
clock = pygame.time.Clock()
|
||||||
|
|
||||||
|
|
||||||
Testobjekt = {"name":"testobjekt",
|
|
||||||
"posx":0,
|
|
||||||
"posy":0
|
|
||||||
}
|
|
||||||
|
|
||||||
# Definieren der Variablen
|
# Definieren der Variablen
|
||||||
ballpos_x = 10
|
ballpos_x = 10
|
||||||
ballpos_y = 10
|
ballpos_y = 10
|
||||||
@@ -23,30 +17,77 @@ class GameObjekt():
|
|||||||
__name = str()
|
__name = str()
|
||||||
__pos_x = int()
|
__pos_x = int()
|
||||||
__pos_y = int()
|
__pos_y = int()
|
||||||
|
__color = (0,0,0)
|
||||||
__rectobjekt = pygame.Rect
|
__rectobjekt = pygame.Rect
|
||||||
|
__surface = MAINSCREEN
|
||||||
|
|
||||||
|
__movedirection = {"up":False, "down":False, "left":False, "right":False}
|
||||||
|
|
||||||
def __init__(self, name:str, posx:int, posy:int, *rect:pygame.Rect) -> None:
|
def __init__(self, name:str, posx_init:int=0, posy_init:int=0) -> None:
|
||||||
self.__name = name
|
self.__name = name
|
||||||
self.__pos_x = posx
|
self.__pos_x = posx_init
|
||||||
self.__pos_y = posy
|
self.__pos_y = posy_init
|
||||||
self.__rectobjekt = rect
|
#self.__rectobjekt = rect
|
||||||
|
|
||||||
|
def change_direction(self, direction:dict):
|
||||||
|
if(direction):
|
||||||
|
self.__movedirection[direction] = True
|
||||||
|
print(self.__movedirection[direction])
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def move(self, x):
|
def move(self, *speed:int):
|
||||||
MOVE_SPEED = 5
|
MOVE_SPEED = 1
|
||||||
#self.__rectobjekt.x += MOVE_SPEED
|
#self.__rectobjekt.x += MOVE_SPEED
|
||||||
print(self.__rectobjekt)
|
|
||||||
|
if(self.__movedirection['up']):
|
||||||
|
self.__movedirection['down'] = False
|
||||||
|
if(not speed): self.__pos_y -= MOVE_SPEED
|
||||||
|
else: self.__pos_y -= speed[0]
|
||||||
|
if(self.__pos_y <= -100):
|
||||||
|
self.__pos_y += 580
|
||||||
|
|
||||||
|
if(self.__movedirection['down']):
|
||||||
|
self.__movedirection['up'] = False
|
||||||
|
if(not speed): self.__pos_y += MOVE_SPEED
|
||||||
|
else: self.__pos_y += speed[0]
|
||||||
|
if(self.__pos_y >= (self.__surface.get_size()[1])+100): self.__pos_y = -100
|
||||||
|
|
||||||
|
if(self.__movedirection['left']):
|
||||||
|
self.__movedirection['right'] = False
|
||||||
|
if(not speed): self.__pos_x += MOVE_SPEED
|
||||||
|
else: self.__pos_x += speed[0]
|
||||||
|
|
||||||
|
if(self.__movedirection['right']):
|
||||||
|
self.__movedirection['left'] = False
|
||||||
|
if(not speed): self.__pos_x += MOVE_SPEED
|
||||||
|
else: self.__pos_x -= speed[0]
|
||||||
|
|
||||||
|
for key, value in self.__movedirection.items():
|
||||||
|
value = False
|
||||||
|
|
||||||
|
print("Objekt-Koordinaten= X: "+str(self.__rectobjekt.x)+" Y: "+str(self.__rectobjekt.y)+"", end="\r")
|
||||||
|
self.__movedirection['up'] = False
|
||||||
|
self.__movedirection['down'] = False
|
||||||
|
self.__movedirection['left'] = False
|
||||||
|
self.__movedirection['right'] = False
|
||||||
|
|
||||||
|
def draw(self):
|
||||||
|
#font = pygame.font.SysFont(None, 70)
|
||||||
|
#text = font.render("TEST", True, (0,0,0) )
|
||||||
|
self.__rectobjekt = pygame.draw.rect(self.__surface, self.__color, [self.__pos_x, self.__pos_y,100,100])
|
||||||
|
|
||||||
|
def get_rect(self):
|
||||||
|
return self.__rectobjekt
|
||||||
|
|
||||||
|
|
||||||
background = pygame.Surface((640,480)) #Erstellt eine Obfläche mit der Größe des Fensters
|
object1 = GameObjekt("Testobject")
|
||||||
rect2 = pygame.draw.rect(background,(0,255,255),(20,20,40,40))
|
|
||||||
|
|
||||||
rect1 = pygame.draw.ellipse(screen, (0,0,0), [ballpos_x, ballpos_y, 20, 20])
|
background = pygame.surface.Surface((640,480))
|
||||||
Player = GameObjekt("Test", 0,0,rect1)
|
|
||||||
|
|
||||||
|
invert = False
|
||||||
#Fenster-Hauptschleife
|
#Fenster-Hauptschleife
|
||||||
while active == True:
|
while active == True:
|
||||||
|
MAINSCREEN.fill((255,255,255))
|
||||||
for event in pygame.event.get():
|
for event in pygame.event.get():
|
||||||
if (event.type == pygame.QUIT):
|
if (event.type == pygame.QUIT):
|
||||||
print("Programm wird geschlossen!")
|
print("Programm wird geschlossen!")
|
||||||
@@ -54,31 +95,57 @@ while active == True:
|
|||||||
elif (event.type == pygame.KEYDOWN):
|
elif (event.type == pygame.KEYDOWN):
|
||||||
if (event.key == pygame.K_UP):
|
if (event.key == pygame.K_UP):
|
||||||
print("Keydown")
|
print("Keydown")
|
||||||
print(rect2.x)
|
object1.change_direction("up")
|
||||||
background.get_rect()
|
|
||||||
#rect1.move(ballpos_x, ballpos_y)
|
|
||||||
Player.move(5)
|
|
||||||
ballpos_y -= 10
|
|
||||||
elif (event.key == pygame.K_DOWN):
|
elif (event.key == pygame.K_DOWN):
|
||||||
print("Keydown")
|
print("Keydown")
|
||||||
|
object1.change_direction("down")
|
||||||
#rect1.move(ballpos_x, ballpos_y)
|
#rect1.move(ballpos_x, ballpos_y)
|
||||||
ballpos_y += 10
|
|
||||||
elif (event.key == pygame.K_RIGHT):
|
elif (event.key == pygame.K_RIGHT):
|
||||||
print("Keydown")
|
print("Keydown")
|
||||||
|
object1.change_direction("right")
|
||||||
#rect1.move(ballpos_x, ballpos_y)
|
#rect1.move(ballpos_x, ballpos_y)
|
||||||
ballpos_x += 10
|
ballpos_x += 10
|
||||||
elif (event.key == pygame.K_LEFT):
|
elif (event.key == pygame.K_LEFT):
|
||||||
print("Keydown")
|
print("Keydown")
|
||||||
|
object1.change_direction("left")
|
||||||
#rect1.move(ballpos_x, ballpos_y)
|
#rect1.move(ballpos_x, ballpos_y)
|
||||||
ballpos_x -= 10
|
ballpos_x -= 10
|
||||||
|
|
||||||
|
|
||||||
|
object1.draw()
|
||||||
|
object1.move(10)
|
||||||
|
|
||||||
|
|
||||||
|
"""
|
||||||
|
rect1 = pygame.draw.rect(MAINSCREEN, (0,0,0), [ballpos_x,ballpos_y,100,100])
|
||||||
|
if(not invert):
|
||||||
|
#if ballpos_x <= (MAINSCREEN.get_size()[0]): ballpos_x += 1
|
||||||
|
if ballpos_y <= (MAINSCREEN.get_size()[1]): ballpos_y += 1
|
||||||
|
#if(ballpos_x >= MAINSCREEN.get_size()[0]): ballpos_x = int(-100)
|
||||||
|
if(ballpos_y >= MAINSCREEN.get_size()[1]): ballpos_y = int(-100)
|
||||||
|
"""
|
||||||
|
|
||||||
|
"""
|
||||||
|
Lässt das Rechteck diagonal auf- und ablaufen
|
||||||
|
if(not invert):
|
||||||
|
if ballpos_x < (MAINSCREEN.get_size()[0]-100): ballpos_x += 1
|
||||||
|
if ballpos_y < (MAINSCREEN.get_size()[1]-100): ballpos_y += 1
|
||||||
|
|
||||||
|
else:
|
||||||
|
if ballpos_x != 0: ballpos_x -= 1
|
||||||
|
if ballpos_y != 0: ballpos_y -= 1
|
||||||
|
|
||||||
|
if(ballpos_x == (MAINSCREEN.get_size()[0]-100) and ballpos_y == (MAINSCREEN.get_size()[1]-100)):
|
||||||
|
invert = True
|
||||||
|
if(ballpos_x == 0 and ballpos_y == 0):
|
||||||
|
invert = False
|
||||||
|
"""
|
||||||
|
#print("Objekt-Koordinaten= X: "+str(rect1.x)+" Y: "+str(rect1.y)+"", end="\r")
|
||||||
|
|
||||||
#Displayflip sorgt dafür, dass das Fenster entsprechend der Tickrate aktualisiert wird
|
#Displayflip sorgt dafür, dass das Fenster entsprechend der Tickrate aktualisiert wird
|
||||||
#pygame.display.flip()
|
#pygame.display.flip()
|
||||||
rect2.move(100, 10)
|
|
||||||
screen.blit(background,(0,0))
|
|
||||||
|
|
||||||
pygame.display.flip()
|
pygame.display.flip()
|
||||||
clock.tick(60)
|
clock.tick(60)
|
||||||
|
|||||||
Reference in New Issue
Block a user