ich verzweifle an einem bestimmtem Problem seit knapp 3 Stunden und ich bin auf eure Hilfe angewiesen :C! Ich habe ein Snake spiel programmiert und mit Vektoren gearbeitet nun habe ich, wenn ich gestorben bin ein game over screen mit einem Button drauf erstellt. Clickt man auf diesen button kommt man zur Reset methode und diese soll das Game wieder starten lassen... Guess what? Tut sie nicht -.- und ich raff nicht wieso.... Da der code 350 Zeilen lang ist, werde ich mal die wichtigsten ausschnitte reinschicken :3(Ganz unten ist die Probhlem stelle)
self.body = [Vector2(7,8),Vector2(6,8),Vector2(5,8)]
self.direction = Vector2(1,0)
-
def move_snake(self):
if self.new_block == True:
self.body_copy = self.body[:]
self.body_copy.insert(0,self.body_copy[0] + self.direction)
self.body = self.body_copy[:]
self.new_block = False
else:
self.body_copy = self.body[:-1]
self.body_copy.insert(0,self.body_copy[0] + self.direction)
self.body = self.body_copy[:]
-
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_w and self.snake.direction != Vector2(0,1):
self.snake.direction = Vector2(0,-1)
...(Zeichen sparen)
-
def Colision_self(self):
for block in self.snake.body[1:]:
if block == self.snake.body[0]:
self.game_over()
def Hit_Wall(self):
if not 0 <= self.snake.body[0].x < cell_number_x:
self.game_over()
if not 0 <= self.snake.body[0].y < cell_number_y:
self.game_over()
def game_over(self):
font_go = pygame.font.SysFont("Calibri", 100, True, False)
You_reached = font_go.render("You reached: " + str(self.Counter), True, "White")
while go:
screen.fill((0, 0, 100))
screen.blit(You_reached,[30,100])
button1.Update()
button2.Update()
for event in pygame.event.get( ):
if event.type == pygame.QUIT:
pygame.quit( )
sys.exit( )
pygame.display.flip( )
FPS.tick(45)
-
def check_click(self): <- bereits in der Button class
mouse_pos = pygame.mouse.get_pos()
if self.top_rect.collidepoint(mouse_pos):
self.top_color = "Blue"
if pygame.mouse.get_pressed()[0]:
self.dynamic_elevaition = 0
self.pressed = True
self.Restart()
def Restart(self):
Snake.body = [Vector2(7, 8), Vector2(6, 8), Vector2(5, 8)]
(auch wenn ich jeden einzelen teil von Body mit vektoren zb. Vector2(10,0) subtrahiere passiert nichts...)
while go:
screen.fill((0, 90, 10))
snake.draw_grass( )
for event in pygame.event.get( ):
main_game.Quit( )
if event.type == SCRREEN_UPDATE:
if game_active:
main_game.update( )
else:
main_game.game_over( )
main_game.movement( )
main_game.counter( )
main_game.draw_elements( )
pygame.display.flip( )
FPS.tick(45)