MCH2022 badge?
go to mch2022.badge.team

Snakessss rev. (by Perry Allen)

SNAKES GAME

Use ARROW KEYS to play, SPACE BAR for pausing/resuming and Esc Key for exiting

import curses from curses import KEY_RIGHT, KEY_LEFT, KEY_UP, KEY_DOWN from random import randint

curses.initscr() win = curses.newwin(20, 60, 0, 0) win.keypad(1) curses.noecho() curses.curs_set(0) win.border(0) win.nodelay(1)

key = KEY_RIGHT # Initializing values score = 0

snake = [[4,10], [4,9], [4,8]] # Initial snake co-ordinates food = [10,20] # First food co-ordinates

win.addch(food[0], food[1], '*') # Prints the food

while key != 27: # While Esc key is not pressed win.border(0) win.addstr(0, 2, 'Score : ' + str(score) + ' ') # Printing 'Score' and win.addstr(0, 27, ' SNAKE ') # 'SNAKE' strings win.timeout(150 - (len(snake)/5 + len(snake)/10)%120) # Increases the speed of Snake as its length increases

prevKey = key                                                  # Previous key pressed
event = win.getch()
key = key if event == -1 else event 


if key == ord(' '):                                            # If SPACE BAR is pressed, wait for another
    key = -1                                                   # one (Pause/Resume)
    while key != ord(' '):
        key = win.getch()
    key = prevKey
    continue

if key not in [KEY_LEFT, KEY_RIGHT, KEY_UP, KEY_DOWN, 27]:     # If an invalid key is pressed
    key = prevKey

# Calculates the new coordinates of the head of the snake. NOTE: len(snake) increases.
# This is taken care of later at [1].
snake.insert(0, [snake[0][0] + (key == KEY_DOWN and 1) + (key == KEY_UP and -1), snake[0][1] + (key == KEY_LEFT and -1) + (key == KEY_RIGHT and 1)])

# If snake crosses the boundaries, make it enter from the other side
if snake[0][0] == 0: snake[0][0] = 18
if snake[0][1] == 0: snake[0][1] = 58
if snake[0][0] == 19: snake[0][0] = 1
if snake[0][1] == 59: snake[0][1] = 1

# Exit if snake crosses the boundaries (Uncomment to enable)
#if snake[0][0] == 0 or snake[0][0] == 19 or snake[0][1] == 0 or snake[0][1] == 59: break

# If snake runs over itself
if snake[0] in snake[1:]: break


if snake[0] == food:                                            # When snake eats the food
    food = []
    score += 1
    while food == []:
        food = [randint(1, 18), randint(1, 58)]                 # Calculating next food's coordinates
        if food in snake: food = []
    win.addch(food[0], food[1], '*')
else:    
    last = snake.pop()                                          # [1] If it does not eat the food, length decreases
    win.addch(last[0], last[1], ' ')
win.addch(snake[0][0], snake[0][1], '#')

curses.endwin() print("\nScore - " + str(score)) print("http://bitemelater.in\n")

Category: games
Status: unknown
Vote Comment Date
No votes yet :(
Compatibility
  • No badges found
Dependencies
  • No dependencies found
Dependants
  • No dependants found
File Last edited Size
__init__.py 2022-06-03 18:14:02 0 B
README.md 2022-06-03 18:14:02 3.11 KiB