def loop(self): clock = pygame.time.Clock() snake = Snake(self.display) x_change = 0 y_change = 0 while True: for event in pygame.event.get(): if event.type == pygame.QUIT: exit() # Detect Arrow key movement elif event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: x_change = -Config['snake']['speed'] y_change = 0 elif event.key == pygame.K_RIGHT: x_change = Config['snake']['speed'] y_change = 0 elif event.key == pygame.K_UP: x_change = 0 y_change = -Config['snake']['speed'] elif event.key == pygame.K_DOWN: x_change = 0 y_change = Config['snake']['speed'] # Fill background and draw game area self.display.fill(Config['colors']['green']) pygame.draw.rect(self.display, Config['colors']['black'], [ Config['game']['bumper_size'], Config['game']['bumper_size'], Config['game']['height'] - Config['game']['bumper_size'] * 2, Config['game']['width'] - Config['game']['bumper_size'] * 2 ]) # Snake movement snake.move(x_change, y_change) snake.draw() # Text pygame.font.init() font = pygame.font.Font('./assets/Now-Regular.otf', 28) score_text = 'Score: {}'.format(self.score) score = font.render(score_text, True, Config['colors']['white']) title = font.render('Anaconda', True, Config['colors']['white']) title_rect = title.get_rect(center=(Config['game']['width'] / 2, Config['game']['bumper_size'] / 2)) score_rect = score.get_rect( center=(500 / 2, Config['game']['height'] - Config['game']['bumper_size'] / 2)) self.display.blit(score, score_rect) self.display.blit(title, title_rect) pygame.display.update() clock.tick(Config['game']['fps'])
def loop(self): clock = pygame.time.Clock() snake = Snake(self.display) x_change = 0 y_change = 0 while True: for event in pygame.event.get(): if event.type == pygame.QUIT: exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: x_change = -Settings['snake']['speed'] y_change = 0 elif event.key == pygame.K_RIGHT: x_change = Settings['snake']['speed'] y_change = 0 elif event.key == pygame.K_UP: x_change = 0 y_change = -Settings['snake']['speed'] elif event.key == pygame.K_DOWN: x_change = 0 y_change = Settings['snake']['speed'] self.display.fill(Settings['colors']['green']) pygame.draw.rect(self.display, Settings['colors']['black'], [ Settings['game']['bumper_size'], Settings['game']['bumper_size'], Settings['game']['height'] - Settings['game']['bumper_size'] * 2, Settings['game']['width'] - Settings['game']['bumper_size'] * 2 ]) snake.move(x_change, y_change) snake.draw() pygame.font.init() font = pygame.font.Font('./assets/Now-Regular.otf', 28) score_text = 'Score: {}'.format(self.score) score = font.render(score_text, True, Settings['colors']['white']) title = font.render('Anaconda', True, Settings['colors']['white']) title_rect = title.get_rect(center=(Settings['game']['width'] / 2, 10)) score_rect = score.get_rect(center=(500 / 2, Settings['game']['height'] - 10)) self.display.blit(score, score_rect) self.display.blit(title, title_rect) pygame.display.update() clock.tick(Settings['game']['fps'])
def main(): display = pygame.display.set_mode( (Config['game']['width'], Config['game']['height'])) pygame.display.set_caption(Config['game']['caption']) rl_agent = None if len(sys.argv) > 1 and sys.argv[1] == "-rl": rl_agent = DQNAgent() game = Game(display, rl_agent) apple = Apple(game.display) snake = Snake(game.display) game.rl_loop(snake, apple) print(game.scores) else: game = Game(display, rl_agent) game.loop()
def main(): win = pygame.display.set_mode((Constants.WIDTH, Constants.WIDTH)) pygame.display.set_caption("Snake Game") snake = Snake(Constants.SNAKE_COLOR) cookie = Cookie(snake) flag = True clock = pygame.time.Clock() # create an object to help track time while flag: # pause the program for an amount of time pygame.time.delay(90) # clock.tick(FPS) # game will be capped at FPS fps snake.move() Utils.check_crossing(snake, cookie) Utils.redraw_window(win, snake, cookie)
def loop(self): clock = pygame.time.Clock() snake = Snake(self.display) apple = Apple(self.display) x_change = 0 y_change = 0 self.score = 0 while True: for event in pygame.event.get(): if event.type == pygame.QUIT: exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: x_change = -Config['snake']['speed'] y_change = 0 elif event.key == pygame.K_RIGHT: x_change = Config['snake']['speed'] y_change = 0 elif event.key == pygame.K_UP: x_change = 0 y_change = -Config['snake']['speed'] elif event.key == pygame.K_DOWN: x_change = 0 y_change = Config['snake']['speed'] # Fill background and draw game area self.display.fill(Config['colors']['green']) pygame.draw.rect(self.display, Config['colors']['black'], [ Config['game']['bumper_size'], Config['game']['bumper_size'], Config['game']['height'] - Config['game']['bumper_size'] * 2, Config['game']['width'] - Config['game']['bumper_size'] * 2 ]) # Draw an apple apple_rect = apple.draw() # Move and Re-Draw Snake snake.move(x_change, y_change) snake_rect = snake.draw() snake.draw_body() # Detect collison with wall bumper_x = Config['game']['width'] - Config['game']['bumper_size'] bumper_y = Config['game']['height'] - Config['game']['bumper_size'] if (snake.x_pos < Config['game']['bumper_size'] or snake.y_pos < Config['game']['bumper_size'] or snake.x_pos + Config['snake']['width'] > bumper_x or snake.y_pos + Config['snake']['height'] > bumper_y): self.loop() # Detect collision with apple if apple_rect.colliderect(snake_rect): apple.randomize() self.score += 1 snake.eat() # Collide with Self if len(snake.body) >= 1: for cell in snake.body: if snake.x_pos == cell[0] and snake.y_pos == cell[1]: self.loop() # Initialize font and draw title and score text pygame.font.init() font = pygame.font.Font('./assets/Now-Regular.otf', 28) score_text = 'Score: {}'.format(self.score) score = font.render(score_text, True, Config['colors']['white']) title = font.render('Anaconda', True, Config['colors']['white']) title_rect = title.get_rect(center=(Config['game']['width'] / 2, Config['game']['bumper_size'] / 2)) score_rect = score.get_rect( center=(500 / 2, Config['game']['height'] - Config['game']['bumper_size'] / 2)) self.display.blit(score, score_rect) self.display.blit(title, title_rect) pygame.display.update() clock.tick(Config['game']['fps'])
def loop(self): clock = pygame.time.Clock() self.score = 0 apple = Apple(self.display) snake = Snake(self.display) x_change = 0 y_change = 0 while True: # This code below will be called for each frame # Iterate through our user input events for event in pygame.event.get(): if event.type == pygame.QUIT: exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: x_change = -Config['snake']['speed'] y_change = 0 elif event.key == pygame.K_RIGHT: x_change = Config['snake']['speed'] y_change = 0 elif event.key == pygame.K_UP: x_change = 0 y_change = -Config['snake']['speed'] elif event.key == pygame.K_DOWN: x_change = 0 y_change = Config['snake']['speed'] self.display.fill(Config['colors']['green']) pygame.draw.rect( self.display, Config['colors']['black'], [ Config['game']['bumper_size'], Config['game']['bumper_size'], Config['game']['width'] - Config['game']['bumper_size']*2, Config['game']['height'] - Config['game']['bumper_size']*2 ] ) apple_rect = apple.draw() snake.move(x_change, y_change) snake_rect = snake.draw() snake.draw_body() #Eating an apple if apple_rect.colliderect(snake_rect): apple.randomize() snake.eat() self.score += 1 # Handling collision bumper_x = Config['game']['width'] - Config['game']['bumper_size'] bumper_y = Config['game']['height'] - Config['game']['bumper_size'] if ( snake.x_pos < Config['game']['bumper_size'] or snake.y_pos < Config['game']['bumper_size'] or snake.x_pos + Config['snake']['width'] > bumper_x or snake.y_pos + Config['snake']['height'] > bumper_y or (snake.x_pos, snake.y_pos) in snake.body ): new_display = pygame.display.set_mode((Config['game']['width'], Config['game']['height'])) pygame.display.set_caption(Config['game']['caption']) new_game = Game(new_display, self.rl_agent) new_game.loop() ## Handling score and title pygame.font.init() font = pygame.font.Font('./assets/Now-Regular.otf', 28) score_text = 'Score: {}'.format(self.score) score = font.render(score_text, True, Config['colors']['white']) title = font.render('Anaconda', True, Config['colors']['white']) title_rect = title.get_rect( center=( Config['game']['width'] / 2, Config['game']['bumper_size'] / 2 ) ) score_rect = score.get_rect( center=( Config['game']['width'] / 2, Config['game']['height'] - Config['game']['bumper_size'] / 2 ) ) self.display.blit(score, score_rect) self.display.blit(title, title_rect) pygame.display.update() #Slows the loop iteration rate down to the rate of the game. #It accepts a number of ticks per second, so we have set our game timer to 30 frames per second. clock.tick(Config['game']['fps'])
def loop(self): clock = pygame.time.Clock() #get time (initializing time) apple = Apple(self.display) snake = Snake(self.display) x_change = 0 y_change = 0 self.score = 0 while True: #pygame.event.get() returns all the events in queue #so we are iterating such events in queue for event in pygame.event.get(): #user input events if event.type == pygame.QUIT: #type such as mouse,keyboard,exit the application exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: self.pause = True self.paused(Config['game']['width'] / 2, Config['game']['height'] / 4, Config['game']['width'] * 0.25, Config['game']['height'] * 0.1, Config['colors']['white']) #print("Came out of pause") if event.key == pygame.K_LEFT: x_change = -Config['snake']['speed'] y_change = 0 elif event.key == pygame.K_RIGHT: x_change = Config['snake']['speed'] y_change = 0 elif event.key == pygame.K_UP: y_change = -Config['snake']['speed'] x_change = 0 elif event.key == pygame.K_DOWN: y_change = Config['snake']['speed'] x_change = 0 self.display.fill(Config['colors']['brown']) #wipe old position pygame.draw.rect(self.display, Config['colors']['black'], [ Config['game']['bumper_size'], Config['game']['bumper_size'], Config['game']['height'] - Config['game']['bumper_size'] * 2, Config['game']['width'] - Config['game']['bumper_size'] * 2 ]) apple_rect = apple.draw() snake.move(x_change, y_change) snake_rect = snake.draw() # bumper_x = Config['game']['width'] - Config['game']['bumper_size'] bumper_y = Config['game']['height'] - Config['game']['bumper_size'] if (snake.x_pos < 30 or snake.y_pos < 30 or snake.x_pos + Config['snake']['width'] > bumper_x or snake.y_pos + Config['snake']['height'] > bumper_y): self.end_screen(self.score) if apple_rect.colliderect( snake_rect ): #pygame colliderect checks if two rectangles overlap apple.randomize() snake.eat() self.score += 1 if len(snake.body) >= 1: for cell in snake.body: if snake.x_pos == cell[0] and snake.y_pos == cell[1]: self.end_screen(self.score) pygame.font.init() font = pygame.font.Font('./assets/Now-Regular.otf', 28) #load font from assets #font in object score_text = 'Score: {} '.format(self.score) score = font.render(score_text, True, Config['colors']['white']) title = font.render('Bite-Bite', True, Config['colors']['white']) #render is method of font (accepts the input string,boolean value (for anti aliasing),RGB value) title_rect = title.get_rect(center=( Config['game']['width'] / 2, #width of box Config['game']['bumper_size'] / 2 #height of box )) score_rect = score.get_rect( center=(Config['game']['width'] / 2, Config['game']['height'] - Config['game']['bumper_size'] / 2)) #get_rect gives the bounding box size around the text self.display.blit(score, score_rect) self.display.blit(title, title_rect) pygame.display.update() clock.tick(Config['game'] ['fps']) #to slow time rate (30 frames per second)
def test_empty_snake_has_zero_length(): snake = Snake(X_POSITION_VALUE, Y_POSITION_VALUE) assert snake.length == 0
def loop(self): # This is class that will help us # to track amount of time or to manage framerate. clock = pygame.time.Clock() flag = False # Fonts. # pygame.font.init() font = pygame.font.Font('assets/Now-Regular.otf', 28) # Game name. title = font.render('Anaconda', True, Config['colors']['white']) # Gives the bounding box size around text. title_rect = title.get_rect(center=(Config['game']['width'] / 2, Config['game']['bumper_size'] / 2)) # Background music. pygame.mixer.music.load('assets/S47-85_Mantis_Lords.wav') pygame.mixer.music.play(-1) # A music of eating apple. eat_apple = pygame.mixer.Sound('assets/crunch.wav') # Our snake. snake = Snake(self.display) dx = 0 dy = 0 self.score = 0 # Apples. apple = Apple(self.display) while True: # This empties the event queue. Gives us our user input events. for event in pygame.event.get(): if event.type == pygame.QUIT: exit() # Checks if the key is one of the four commanding keys. if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT and dx != Config['snake'][ 'speed']: dx = -Config['snake']['speed'] dy = 0 elif event.key == pygame.K_RIGHT and dx != -Config[ 'snake']['speed']: dx = Config['snake']['speed'] dy = 0 elif event.key == pygame.K_UP and dy != Config['snake'][ 'speed']: dx = 0 dy = -Config['snake']['speed'] elif event.key == pygame.K_DOWN and dy != -Config['snake'][ 'speed']: dx = 0 dy = Config['snake']['speed'] print(event) # Fills the entire screen with the green color # and than places black "background". # self.display.fill(Config['colors']['green']) pygame.draw.rect( self.display, Config['colors']['black'], [ # Config['game']['bumper_size'], # Config['game']['bumper_size'], # Config['game']['height'] - Config['game']['bumper_size'] * 2, # Config['game']['width'] - Config['game']['bumper_size'] * 2 0, 0, Config['game']['height'], Config['game']['width'] ]) # Moves our snake. snake.move(dx, dy) snake_rect = snake.draw() apple_rect = apple.draw() # Collisions with the wall. # bumper_x = Config['game']['width'] - Config['game']['bumper_size'] # bumper_y = Config['game']['height'] - Config['game']['bumper_size'] # speed = Config['snake']['speed'] # # if ( # snake.x_pos < Config['game']['bumper_size'] or # snake.y_pos < Config['game']['bumper_size'] or # snake.x_pos + Config['snake']['width'] > bumper_x or # snake.y_pos + Config['snake']['height'] > bumper_y # ): # flag = True # Checks collisions with apple. if apple_rect.colliderect(snake_rect): apple.randomize() self.score += 1 snake.eat(eat_apple) # Checks collisions with itself. if len(snake.body) > 1: for cell in snake.body: if snake.x_pos == cell[0] and snake.y_pos == cell[1]: self.loop() # Adds score. score_text = 'Score: {}'.format(self.score) score = font.render(score_text, True, Config['colors']['white']) score_rect = score.get_rect( center=(Config['game']['width'] / 2, Config['game']['height'] - Config['game']['bumper_size'] / 2)) self.display.blit(score, score_rect) self.display.blit(title, title_rect) pygame.display.update() if flag: self.loop() # Tracks how many frames we have rendered. # Uses pygame.time.delay, so it's very precise clock.tick_busy_loop(Config['game']['fps'])