|
1 | 1 | import curses
|
2 | 2 | from random import randint
|
3 | 3 |
|
| 4 | +#constants |
| 5 | + |
| 6 | +WINDOW_WIDTH = 60 # number of columns of window box |
| 7 | +WINDOW_HEIGHT = 20 # number of rows of window box |
| 8 | +''' |
| 9 | +Number of blocks in window per line = WINDOW_WIDTH -2. |
| 10 | +Block x index ranges from 1 to WINDOW_WIDTH -2. |
| 11 | +Number of blocks in window per column = WINDOW_HEIGHT -2. |
| 12 | +Block y index ranges from 1 to WINDOW_HEIGHT -2. |
| 13 | +''' |
| 14 | + |
4 | 15 | # setup window
|
5 | 16 | curses.initscr()
|
6 |
| -win = curses.newwin(20, 60, 0, 0) # y,x |
| 17 | +win = curses.newwin(WINDOW_HEIGHT, WINDOW_WIDTH, 0, 0) # rows, columns |
7 | 18 | win.keypad(1)
|
8 | 19 | curses.noecho()
|
9 | 20 | curses.curs_set(0)
|
10 | 21 | win.border(0)
|
11 | 22 | win.nodelay(1) # -1
|
12 | 23 |
|
13 | 24 | # snake and food
|
14 |
| -snake = [(4, 10), (4, 9), (4, 8)] |
15 |
| -food = (10, 20) |
| 25 | +snake = [(4, 4), (4, 3), (4, 2)] |
| 26 | +food = (6, 6) |
16 | 27 |
|
17 | 28 | win.addch(food[0], food[1], '#')
|
18 | 29 | # game logic
|
|
48 | 59 |
|
49 | 60 | # check if we hit the border
|
50 | 61 | if y == 0: break
|
51 |
| - if y == 19: break |
| 62 | + if y == WINDOW_HEIGHT-1: break |
52 | 63 | if x == 0: break
|
53 |
| - if x == 59: break |
| 64 | + if x == WINDOW_WIDTH -1: break |
54 | 65 |
|
55 | 66 | # if snake runs over itself
|
56 | 67 | if snake[0] in snake[1:]: break
|
|
60 | 71 | score += 1
|
61 | 72 | food = ()
|
62 | 73 | while food == ():
|
63 |
| - food = (randint(1,18), randint(1,58)) |
| 74 | + food = (randint(1,WINDOW_HEIGHT-2), randint(1,WINDOW_WIDTH -2)) |
64 | 75 | if food in snake:
|
65 | 76 | food = ()
|
66 | 77 | win.addch(food[0], food[1], '#')
|
|
0 commit comments