From a3985a631cfb8975daf164fd77098b1e3750bf34 Mon Sep 17 00:00:00 2001 From: anaymous Date: Fri, 12 Apr 2024 19:25:35 +0000 Subject: [PATCH 1/7] create a new markdown file --- Xiang-intro.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Xiang-intro.md diff --git a/Xiang-intro.md b/Xiang-intro.md new file mode 100644 index 0000000..e69de29 From fe87059cab764f078452d641315c36a71ab45528 Mon Sep 17 00:00:00 2001 From: anaymous Date: Fri, 12 Apr 2024 19:25:59 +0000 Subject: [PATCH 2/7] create a new markdown file --- Xiang-intro.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Xiang-intro.md b/Xiang-intro.md index e69de29..32f95c0 100644 --- a/Xiang-intro.md +++ b/Xiang-intro.md @@ -0,0 +1 @@ +hi \ No newline at end of file From cbe1d36dec704a5228e1c7f96fab1687f4eedf12 Mon Sep 17 00:00:00 2001 From: anaymous Date: Fri, 12 Apr 2024 19:28:50 +0000 Subject: [PATCH 3/7] add a brief intro --- Xiang-intro.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Xiang-intro.md b/Xiang-intro.md index 32f95c0..928dcf2 100644 --- a/Xiang-intro.md +++ b/Xiang-intro.md @@ -1 +1 @@ -hi \ No newline at end of file +Hello this is Jiachun Xiang, you can call me Max, Xiang pronounces similar as "Sean/Shawn". \ No newline at end of file From 338994f581a44b0db3d0893d63ed3b0c7b60ab78 Mon Sep 17 00:00:00 2001 From: anaymous Date: Fri, 12 Apr 2024 19:31:44 +0000 Subject: [PATCH 4/7] add another sentence --- Xiang-intro.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Xiang-intro.md b/Xiang-intro.md index 928dcf2..2ceaf93 100644 --- a/Xiang-intro.md +++ b/Xiang-intro.md @@ -1 +1,3 @@ -Hello this is Jiachun Xiang, you can call me Max, Xiang pronounces similar as "Sean/Shawn". \ No newline at end of file +Hello this is Jiachun Xiang, you can call me Max, Xiang pronounces similar as "Sean/Shawn". + +This is my first time using codespace, looks interesting to programming without cloning the repo locally! \ No newline at end of file From c5b55152494eb170950256d6de156d947e97d548 Mon Sep 17 00:00:00 2001 From: anaymous Date: Fri, 12 Apr 2024 19:46:23 +0000 Subject: [PATCH 5/7] add a simple snake game using python --- snake_game.py | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 snake_game.py diff --git a/snake_game.py b/snake_game.py new file mode 100644 index 0000000..aea57cf --- /dev/null +++ b/snake_game.py @@ -0,0 +1,60 @@ +import random +import curses + +s = curses.initscr() +curses.curs_set(0) +sh, sw = s.getmaxyx() +w = curses.newwin(sh, sw, 0, 0) +w.keypad(1) +w.timeout(100) + +snk_x = sw//4 +snk_y = sh//2 +snake = [ + [snk_y, snk_x], + [snk_y, snk_x-1], + [snk_y, snk_x-2] +] + +food = [sh//2, sw//2] +w.addch(int(food[0]), int(food[1]), curses.ACS_PI) + +key = curses.KEY_RIGHT + +while True: + next_key = w.getch() + key = key if next_key == -1 else next_key + + if snake[0][0] in [0, sh] or \ + snake[0][1] in [0, sw] or \ + snake[0] in snake[1:]: + curses.endwin() + quit() + + new_head = [snake[0][0], snake[0][1]] + + if key == curses.KEY_DOWN: + new_head[0] += 1 + if key == curses.KEY_UP: + new_head[0] -= 1 + if key == curses.KEY_LEFT: + new_head[1] -= 1 + if key == curses.KEY_RIGHT: + new_head[1] += 1 + + snake.insert(0, new_head) + + if snake[0] == food: + food = None + while food is None: + nf = [ + random.randint(1, sh-1), + random.randint(1, sw-1) + ] + food = nf if nf not in snake else None + w.addch(food[0], food[1], curses.ACS_PI) + else: + tail = snake.pop() + w.addch(int(tail[0]), int(tail[1]), ' ') + + w.addch(int(snake[0][0]), int(snake[0][1]), curses.ACS_CKBOARD) \ No newline at end of file From 63710384c45bf74880e1ab4850a86d3f0d226b83 Mon Sep 17 00:00:00 2001 From: anaymous Date: Fri, 12 Apr 2024 19:51:59 +0000 Subject: [PATCH 6/7] add docs and tests --- snake_game.py | 131 ++++++++++++++++++++++++++++---------------------- 1 file changed, 74 insertions(+), 57 deletions(-) diff --git a/snake_game.py b/snake_game.py index aea57cf..135a096 100644 --- a/snake_game.py +++ b/snake_game.py @@ -1,60 +1,77 @@ import random import curses -s = curses.initscr() -curses.curs_set(0) -sh, sw = s.getmaxyx() -w = curses.newwin(sh, sw, 0, 0) -w.keypad(1) -w.timeout(100) - -snk_x = sw//4 -snk_y = sh//2 -snake = [ - [snk_y, snk_x], - [snk_y, snk_x-1], - [snk_y, snk_x-2] -] - -food = [sh//2, sw//2] -w.addch(int(food[0]), int(food[1]), curses.ACS_PI) - -key = curses.KEY_RIGHT - -while True: - next_key = w.getch() - key = key if next_key == -1 else next_key - - if snake[0][0] in [0, sh] or \ - snake[0][1] in [0, sw] or \ - snake[0] in snake[1:]: - curses.endwin() - quit() - - new_head = [snake[0][0], snake[0][1]] - - if key == curses.KEY_DOWN: - new_head[0] += 1 - if key == curses.KEY_UP: - new_head[0] -= 1 - if key == curses.KEY_LEFT: - new_head[1] -= 1 - if key == curses.KEY_RIGHT: - new_head[1] += 1 - - snake.insert(0, new_head) - - if snake[0] == food: - food = None - while food is None: - nf = [ - random.randint(1, sh-1), - random.randint(1, sw-1) - ] - food = nf if nf not in snake else None - w.addch(food[0], food[1], curses.ACS_PI) - else: - tail = snake.pop() - w.addch(int(tail[0]), int(tail[1]), ' ') - - w.addch(int(snake[0][0]), int(snake[0][1]), curses.ACS_CKBOARD) \ No newline at end of file +def main(): + """ + Snake Game + + This program implements a simple snake game using the curses module. + The player controls a snake that moves around the screen and tries to eat food. + The game ends if the snake hits the wall or itself. + + Controls: + - Arrow keys: Move the snake in the corresponding direction + - Q: Quit the game + + """ + + s = curses.initscr() + curses.curs_set(0) + sh, sw = s.getmaxyx() + w = curses.newwin(sh, sw, 0, 0) + w.keypad(1) + w.timeout(100) + + snk_x = sw//4 + snk_y = sh//2 + snake = [ + [snk_y, snk_x], + [snk_y, snk_x-1], + [snk_y, snk_x-2] + ] + + food = [sh//2, sw//2] + w.addch(int(food[0]), int(food[1]), curses.ACS_PI) + + key = curses.KEY_RIGHT + + while True: + next_key = w.getch() + key = key if next_key == -1 else next_key + + if snake[0][0] in [0, sh] or \ + snake[0][1] in [0, sw] or \ + snake[0] in snake[1:]: + curses.endwin() + quit() + + new_head = [snake[0][0], snake[0][1]] + + if key == curses.KEY_DOWN: + new_head[0] += 1 + if key == curses.KEY_UP: + new_head[0] -= 1 + if key == curses.KEY_LEFT: + new_head[1] -= 1 + if key == curses.KEY_RIGHT: + new_head[1] += 1 + + snake.insert(0, new_head) + + if snake[0] == food: + food = None + while food is None: + nf = [ + random.randint(1, sh-1), + random.randint(1, sw-1) + ] + food = nf if nf not in snake else None + w.addch(food[0], food[1], curses.ACS_PI) + else: + tail = snake.pop() + w.addch(int(tail[0]), int(tail[1]), ' ') + + w.addch(int(snake[0][0]), int(snake[0][1]), curses.ACS_CKBOARD) + +if __name__ == "__main__": + main() From 131bcafb81ab628a76fb0d4b63501ca2f7efe341 Mon Sep 17 00:00:00 2001 From: anaymous Date: Fri, 12 Apr 2024 19:53:39 +0000 Subject: [PATCH 7/7] delete main and related --- snake_game.py | 131 ++++++++++++++++++++++---------------------------- 1 file changed, 57 insertions(+), 74 deletions(-) diff --git a/snake_game.py b/snake_game.py index 135a096..8376e24 100644 --- a/snake_game.py +++ b/snake_game.py @@ -1,77 +1,60 @@ import random import curses -def main(): - """ - Snake Game - - This program implements a simple snake game using the curses module. - The player controls a snake that moves around the screen and tries to eat food. - The game ends if the snake hits the wall or itself. - - Controls: - - Arrow keys: Move the snake in the corresponding direction - - Q: Quit the game - - """ - - s = curses.initscr() - curses.curs_set(0) - sh, sw = s.getmaxyx() - w = curses.newwin(sh, sw, 0, 0) - w.keypad(1) - w.timeout(100) - - snk_x = sw//4 - snk_y = sh//2 - snake = [ - [snk_y, snk_x], - [snk_y, snk_x-1], - [snk_y, snk_x-2] - ] - - food = [sh//2, sw//2] - w.addch(int(food[0]), int(food[1]), curses.ACS_PI) - - key = curses.KEY_RIGHT - - while True: - next_key = w.getch() - key = key if next_key == -1 else next_key - - if snake[0][0] in [0, sh] or \ - snake[0][1] in [0, sw] or \ - snake[0] in snake[1:]: - curses.endwin() - quit() - - new_head = [snake[0][0], snake[0][1]] - - if key == curses.KEY_DOWN: - new_head[0] += 1 - if key == curses.KEY_UP: - new_head[0] -= 1 - if key == curses.KEY_LEFT: - new_head[1] -= 1 - if key == curses.KEY_RIGHT: - new_head[1] += 1 - - snake.insert(0, new_head) - - if snake[0] == food: - food = None - while food is None: - nf = [ - random.randint(1, sh-1), - random.randint(1, sw-1) - ] - food = nf if nf not in snake else None - w.addch(food[0], food[1], curses.ACS_PI) - else: - tail = snake.pop() - w.addch(int(tail[0]), int(tail[1]), ' ') - - w.addch(int(snake[0][0]), int(snake[0][1]), curses.ACS_CKBOARD) - -if __name__ == "__main__": - main() +s = curses.initscr() +curses.curs_set(0) +sh, sw = s.getmaxyx() +w = curses.newwin(sh, sw, 0, 0) +w.keypad(1) +w.timeout(100) + +snk_x = sw//4 +snk_y = sh//2 +snake = [ + [snk_y, snk_x], + [snk_y, snk_x-1], + [snk_y, snk_x-2] +] + +food = [sh//2, sw//2] +w.addch(int(food[0]), int(food[1]), curses.ACS_PI) + +key = curses.KEY_RIGHT + +while True: + next_key = w.getch() + key = key if next_key == -1 else next_key + + if snake[0][0] in [0, sh] or \ + snake[0][1] in [0, sw] or \ + snake[0] in snake[1:]: + curses.endwin() + quit() + + new_head = [snake[0][0], snake[0][1]] + + if key == curses.KEY_DOWN: + new_head[0] += 1 + if key == curses.KEY_UP: + new_head[0] -= 1 + if key == curses.KEY_LEFT: + new_head[1] -= 1 + if key == curses.KEY_RIGHT: + new_head[1] += 1 + + snake.insert(0, new_head) + + if snake[0] == food: + food = None + while food is None: + nf = [ + random.randint(1, sh-1), + random.randint(1, sw-1) + ] + food = nf if nf not in snake else None + w.addch(food[0], food[1], curses.ACS_PI) + else: + tail = snake.pop() + w.addch(int(tail[0]), int(tail[1]), ' ') + + w.addch(int(snake[0][0]), int(snake[0][1]), curses.ACS_CKBOARD)