File tree Expand file tree Collapse file tree 2 files changed +67
-0
lines changed Expand file tree Collapse file tree 2 files changed +67
-0
lines changed Original file line number Diff line number Diff line change
1
+ # Snack game in python using curses and random library
Original file line number Diff line number Diff line change
1
+ import random
2
+ import curses
3
+
4
+ def play_game ():
5
+ s = curses .initscr ()
6
+ curses .curs_set (0 )
7
+ sh , sw = s .getmaxyx ()
8
+ w = curses .newwin (sh , sw , 0 , 0 )
9
+ w .keypad (1 )
10
+ w .timeout (100 )
11
+
12
+ snk_x = sw / 4
13
+ snk_y = sh / 2
14
+ snake = [
15
+ [snk_y , snk_x ],
16
+ [snk_y , snk_x - 1 ],
17
+ [snk_y , snk_x - 2 ]
18
+ ]
19
+
20
+ food = [sh / 2 , sw / 2 ]
21
+ w .addch (int (food [0 ]), int (food [1 ]), curses .ACS_PI )
22
+
23
+ key = curses .KEY_RIGHT
24
+
25
+ while True :
26
+ next_key = w .getch ()
27
+ key = key if next_key == - 1 else next_key
28
+
29
+ if snake [0 ][0 ] in [0 , sh ] or snake [0 ][1 ] in [0 , sw ] or snake [0 ] in snake [1 :]:
30
+ curses .endwin ()
31
+ quit ()
32
+
33
+ new_head = [snake [0 ][0 ], snake [0 ][1 ]]
34
+
35
+ if key == curses .KEY_DOWN :
36
+ new_head [0 ] += 1
37
+ if key == curses .KEY_UP :
38
+ new_head [0 ] -= 1
39
+ if key == curses .KEY_LEFT :
40
+ new_head [1 ] -= 1
41
+ if key == curses .KEY_RIGHT :
42
+ new_head [1 ] += 1
43
+
44
+ snake .insert (0 , new_head )
45
+
46
+ if snake [0 ] == food :
47
+ food = None
48
+ while food is None :
49
+ nf = [
50
+ random .randint (1 , sh - 1 ),
51
+ random .randint (1 , sw - 1 )
52
+ ]
53
+ food = nf if nf not in snake else None
54
+ w .addch (food [0 ], food [1 ], curses .ACS_PI )
55
+ else :
56
+ tail = snake .pop ()
57
+ w .addch (int (tail [0 ]), int (tail [1 ]), ' ' )
58
+
59
+ w .addch (int (snake [0 ][0 ]), int (snake [0 ][1 ]), curses .ACS_CKBOARD )
60
+
61
+ user_input = input ("Do you want to play the snake game, type 'yes' or 'no': " ).lower ()
62
+
63
+ if user_input == "yes" :
64
+ play_game ()
65
+ else :
66
+ quit ()
You can’t perform that action at this time.
0 commit comments