From d87629598278a0318bd378989463454a43766635 Mon Sep 17 00:00:00 2001 From: Bionical-X <84950744+Bionical-X@users.noreply.github.com> Date: Wed, 8 Feb 2023 16:15:06 -0500 Subject: [PATCH 1/2] Add files via upload --- snakeGame.py | 187 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 176 insertions(+), 11 deletions(-) diff --git a/snakeGame.py b/snakeGame.py index 1c67890..2d710e9 100644 --- a/snakeGame.py +++ b/snakeGame.py @@ -1,14 +1,179 @@ +# importing libraries import pygame +import time import random -class Game: - def __init__(self, width, height): - pygame.display.set_Caption("SnakeGame") - self.game_width = width - self.game_height = height - self.gameDisplay = pygame.display.set_mode((width, height + 60)) - #self.bg = pygame.image.load("img/background.png") - self.crash = False - self.player = Player(self) - self.food = Food() - self.score = 0 +snake_speed = 15 + +# Window size +window_x = 720 +window_y = 480 + +# defining colors +black = pygame.Color(0, 0, 0) +white = pygame.Color(255, 255, 255) +red = pygame.Color(255, 0, 0) +green = pygame.Color(0, 255, 0) +blue = pygame.Color(0, 0, 255) + +# Initialising pygame +pygame.init() + +# Initialise game window +pygame.display.set_caption('GeeksforGeeks Snakes') +game_window = pygame.display.set_mode((window_x, window_y)) + +# FPS (frames per second) controller +fps = pygame.time.Clock() + +# defining snake default position +snake_position = [100, 50] + +# defining first 4 blocks of snake body +snake_body = [[100, 50], + [90, 50], + [80, 50], + [70, 50] + ] +# fruit position +fruit_position = [random.randrange(1, (window_x//10)) * 10, + random.randrange(1, (window_y//10)) * 10] + +fruit_spawn = True + +# setting default snake direction towards +# right +direction = 'RIGHT' +change_to = direction + +# initial score +score = 0 + +# displaying Score function +def show_score(choice, color, font, size): + + # creating font object score_font + score_font = pygame.font.SysFont(font, size) + + # create the display surface object + # score_surface + score_surface = score_font.render('Score : ' + str(score), True, color) + + # create a rectangular object for the text + # surface object + score_rect = score_surface.get_rect() + + # displaying text + game_window.blit(score_surface, score_rect) + +# game over function +def game_over(): + + # creating font object my_font + my_font = pygame.font.SysFont('times new roman', 50) + + # creating a text surface on which text + # will be drawn + game_over_surface = my_font.render( + 'Your Score is : ' + str(score), True, red) + + # create a rectangular object for the text + # surface object + game_over_rect = game_over_surface.get_rect() + + # setting position of the text + game_over_rect.midtop = (window_x/2, window_y/4) + + # blit will draw the text on screen + game_window.blit(game_over_surface, game_over_rect) + pygame.display.flip() + + # after 2 seconds we will quit the program + time.sleep(2) + + # deactivating pygame library + pygame.quit() + + # quit the program + quit() + + +# Main Function +while True: + + # handling key events + for event in pygame.event.get(): + if event.type == pygame.KEYDOWN: + if event.key == pygame.K_UP: + change_to = 'UP' + if event.key == pygame.K_DOWN: + change_to = 'DOWN' + if event.key == pygame.K_LEFT: + change_to = 'LEFT' + if event.key == pygame.K_RIGHT: + change_to = 'RIGHT' + + # If two keys pressed simultaneously + # we don't want snake to move into two + # directions simultaneously + if change_to == 'UP' and direction != 'DOWN': + direction = 'UP' + if change_to == 'DOWN' and direction != 'UP': + direction = 'DOWN' + if change_to == 'LEFT' and direction != 'RIGHT': + direction = 'LEFT' + if change_to == 'RIGHT' and direction != 'LEFT': + direction = 'RIGHT' + + # Moving the snake + if direction == 'UP': + snake_position[1] -= 10 + if direction == 'DOWN': + snake_position[1] += 10 + if direction == 'LEFT': + snake_position[0] -= 10 + if direction == 'RIGHT': + snake_position[0] += 10 + + # Snake body growing mechanism + # if fruits and snakes collide then scores + # will be incremented by 10 + snake_body.insert(0, list(snake_position)) + if snake_position[0] == fruit_position[0] and snake_position[1] == fruit_position[1]: + score += 10 + fruit_spawn = False + else: + snake_body.pop() + + if not fruit_spawn: + fruit_position = [random.randrange(1, (window_x//10)) * 10, + random.randrange(1, (window_y//10)) * 10] + + fruit_spawn = True + game_window.fill(black) + + for pos in snake_body: + pygame.draw.rect(game_window, green, + pygame.Rect(pos[0], pos[1], 10, 10)) + pygame.draw.rect(game_window, white, pygame.Rect( + fruit_position[0], fruit_position[1], 10, 10)) + + # Game Over conditions + if snake_position[0] < 0 or snake_position[0] > window_x-10: + game_over() + if snake_position[1] < 0 or snake_position[1] > window_y-10: + game_over() + + # Touching the snake body + for block in snake_body[1:]: + if snake_position[0] == block[0] and snake_position[1] == block[1]: + game_over() + + # displaying score countinuously + show_score(1, white, 'times new roman', 20) + + # Refresh game screen + pygame.display.update() + + # Frame Per Second /Refresh Rate + fps.tick(snake_speed) From 19b505884a1706e86cb4109f03feb83f26df33bd Mon Sep 17 00:00:00 2001 From: Bionical-X <84950744+Bionical-X@users.noreply.github.com> Date: Fri, 10 Feb 2023 13:10:36 -0500 Subject: [PATCH 2/2] this is the code with blocks --- snakeGameBlockEd.py | 193 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 193 insertions(+) create mode 100644 snakeGameBlockEd.py diff --git a/snakeGameBlockEd.py b/snakeGameBlockEd.py new file mode 100644 index 0000000..33df354 --- /dev/null +++ b/snakeGameBlockEd.py @@ -0,0 +1,193 @@ +# importing libraries +import pygame +import time +import random + +snake_speed = 15 + +# Window size +window_x = 720 +window_y = 480 + +# defining colors +black = pygame.Color(0, 0, 0) +white = pygame.Color(255, 255, 255) +red = pygame.Color(255, 0, 0) +green = pygame.Color(0, 255, 0) +blue = pygame.Color(0, 0, 255) + +# Initialising pygame +pygame.init() + +# Initialise game window +pygame.display.set_caption('GeeksforGeeks Snakes') +game_window = pygame.display.set_mode((window_x, window_y)) + +# FPS (frames per second) controller +fps = pygame.time.Clock() + +# defining snake default position +snake_position = [100, 50] + +# defining first 4 blocks of snake body +snake_body = [[100, 50], + [90, 50], + [80, 50], + [70, 50] + ] +# fruit position +fruit_position = [random.randrange(1, (window_x//10)) * 10, + random.randrange(1, (window_y//10)) * 10] + +fruit_spawn = True + +# walls +wall_positions = [] + +# setting default snake direction towards +# right +direction = 'RIGHT' +change_to = direction + +# initial score +score = 0 + +# displaying Score function +def show_score(choice, color, font, size): + + # creating font object score_font + score_font = pygame.font.SysFont(font, size) + + # create the display surface object + # score_surface + score_surface = score_font.render('Score : ' + str(score), True, color) + + # create a rectangular object for the text + # surface object + score_rect = score_surface.get_rect() + + # displaying text + game_window.blit(score_surface, score_rect) + +# game over function +def game_over(): + + # creating font object my_font + my_font = pygame.font.SysFont('times new roman', 50) + + # creating a text surface on which text + # will be drawn + game_over_surface = my_font.render( + 'Your Score is : ' + str(score), True, red) + + # create a rectangular object for the text + # surface object + game_over_rect = game_over_surface.get_rect() + + # setting position of the text + game_over_rect.midtop = (window_x/2, window_y/4) + + # blit will draw the text on screen + game_window.blit(game_over_surface, game_over_rect) + pygame.display.flip() + + # after 2 seconds we will quit the program + time.sleep(2) + + # deactivating pygame library + pygame.quit() + + # quit the program + quit() + + +# Main Function +while True: + + # handling key events + for event in pygame.event.get(): + if event.type == pygame.KEYDOWN: + if event.key == pygame.K_UP: + change_to = 'UP' + if event.key == pygame.K_DOWN: + change_to = 'DOWN' + if event.key == pygame.K_LEFT: + change_to = 'LEFT' + if event.key == pygame.K_RIGHT: + change_to = 'RIGHT' + + # If two keys pressed simultaneously + # we don't want snake to move into two + # directions simultaneously + if change_to == 'UP' and direction != 'DOWN': + direction = 'UP' + if change_to == 'DOWN' and direction != 'UP': + direction = 'DOWN' + if change_to == 'LEFT' and direction != 'RIGHT': + direction = 'LEFT' + if change_to == 'RIGHT' and direction != 'LEFT': + direction = 'RIGHT' + + # Moving the snake + if direction == 'UP': + snake_position[1] -= 10 + if direction == 'DOWN': + snake_position[1] += 10 + if direction == 'LEFT': + snake_position[0] -= 10 + if direction == 'RIGHT': + snake_position[0] += 10 + + # Snake body growing mechanism + # if fruits and snakes collide then scores + # will be incremented by 10 + snake_body.insert(0, list(snake_position)) + if snake_position[0] == fruit_position[0] and snake_position[1] == fruit_position[1]: + score += 10 + fruit_spawn = False + else: + snake_body.pop() + + if not fruit_spawn: + fruit_position = [random.randrange(1, (window_x//10)) * 10, + random.randrange(1, (window_y//10)) * 10] + wall_positions.append([random.randrange(1, (window_x//10)) * 10, random.randrange(1, (window_y//10))*10]) + + #All this code does is enuse that no frutis spawn in walls + while fruit_position in wall_positions: + fruit_position = [random.randrange(1, (window_x//10)) * 10, + random.randrange(1, (window_y//10)) * 10] + + + fruit_spawn = True + game_window.fill(black) + + for pos in snake_body: + pygame.draw.rect(game_window, green, + pygame.Rect(pos[0], pos[1], 10, 10)) + pygame.draw.rect(game_window, white, pygame.Rect( + fruit_position[0], fruit_position[1], 10, 10)) + for wall in wall_positions: + pygame.draw.rect(game_window, blue, pygame.Rect(wall[0], wall[1], 10,10)) + + # Game Over conditions + if snake_position[0] < 0 or snake_position[0] > window_x-10: + game_over() + if snake_position[1] < 0 or snake_position[1] > window_y-10: + game_over() + if snake_position in wall_positions: + game_over() + + # Touching the snake body + for block in snake_body[1:]: + if snake_position[0] == block[0] and snake_position[1] == block[1]: + game_over() + + # displaying score countinuously + show_score(1, white, 'times new roman', 20) + + # Refresh game screen + pygame.display.update() + + # Frame Per Second /Refresh Rate + fps.tick(snake_speed)