Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pygame
- import time
- import random
- pygame.init()
- white = (255, 255, 255)
- black = (0, 0, 0)
- red = (255, 0, 0)
- green = (0, 155, 0)
- blue = (0, 0, 255)
- display_width = 1440
- display_height = 900
- gameDisplay = pygame.display.set_mode((display_width, display_height))
- pygame.display.set_caption('Slither')
- icon = pygame.image.load("icon.png")
- pygame.display.set_icon(icon)
- img = pygame.image.load("snakehead.png")
- appleimg = pygame.image.load("apple.png")
- clock = pygame.time.Clock()
- block_size = 20
- FPS = 17
- direction = "right"
- smallfont = pygame.font.SysFont ("arial", 25)
- medfont = pygame.font.SysFont ("arial", 50)
- largefont = pygame.font.SysFont ("arial", 80)
- def game_intro():
- intro = True
- while intro:
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- pygame.quit()
- quit()
- if event.type == pygame.KEYDOWN:
- if event.key == pygame.K_c:
- intro = False
- if event.key == pygame.K_q:
- pygame.quit()
- quit()
- gameDisplay.fill(white)
- message_to_screen("Welcome to the Snake Game!",
- green,
- -100,
- size="large")
- message_to_screen("The goal of the game is to eat the red apples",
- black,
- -30)
- message_to_screen("You get longer each time you eat an apple",
- black,
- 10)
- message_to_screen("If you run into yourself, or the edge of the map, you die.",
- black,
- 50)
- message_to_screen("Press C to play or Q to quit",
- black,
- 180)
- pygame.display.update()
- clock.tick(17)
- font = pygame.font.SysFont(None, 25)
- def snake(block_size, snakeList):
- if direction == "right":
- head = pygame.transform.rotate(img, 270)
- if direction == "left":
- head = pygame.transform.rotate(img, 90)
- if direction == "up":
- head = img
- if direction == "down":
- head = pygame.transform.rotate(img, 180)
- gameDisplay.blit(head, (snakeList[-1][0], snakeList[-1][1]))
- for XnY in snakeList[:-1]:
- pygame.draw.rect(gameDisplay, green, [XnY[0], XnY[1], block_size, block_size])
- def text_objects(text, color, size):
- if size == "small":
- textSurface = smallfont.render(text,True, color)
- elif size == "medium":
- textSurface = medfont.render(text,True, color)
- elif size == "large":
- textSurface = largefont.render(text,True, color)
- textSurface = font.render(text, True, color)
- return textSurface, textSurface.get_rect()
- def message_to_screen(msg,color, y_displace=0, size = "small"):
- textSurf, textRect = text_objects(msg, color, size)
- textRect.center = (display_width / 2), (display_height / 2) +y_displace
- gameDisplay.blit(textSurf, textRect)
- ## def score_to_screen(msg,color):
- ## textSurf, textRect = text_objects(msg, color)
- ## textRect.center = (display_width / 8), (display_height / 8)
- ## gameDisplay.blit(textSurf, textRect)
- def gameLoop():
- global direction
- direction = "right"
- snakeLength = 1
- gameExit = False
- gameOver = False
- lead_x = display_width / 2
- lead_y = display_height / 2
- lead_x_change = 0
- lead_y_change = 0
- snakeList = []
- snakeLength = 1
- while not gameExit:
- while gameOver == True:
- gameDisplay.fill(white)
- message_to_screen("Game over",
- red,
- -50,
- size = "large")
- message_to_screen("Press C to play again or Q to quit",
- black,
- 50,
- size = "medium")
- pygame.display.update()
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- gameExit = True
- gameOver = False
- if event.type == pygame.KEYDOWN:
- if event.key == pygame.K_q:
- gameExit = True
- gameOver = False
- if event.key == pygame.K_c:
- gameLoop()
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- gameExit = True
- if event.type == pygame.KEYDOWN:
- if event.key == pygame.K_LEFT:
- direction = "left"
- lead_x_change = -block_size
- lead_y_change = 0
- elif event.key == pygame.K_RIGHT:
- direction = "right"
- lead_x_change = block_size
- lead_y_change = 0
- elif event.key == pygame.K_UP:
- direction = "up"
- lead_y_change = -block_size
- lead_x_change = 0
- elif event.key == pygame.K_DOWN:
- direction = "down"
- lead_y_change = block_size
- lead_x_change = 0
- if lead_x >= display_width or lead_x < 0 or lead_y >= display_height or lead_y < 0:
- gameOver = True
- lead_x += lead_x_change
- lead_y += lead_y_change
- gameDisplay.fill(black)
- AppleThickness = 30
- #pygame.draw.rect(gameDisplay, red, [randAppleX, randAppleY, AppleThickness, AppleThickness])
- snakeHead = []
- snakeHead.append(lead_x)
- snakeHead.append(lead_y)
- snakeList.append(snakeHead)
- if len(snakeList) > snakeLength:
- del snakeList[0]
- for eachSegment in snakeList[:-1]:
- if eachSegment == snakeHead:
- gameOver = True
- ## score_to_screen("Score: " + str(snakeLength - 1), blue)
- ## snake(block_size, snakeList)
- snake(block_size, snakeList)
- pygame.display.update()
- snakeLength += 1
- clock.tick(FPS)
- pygame.quit()
- quit()
- game_intro()
- gameLoop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement