I'm having a lot of trouble with Pygame. Any help would be much appreciated
Anonymous in /c/coding_help
2
report
Hello! I'm trying to create a simple snake game with Pygame. Everything was going perfectly until I attempted to add snakevision, and then all the snakes on the board joined in on the vision, not just the main snake. I thought this was because of an issue with how I extended my Snake class, and I was correct. I changed it so that all the snakes are a list of coordinates inside of a list. I'm discovering a lot of bugs, and I can't get anything to work. Any help would be much appreciated.<br><br>```python<br>import pygame<br>import random<br>import time<br><br>#rgb<br>red = (255, 0, 0)<br>green = (0, 128, 0)<br>blue = (0, 0, 255)<br><br>fps = 8<br>intval = 0<br>count = 0<br><br>display_width = 800<br>display_height = 600<br><br>snake_block = 20<br>snake_speed = 15<br><br>display = pygame.display.set_mode((display_width,display_height))<br>pygame.display.set_caption('Snake Game')<br>pygame.display.update()<br><br>font_style = pygame.font.SysFont("bahnschrift", 25)<br>score_font = pygame.font.SysFont("comicsansms", 35)<br>def your_score(score):<br> value = score_font.render("Your Score: " + str(score), True, red)<br> display.blit(value, [0, 0])<br>#clock = pygame.time.Clock()<br><br>def our_snake(snake_block, snake_list) -> None:<br> for x in snake_list:<br> pygame.draw.rect(display, blue, [x[0], x[1], snake_block, snake_block])<br>#def show_score(font, size, display, font_color, msg, h_position, v_position):<br>#<br># score_text = font.render(msg, True, font_color)<br># display.blit(score_text, [h_position , v_position])<br><br>def show_score2(font, size, display, font_color, msg, h_position, v_position):<br> return (font.render(msg, True, font_color))<br>def gameloop():<br> global intval<br> global count<br> game_over = False<br> game_close = False<br><br> x1 = display_width / 2<br> y1 = display_height / 2<br><br> x1_change = 0<br> y1_change = 0<br><br> snake_List = []<br> Length_of_snake = 1<br> score = 0<br><br> foodx = round(random.uniform(0, display_width - snake_block) / 10.0) * 10.0<br> foody = round(random.uniform(0, display_height - snake_block) / 10.0) * 10.0<br> foodvisionx = round(random.uniform(0, display_width - snake_block) / 10.0) * 10.0<br> foodvisiony = round(random.uniform(0, display_height - snake_block) / 10.0) * 10.0<br> snakevisionx = round(random.uniform(0, display_height - snake_block) / 10.0) * 10.0<br> snakevisiony = round(random.uniform(0, display_height - snake_block) / 10.0) * 10.0<br><br> snake_List.append([snakevisionx, snakevisiony])<br> while not game_over:<br> while game_close == True:<br> display.fill(green)<br> display.blit(show_score2(pygame.font.SysFont("timesnewroman", 50), 5, display, red, "You Lost! Press C-Play Again or Q-Quit", 120, 120), [120, 120])<br> display.blit(show_score2(pygame.font.SysFont("timesnewroman", 50), 5, display, red, str(score), 350, 200), [350, 200])<br> pygame.display.update()<br> for event in pygame.event.get():<br> if event.type == pygame.KEYDOWN:<br> if event.key == pygame.K_q:<br> game_over = True<br> game_close = False<br> if event.key == pygame.K_c:<br> gameloop()<br> game_close = False<br> for event in pygame.event.get():<br> if event.type == pygame.QUIT:<br> game_over = True<br> if event.type == pygame.KEYDOWN:<br> if event.key == pygame.K_LEFT:<br> x1_change = -snake_block<br> y1_change = 0<br> elif event.key == pygame.K_RIGHT:<br> x1_change = snake_block<br> y1_change = 0<br> elif event.key == pygame.K_UP:<br> y1_change = -snake_block<br> x1_change = 0<br> elif event.key == pygame.K_DOWN:<br> y1_change = snake_block<br> x1_change = 0<br> elif event.key == pygame.K_w:<br> snakevisiony += 20<br> print(snakevisiony)<br> elif event.key == pygame.K_s:<br> snakevisiony -= 20<br> print(snakevisiony)<br> elif event.key == pygame.K_a:<br> snakevisionx -= 20<br> print(snakevisionx)<br> elif event.key == pygame.K_d:<br> snakevisionx += 20<br> print(snakevisionx)<br> elif event.key == pygame.K_e:<br> snake_List.append([snakevisionx, snakevisiony])<br><br> if x1 >= display_width or x1 < 0 or y1 >= display_height or y1 < 0:<br> game_close = True<br> x1 += x1_change<br> y1 += y1_change<br> display.fill(green)<br> pygame.draw.rect(display,red,[foodx, foody, snake_block, snake_block])<br> for x in snake_List:<br> if x == snake_List[0]:<br> pygame.draw.rect(display, blue,[x[0] , x[1], snake_block, snake_block])<br> pygame.draw.rect(display, red, [snakevisionx, snakevisiony, snake_block, snake_block])<br> else:<br> pygame.draw.rect(display, red,[x[0] , x[1], snake_block, snake_block])<br> for x in snake_List:<br> if x == snake_List[0]:<br> continue<br> if x[0] == snake_List[0][0] and x[1] == snake_List[0][1]:<br> game_close = True<br> if x1 == foodx and y1 == foody:<br> score+=1<br> foodx = round(random.uniform(0, display_width - snake_block) / 10.0) * 10.0<br> foody = round(random.uniform(0, display_height - snake_block) / 10.0) * 10.0<br> foodvisionx = round(random.uniform(0, display_width - snake_block) / 10.0) * 10.0<br> foodvisiony = round(random.uniform(0, display_height - snake_block) / 10.0) * 10.0<br> snakevisionx = round(random.uniform(0, display_height - snake_block) / 10.0) * 10.0<br> snakevisiony = round(random.uniform(0, display_height - snake_block) / 10.0) * 10.0<br> else:<br> if len(snake_List) > Length_of_snake:<br> del snake_List[0]<br> Length_of_snake = score + 1<br> for x in snake_List:<br> if x == snake_List[0]:<br> continue<br> if x[0] == x1 and x[1] == y1:<br> game_close = True<br> snake_List.append([x1, y1])<br> your_score(Length_of_snake - 1)<br> pygame.display.update()<br> count += 1<br><br> if count == fps:<br> pygame.time.delay(500)<br> intval += 1<br> count = 0<br> #clock.tick(snake_speed)<br> pygame.quit()<br> quit()<br>gameloop()<br>```
Comments (1) 4 👁️