Snake Game Command Prompt Code (2026 Release)

def set_cursor_visible(visible): if os.name == 'nt': # Windows: hide/show cursor using ANSI or console API (simplified) sys.stdout.write('\033[?25l' if not visible else '\033[?25h') else: sys.stdout.write('\033[?25l' if not visible else '\033[?25h') sys.stdout.flush()

I’ll provide a that works on Windows (Command Prompt / PowerShell) and Linux/macOS terminals. Full Code (Save as snake_game.py ) """ SNAKE GAME - Command Prompt / Terminal Version Works on Windows (cmd), Linux, macOS. Uses only standard library. """ import os import sys import time import random import threading from collections import deque --- Platform-specific input handling --- if os.name == 'nt': # Windows import msvcrt def get_key(): if msvcrt.kbhit(): key = msvcrt.getch() if key == b'\xe0': # arrow keys prefix key = msvcrt.getch() if key == b'H': return 'up' elif key == b'P': return 'down' elif key == b'K': return 'left' elif key == b'M': return 'right' elif key == b'q' or key == b'Q': return 'quit' return None else: # Unix-like (Linux, macOS) import termios, tty def get_key(): fd = sys.stdin.fileno() old_settings = termios.tcgetattr(fd) try: tty.setraw(sys.stdin.fileno()) ch = sys.stdin.read(1) if ch == '\x1b': # escape sequence next = sys.stdin.read(2) if next == '[A': return 'up' elif next == '[B': return 'down' elif next == '[C': return 'right' elif next == '[D': return 'left' elif ch == 'q' or ch == 'Q': return 'quit' finally: termios.tcsetattr(fd, termios.TCSADRAIN, old_settings) return None --- Console control helpers --- def clear_screen(): os.system('cls' if os.name == 'nt' else 'clear')

generate_food() clear_screen() set_cursor_visible(False) set_title("Snake Game - Terminal")

def gotoxy(x, y): """Move cursor to column x, row y (0-indexed)""" sys.stdout.write(f'\033[y+1;x+1H') snake game command prompt code

# Check wall collision if new_head[0] < 0 or new_head[0] >= WIDTH or new_head[1] < 0 or new_head[1] >= HEIGHT: game_over = True return

def draw(): # Build screen buffer lines = [[' ' for _ in range(WIDTH)] for _ in range(HEIGHT)]

# Draw food if food: fx, fy = food lines[fy][fx] = '*' def set_cursor_visible(visible): if os

It uses only the standard library ( curses for Unix-like systems, but for Windows we use a cross‑platform approach with msvcrt and manual console handling).

while not game_over: # Handle input key = get_key() if key == 'quit': game_over = True break if key in ['up', 'down', 'left', 'right']: next_dir = key # Game update at fixed intervals now = time.time() if now - last_tick >= TICK_TIME: update() last_tick = now # Draw everything gotoxy(0, 0) draw() time.sleep(0.01) # small delay to reduce CPU usage

last_tick = time.time()

# Top border top = '+' + '-'*WIDTH + '+' print(top) for y in range(HEIGHT): line = '|' + ''.join(lines[y]) + '|' print(line) bottom = '+' + '-'*WIDTH + '+' print(bottom) print(f"Score: score Use arrow keys. Press Q to quit.") def update(): global snake, direction, next_dir, game_over, score, food

# Draw snake for i, (sx, sy) in enumerate(snake): if i == 0: lines[sy][sx] = '@' # head else: lines[sy][sx] = 'O'

def set_title(title): if os.name == 'nt': os.system(f'title title') else: sys.stdout.write(f'\033]2;title\007') WIDTH = 40 HEIGHT = 20 SNAKE_START = [(WIDTH//2, HEIGHT//2)] START_DIR = 'right' TICK_TIME = 0.12 # seconds per move --- Game state --- snake = deque(SNAKE_START) direction = START_DIR next_dir = START_DIR food = None score = 0 game_over = False --- Helper functions --- def generate_food(): global food while True: fx = random.randint(0, WIDTH-1) fy = random.randint(0, HEIGHT-1) if (fx, fy) not in snake: food = (fx, fy) break """ import os import sys import time import

Related Posts

My New Stories