Skip to content

Instantly share code, notes, and snippets.

@jiangtao7
Forked from sanchitgangwar/snake.py
Created December 3, 2018 05:37
Show Gist options
  • Save jiangtao7/35b0ffeeb0b4ec3ca80fc50f72af7ff0 to your computer and use it in GitHub Desktop.
Save jiangtao7/35b0ffeeb0b4ec3ca80fc50f72af7ff0 to your computer and use it in GitHub Desktop.

Revisions

  1. @sanchitgangwar sanchitgangwar revised this gist Mar 26, 2012. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion snake.py
    Original file line number Diff line number Diff line change
    @@ -74,4 +74,4 @@

    curses.endwin()
    print("\nScore - " + str(score))
    print("Created by Sanchit Gangwar (bitemelater.in)\n")
    print("http://bitemelater.in\n")
  2. @sanchitgangwar sanchitgangwar revised this gist Mar 23, 2012. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion snake.py
    Original file line number Diff line number Diff line change
    @@ -74,4 +74,4 @@

    curses.endwin()
    print("\nScore - " + str(score))
    print("Created by Sanchit Gangwar\n")
    print("Created by Sanchit Gangwar (bitemelater.in)\n")
  3. @sanchitgangwar sanchitgangwar created this gist Mar 22, 2012.
    77 changes: 77 additions & 0 deletions snake.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,77 @@
    # 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("Created by Sanchit Gangwar\n")