Snake tall
Snake gameunknown
csharp
a year ago
2.9 kB
6
Indexable
import pygame
import random
import time
# Initialize Pygame
pygame.init()
# Screen dimensions
WIDTH, HEIGHT = 800, 600
# Colors
WHITE = (255, 255, 255)
GREEN = (0, 255, 0)
RED = (255, 0, 0)
BLACK = (0, 0, 0)
# Set up the display
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Snake Game")
# Clock and font
clock = pygame.time.Clock()
font = pygame.font.SysFont("comicsans", 35)
# Snake settings
snake_pos = [100, 50] # [x, y]
snake_body = [[100, 50], [90, 50], [80, 50]]
snake_direction = 'RIGHT'
change_to = snake_direction
speed = 15
# Ball settings
ball_pos = [random.randrange(1, (WIDTH // 10)) * 10, random.randrange(1, (HEIGHT // 10)) * 10]
score = 0
def message(text, color, x, y):
"""Display a message on the screen."""
msg = font.render(text, True, color)
screen.blit(msg, [x, y])
# Main game loop
def game():
global snake_pos, snake_body, snake_direction, change_to, ball_pos, score
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP and not change_to == 'DOWN':
change_to = 'UP'
if event.key == pygame.K_DOWN and not change_to == 'UP':
change_to = 'DOWN'
if event.key == pygame.K_LEFT and not change_to == 'RIGHT':
change_to = 'LEFT'
if event.key == pygame.K_RIGHT and not change_to == 'LEFT':
change_to = 'RIGHT'
# Update direction
snake_direction = change_to
if snake_direction == 'UP':
snake_pos[1] -= 10
if snake_direction == 'DOWN':
snake_pos[1] += 10
if snake_direction == 'LEFT':
snake_pos[0] -= 10
if snake_direction == 'RIGHT':
snake_pos[0] += 10
# Snake body growing
snake_body.insert(0, list(snake_pos))
if snake_pos == ball_pos:
score += 1
ball_pos = [random.randrange(1, (WIDTH // 10)) * 10, random.randrange(1, (HEIGHT // 10)) * 10]
else:
snake_body.pop()
# Game over conditions
if (
snake_pos[0] < 0 or
snake_pos[0] > WIDTH-10 or
snake_pos[1] < 0 or
snake_pos[1] > HEIGHT-10
):
running = False
for block in snake_body[1:]:
if snake_pos == block:
running = False
# Graphics
screen.fill(BLACK)
for block in snake_body:
pygame.draw.rect(screen, GREEN, pygame.Rect(block[0], block[1], 10, 10))
pygame.draw.rect(screen, RED, pygame.Rect(ball_pos[0], ball_pos[1], 10, 10))
message(f"Score: {score}", WHITE, 10, 10)
pygame.display.flip()
clock.tick(speed)
time.sleep(2)
pygame.quit()
quit()
game()Editor is loading...
Leave a Comment