idk
This commit is contained in:
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
<head>
|
<head>
|
||||||
<title>home</title>
|
<title>home</title>
|
||||||
<link rel="stylesheet" href="https://pyscript.net/releases/2023.11.1/core.css" />
|
<link rel="stylesheet" href="https://pyscript.net/releases/2023.11.1/core.css" />
|
||||||
<script type="module" src="https://pyscript.net/releases/2023.11.1/core.js"></script>
|
<script type="module" src="snak.py"></script>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<link rel="shortcut icon" type="x-icon" href="open-uri20210108-68-lujeec">
|
<link rel="shortcut icon" type="x-icon" href="open-uri20210108-68-lujeec">
|
||||||
<link rel="stylesheet" href="trkeey.css">
|
<link rel="stylesheet" href="trkeey.css">
|
||||||
|
|||||||
@@ -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("http://bitemelater.in\n")
|
||||||
Reference in New Issue
Block a user