learn-ai / scripts /snake-gpt-3.5.py
inflaton's picture
added py scripts
5a64e21
raw
history blame
3.81 kB
import pygame
import time
import random
pygame.init()
# Screen dimensions
screen_width = 800
screen_height = 600
# Colors
white = (255, 255, 255)
red = (213, 50, 80)
green = (0, 255, 0)
black = (0, 0, 0)
# Snake block size and speed
block_size = 20
snake_speed = 15
# Create the display
dis = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("Snake Game")
# Snake function to draw the snake
def our_snake(block_size, snake_list):
for x in snake_list:
pygame.draw.rect(dis, green, [x[0], x[1], block_size, block_size])
# Game loop
def game_loop():
game_over = False
game_close = False
# Initial position of the snake
snake_x = screen_width / 2
snake_y = screen_height / 2
# Initial speed of the snake
snake_x_change = 0
snake_y_change = 0
# Snake body (a list of coordinates)
snake_list = []
length_of_snake = 1
# Initial position of the food
food_x = (
round(random.randrange(0, screen_width - block_size) / block_size) * block_size
)
food_y = (
round(random.randrange(0, screen_height - block_size) / block_size) * block_size
)
while not game_over:
while game_close == True:
dis.fill(white)
font_style = pygame.font.SysFont(None, 50)
message = font_style.render(
"You Lost! Press Q-Quit or C-Play Again", True, black
)
dis.blit(message, [screen_width / 6, screen_height / 3])
pygame.display.update()
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_q:
game_over = True
game_close = False
if event.key == pygame.K_c:
game_loop()
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
snake_x_change = -block_size
snake_y_change = 0
elif event.key == pygame.K_RIGHT:
snake_x_change = block_size
snake_y_change = 0
elif event.key == pygame.K_UP:
snake_y_change = -block_size
snake_x_change = 0
elif event.key == pygame.K_DOWN:
snake_y_change = block_size
snake_x_change = 0
if (
snake_x >= screen_width
or snake_x < 0
or snake_y >= screen_height
or snake_y < 0
):
game_close = True
snake_x += snake_x_change
snake_y += snake_y_change
dis.fill(white)
pygame.draw.rect(dis, red, [food_x, food_y, block_size, block_size])
snake_head = []
snake_head.append(snake_x)
snake_head.append(snake_y)
snake_list.append(snake_head)
if len(snake_list) > length_of_snake:
del snake_list[0]
for x in snake_list[:-1]:
if x == snake_head:
game_close = True
our_snake(block_size, snake_list)
pygame.display.update()
if snake_x == food_x and snake_y == food_y:
food_x = (
round(random.randrange(0, screen_width - block_size) / block_size)
* block_size
)
food_y = (
round(random.randrange(0, screen_height - block_size) / block_size)
* block_size
)
length_of_snake += 1
pygame.display.update()
pygame.time.Clock().tick(snake_speed)
pygame.quit()
quit()
game_loop()