## @file Snake_2.o.py # @author Andy Hameed, Usman Irfan # @brief implements gameplay and connects the different components of the game # @date 11/09/2018 from random import randint from Snake import * from Food import * #defining a list to update snanke's length snake_loc = [] #variable to increment snake's length, initially it would be 1 snake_length = 1 speed = 70 # 0 gives (- direction) # 1 gives (+ direction) direction = 1 # 0 - x-axis , 1 - y-axis axis = 0 score = 0 # parameters for initializing food on the screen food_location = [] food_x = randint(0, grid_length - 1) * size food_y = randint(0, grid_length - 1) * size food_location = [food_x, food_y] ##initialize snake and draw snake body somewhere on the screen snake = Snake(size, 0, 20, 1) pygame.draw.rect(win, red , [x,y, size, size]) food = Food(size) #Loop through the events as long as the game is running run = True while run: #delay controls part of speed pygame.time.delay(speed) for event in pygame.event.get(): if event.type == pygame.QUIT: run = False #Each event type has an integer assigned to it. KEYDOWN has the code 2 if event.type == pygame.KEYDOWN: if (event.key == pygame.K_LEFT): # if snake is moving up or down, turn left, otherwise don't turn if (snake.axis): snake.direct = -1 snake.axis = 0 if (event.key == pygame.K_RIGHT): #if snake is moving up or down turn right, otherwise dont turn if (snake.axis): snake.direct = 1 snake.axis = 0 if (event.key == pygame.K_UP): #if snake is moving left or right turn up, otherwise dont turn if (not snake.axis): snake.direct = -1 snake.axis = 1 if (event.key == pygame.K_DOWN): #if snake is moving left or right turn down, otherwise dont turn if (not snake.axis): snake.direct = 1 snake.axis = 1 #Snake moving depending on axis and direction if (snake.axis): y += (size)*snake.direct else: x += (size)*snake.direct #Boundary conditions for snake hitting window edge if (x < 0 or y < 0 or y > screenSize - size or x > screenSize - size): pygame.quit() #for now, quit the game when snake hits boundary ## snake.die() #---------------------FOR WRAPING SNAKE AROUND WINDOW--------------------- ## if x < 0: ## #x = 0 ## x = screenSize - size ## if y < 0: ## #y = 0 ## y = screenSize - size ## if y > screenSize - size: ## #y = 500 - size ## y = 0 ## if x > screenSize - size: ## #x = 500 - size ## x = 0 #------------------------------------------------- if(abs(x - food_location[0]) < 15 and abs(y - food_location[1]) < 15): score += 10 #increment the length by 3 unit every time snake_length += 3 win.fill(white) font = pygame.font.SysFont("times",30) text = font.render("Score = " + str(score),True,[0,0,0]) win.blit(text,(0,0)) if ([x,y] in snake_loc) and snake_length > 1: pygame.time.delay(1000) pygame.quit() #quit for now, but should return to main menu snake_head = [] snake_head.append(x) snake_head.append(y) snake_loc.append(snake_head) #function to print #consumption of food block food.redraw_food(x, y, food_location, screenSize, snake_loc) snake_blocks = len(snake_loc) #Draw food item food.draw_food(food_location) if snake_blocks > snake_length: #keep updating the new block del snake_loc[0] ''' Logic for updating the length is taken from: CodeWithHarry, CodeWithHarry. “Snakes Game: Length Increment Logic - Python Game Development Using Pygame In Hindi #17.” YouTube, YouTube, 2 Oct. 2018, www.youtube.com/watch?v=mkGJb0W03DM&index=17&list=PLu0W_9lII9ailUQcxEPZrWgDoL36BtPYb. ''' #Draw snake snake.draw(snake_loc) #update display pygame.display.update() pygame.quit()