From e4f1121a6b0d8e1d4d8cb57bbca6906752b369f9 Mon Sep 17 00:00:00 2001 From: AviationSFO Date: Mon, 8 Aug 2022 16:20:50 -0700 Subject: [PATCH 01/10] transition sounds to pygame and fix location issue --- turtlesnake.py | 46 +++++++++++++++++++++++++--------------------- version.txt | 2 +- 2 files changed, 26 insertions(+), 22 deletions(-) diff --git a/turtlesnake.py b/turtlesnake.py index 086a5da..c5d5f27 100644 --- a/turtlesnake.py +++ b/turtlesnake.py @@ -1,14 +1,15 @@ -# Python Snake Game by Steven Weinstein on 7-17-2022. Version available in version.txt +# Python Snake Game by Steven Weinstein on 8-8-2022. Version available in version.txt # import required modules TK_SILENCE_DEPRECATION = 1 from platform import python_version import json import threading as thr import snakeconfig -from os import path from random import randint, choice from time import sleep import turtle +from pathlib import Path +script_path = Path(__file__, '..').resolve() # checking if python version is compatible pyversion = python_version() print("Your python version is:") @@ -42,13 +43,14 @@ "tailcolor": "blue" } try: - from playsound import playsound + from pygame import mixer noplaysound = False + mixer.init() except: noplaysound = True global high_score global mutesound -with open("prefs.json", "r") as read_file: +with open(script_path.joinpath("prefs.json"), "r") as read_file: prefs = json.load(read_file) high_score = prefs["highscore"] bgcolor = prefs["bgcolor"] @@ -65,7 +67,7 @@ score = 0 APIon = False # opening files -datadoc = open("data.txt", "a") +datadoc = open(script_path.joinpath("data.txt"), "a") foodnum = int(foodnum) if foodnum == 2: @@ -81,7 +83,7 @@ print("Error: last highscore is not an integer.") wn = turtle.Screen() -wn.title("Snake Game Project v1.13.1") +wn.title("Snake Game Project v1.14.0") wn.bgcolor(bgcolor) # the width and height can be put as user's choice wn.setup(width=600, height=600) @@ -178,8 +180,7 @@ def DEVTOOLRESET(): prefs = { "highscore": 0, } - with open(path.expanduser( - "~/Desktop/SnakeGame/prefs.json"), "w") as write_file: + with open(script_path.joinpath("prefs.json"), "w") as write_file: json.dump(prefs, write_file) quit() @@ -219,7 +220,14 @@ def APIproc(): def playswallow(): if not noplaysound: - playsound(path.expanduser("~/Desktop/SnakeGame/extrafiles/swallow.mp3")) + mixer.music.load(script_path.joinpath("extrafiles/swallow.mp3")) + mixer.music.play() + + +def playsmash(): + if not noplaysound: + mixer.music.load(script_path.joinpath("extrafiles/smash.mp3")) + mixer.music.play() def togglemute(): @@ -245,8 +253,7 @@ def config(): prefs["foodcolor"] = input("What color would you like the food: ") prefs["foodshape"] = input("Food shape: circle square triange or turtle: ") prefs["foodnum"] = input("Would you like to have 1 or 2 foods: ") - with open(path.expanduser( - "~/Desktop/SnakeGame/prefs.json"), "w") as write_file: + with open(script_path.joinpath("prefs.json"), "w") as write_file: json.dump(prefs, write_file) # writing to text document print("Succesfuly configured!\nYou will have to restart the game for changes to take effect.") @@ -268,8 +275,7 @@ def snakecolor(): enter a hex code or an accepted color name from this list: https://trinket.io/docs/colors NO RGB VALUES''') prefs["headcolor"] = input("What color would you like the snake head: ") prefs["tailcolor"] = input("What color would you like the snake tail: ") - with open(path.expanduser( - "~/Desktop/SnakeGame/prefs.json"), "w") as write_file: + with open(script_path.joinpath("prefs.json"), "w") as write_file: json.dump(prefs, write_file) # writing to text document print("Succesfuly configured!\nYou will have to restart the game for changes to take effect.") @@ -312,6 +318,8 @@ def exit(): while True: wn.update() if head.xcor() > 290 or head.xcor() < -290 or head.ycor() > 290 or head.ycor() < -290: + if not mutesound: + playsmash() sleep(1) head.goto(0, 0) head.direction = "Stop" @@ -358,10 +366,7 @@ def exit(): x2 = round(randint(-270, 270), 24) y2 = round(randint(-270, 270), 24) if mutesound == False: - if __name__ == '__main__': - # creating thread - soundt = thr.Thread(target=playswallow, args=()) - soundt.start() + playswallow() food2.goto(x2, y2) # Adding segment @@ -396,9 +401,8 @@ def exit(): move() for segment in segments: if segment.distance(head) < movepertick: - if not noplaysound: - playsound(path.expanduser( - "~/Desktop/SnakeGame/extrafiles/smash.mp3")) + if mutesound == False: + playsmash() head.goto(0, 600) sleep(delay) sleep(1) @@ -434,7 +438,7 @@ def exit(): } if changedcolor == False: - with open("prefs.json", "w") as write_file: + with open(script_path.joinpath("prefs.json"), "w") as write_file: json.dump(prefs, write_file) else: quit() diff --git a/version.txt b/version.txt index 2a82924..0b79fb7 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -Version STABLE v1.13.1 \ No newline at end of file +Version DEVELOPMENT v2.0.0 \ No newline at end of file From 894982c984ff6b8e3ae27d6d8106479270898380 Mon Sep 17 00:00:00 2001 From: AviationSFO Date: Mon, 8 Aug 2022 16:22:51 -0700 Subject: [PATCH 02/10] add v3.11 compatibility --- turtlesnake.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/turtlesnake.py b/turtlesnake.py index c5d5f27..c5bbdb4 100644 --- a/turtlesnake.py +++ b/turtlesnake.py @@ -19,8 +19,8 @@ "3.7" in pyversion or "3.8" in pyversion or "3.9" in pyversion or - "3.10" in pyversion # or - # "3.11" in pyversion: + "3.10" in pyversion or + "3.11" in pyversion ): print("Python version check pass") else: From 826e6254d04e3d7345a48df7aaa9a755750ab306 Mon Sep 17 00:00:00 2001 From: AviationSFO Date: Mon, 8 Aug 2022 16:23:11 -0700 Subject: [PATCH 03/10] fix versioning number --- turtlesnake.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/turtlesnake.py b/turtlesnake.py index c5bbdb4..9bbfe93 100644 --- a/turtlesnake.py +++ b/turtlesnake.py @@ -83,7 +83,7 @@ print("Error: last highscore is not an integer.") wn = turtle.Screen() -wn.title("Snake Game Project v1.14.0") +wn.title("Snake Game Project v2.0.0 DEV") wn.bgcolor(bgcolor) # the width and height can be put as user's choice wn.setup(width=600, height=600) From a64707bc3cdb0a028ff0ae883b074190e1a30b4e Mon Sep 17 00:00:00 2001 From: AviationSFO Date: Mon, 8 Aug 2022 16:37:08 -0700 Subject: [PATCH 04/10] fix config crashing bug and revamp colors --- prefs.json | 11 +---------- snakeconfig.py | 37 ++++++++----------------------------- turtlesnake.py | 2 +- 3 files changed, 10 insertions(+), 40 deletions(-) diff --git a/prefs.json b/prefs.json index c97e96b..e86ac08 100644 --- a/prefs.json +++ b/prefs.json @@ -1,10 +1 @@ -{ - "highscore": 0, - "bgcolor": "dark green", - "foodcolor": "navy", - "foodshape": "square", - "foodnum": 2, - "mutesound": true, - "headcolor": "white", - "tailcolor": "blue" -} \ No newline at end of file +{"highscore": 0, "bgcolor": "dark green", "foodcolor": "dark red", "foodshape": "circle", "foodnum": 2, "mutesound": true, "headcolor": "white", "tailcolor": "#13325e"} \ No newline at end of file diff --git a/snakeconfig.py b/snakeconfig.py index 4aa403a..38aa98f 100644 --- a/snakeconfig.py +++ b/snakeconfig.py @@ -1,26 +1,16 @@ #Turtle Snake Game color and shape congigurator for 1.10.1 and newer on 2-8-2022 By Steven Weinstein -import json -def config(): - import os +def config(script_path): import json - prefs = { - "highscore": 0, - "bgcolor": "dark green", - "foodcolor": "navy", - "foodshape": "square", - "foodnum": 2, - "mutesound": True -} + prefs = {"highscore": 0, "bgcolor": "dark green", "foodcolor": "dark red", "foodshape": "circle", "foodnum": 2, "mutesound": True, "headcolor": "white", "tailcolor": "#13325e"} print('''Color Configurator enter a hex code or an accepted color name from this list: https://trinket.io/docs/colors NO RGB VALUES''') prefs["bgcolor"] = input("What color would you like the background: ") prefs["foodcolor"] = input("What color would you like the food: ") prefs["foodshape"] = input("Food shape: circle square triange or turtle: ") prefs["foodnum"] = input("Would you like to have 1 or 2 foods: ") - with open(os.path.expanduser( - "~/Desktop/SnakeGame/prefs.json"), "w") as write_file: + with open(script_path.joinpath("prefs.json"), "w") as write_file: json.dump(prefs, write_file) # writing to text document print("Succesfuly configured!\nYou will have to restart the game for changes to take effect.") @@ -28,23 +18,14 @@ def config(): changedcolor = True return -def snakecolor(): - import os +def snakecolor(script_path): import json - prefs = { - "highscore": 0, - "bgcolor": "dark green", - "foodcolor": "navy", - "foodshape": "square", - "foodnum": 2, - "mutesound": True - } + prefs = {"highscore": 0, "bgcolor": "dark green", "foodcolor": "dark red", "foodshape": "circle", "foodnum": 2, "mutesound": True, "headcolor": "white", "tailcolor": "#13325e"} print('''Color Configurator enter a hex code or an accepted color name from this list: https://trinket.io/docs/colors NO RGB VALUES''') prefs["headcolor"] = input("What color would you like the snake head: ") prefs["tailcolor"] = input("What color would you like the snake tail: ") - with open(os.path.expanduser( - "~/Desktop/SnakeGame/prefs.json"), "w") as write_file: + with open(script_path.joinpath("prefs.json"), "w") as write_file: json.dump(prefs, write_file) # writing to text document print("Succesfuly configured!\nYou will have to restart the game for changes to take effect.") @@ -52,11 +33,9 @@ def snakecolor(): changedcolor = True return -def snakereset(): - import os +def snakereset(script_path): print("\n\n\tvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv\nThere was an error in the snake color file.\nReseting the document...\n\t^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n") - file = open(os.path.expanduser( - "~/Desktop/SnakeGame/snakeprefs.txt"), "w") + file = open(script_path.joinpath("snakeprefs.txt"), "w") colorhd = "white" colortl = "blue" file.write(f"{colorhd}\n{colortl}") \ No newline at end of file diff --git a/turtlesnake.py b/turtlesnake.py index 9bbfe93..9a46459 100644 --- a/turtlesnake.py +++ b/turtlesnake.py @@ -348,7 +348,7 @@ def exit(): try: new_segment.color(tailcolor) except: - snakeconfig.snakereset() + snakeconfig.snakereset(script_path) quit() new_segment.penup() segments.append(new_segment) From fd2ce19b04e4976c91244630dc63767b027001c5 Mon Sep 17 00:00:00 2001 From: AviationSFO Date: Mon, 8 Aug 2022 16:44:57 -0700 Subject: [PATCH 05/10] remove deprecated files --- CHANGELOG.txt | 113 ------------------------------------------------- snakeprefs.txt | 2 - 2 files changed, 115 deletions(-) delete mode 100644 CHANGELOG.txt delete mode 100644 snakeprefs.txt diff --git a/CHANGELOG.txt b/CHANGELOG.txt deleted file mode 100644 index 3f2c71b..0000000 --- a/CHANGELOG.txt +++ /dev/null @@ -1,113 +0,0 @@ -V1.0 -Original Release - -V1.0.1 -Bug fix for turtle shut down when at 20 score - -V1.1 -Maroon bg, score changes by 1, save high score, new packaging - -V1.1.1 -New color and shape options for food, manual kill dev tool press "r" - -V1.1.2 -Added and removed colors for food, removed "classic" shape for food, changed bg color, added arrow key functionality, small performance optimizations - -V1.1.3 -Food sort of snaps to places where snake can go, fixed bug where snake doesn't work with wsad when caps log is on, hot fix for snake game crashing on some computers - -V1.1.4 -Changed background color and food colors, various bug fixes - -V1.2 -Added ability to configure background and food colors with snakeconfig.py, bug fixes, added SOUNDS! - -V1.2.1 -Packaging changes - -V1.2.2 -Can choose shape in configurator - -V1.2.3 -Optimizations and bug fixes - -V1.2.4 -Preview of 1.3, no new features - -V1.2.5 -Minor bug fixes and improvements - -V1.3 -Finally added smoothness and framerate - -V1.3.1 -More framerate and fixed bug where high score is not written properly -Known bug: Head of snake gets partially covered by segments when appended - -V1.4.0 -Added second food! This re-writes almost all of food generation. I will make it possible to have the second optional and maybe more later! - -V1.4.1 -Packaging changes - -V1.5.0 -API (data) added - -V1.5.1 -More precision added to recorded data - -V1.6.0 -fix bug where snake length doesnt reset when killed with running into self. Second food is now optional. - -V1.6.1 -Fix bug where game crashes when api turned on - -V1.7.0 - bug fixes and Data rework -Fixed 2 minor bugs -Moved API to a second thread to avoid slowing down the game on older computers - -V1.7.1 -Fix data.txt - -V1.7.2 -Fix bug where API not working because it does not recognize 2 foods option - -V1.8.0 -Add option to recolor/customize the snake head and tail. Press 8 to open the configurator! - -V1.8r2 -If error in snakeprefs.txt, will now reset to default values. - -V1.9.0 -Added/implemented sounds and ability to mute - -V1.9.1 -Fixed toggling mute - -V1.9.2 -Last muted or not is now saved - -V1.10.0 -Implemented json saving for the high score. Background and other options are coming to json swell in the near future (hopefully). - -V1.10.1 -Added more things to prefs.json, modified configuartor - -V1.10.2 -Added snake preferences to prefs.json and modified configurator - -V1.10.3 -Cleaned up some things and added wininstall.sh - -V1.11.0 -check for python version compatibility -Windows installation script and update Mac OS version - -V1.12.0 -Add window close on escape key -Optimize startup process -Fix devtoolreset -Ability to toggle api as opposed to only able to be turned on -Add smash sound when snake hits self - -THIS DOCUMENT IS NO LONGER USED AS OF 1.13.0, REFER TO GITHUB FOR CHANGELOG diff --git a/snakeprefs.txt b/snakeprefs.txt deleted file mode 100644 index 58b9112..0000000 --- a/snakeprefs.txt +++ /dev/null @@ -1,2 +0,0 @@ -white -blue \ No newline at end of file From 2c216e4a1467fd73e25d6f68e73cff1f0cae33ec Mon Sep 17 00:00:00 2001 From: AviationSFO Date: Mon, 8 Aug 2022 16:45:12 -0700 Subject: [PATCH 06/10] add windows launcher --- launch-win.cpp | 9 +++++++++ launch-win.exe | Bin 0 -> 123197 bytes 2 files changed, 9 insertions(+) create mode 100644 launch-win.cpp create mode 100644 launch-win.exe diff --git a/launch-win.cpp b/launch-win.cpp new file mode 100644 index 0000000..2e307ad --- /dev/null +++ b/launch-win.cpp @@ -0,0 +1,9 @@ +#include + +using namespace std; + +int main() +{ + system("python turtlesnake.py"); + return 0; +} \ No newline at end of file diff --git a/launch-win.exe b/launch-win.exe new file mode 100644 index 0000000000000000000000000000000000000000..f73f9dc858c70109693d403f7c54521d28416aa6 GIT binary patch literal 123197 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�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 literal 0 HcmV?d00001 From a49c784eaf5b2cf84ddf5d56aa424cd683ed2cc8 Mon Sep 17 00:00:00 2001 From: AviationSFO Date: Mon, 8 Aug 2022 16:45:22 -0700 Subject: [PATCH 07/10] update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index cf43dba..53a3225 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ ### Requirements #### Python -Version 3.6 or newer, (Python 2 does not work, same as python 3 earlier than 3.6). +Version 3.6 or newer, (Python 2 does not work, same as Python 3 earlier than 3.6). #### Tested versions: 3.5.10 (not working) @@ -22,7 +22,7 @@ Version 3.6 or newer, (Python 2 does not work, same as python 3 earlier than 3.6 3.11a5+ #### OS -Tested on Mac OS and Windows 10 only. +Tested on Mac OS and Windows 10 and 11 only. ### Launching Game To run game: MACOS: Open launcher From d011e62c00e56139757e219926d3ff6a9aa5942b Mon Sep 17 00:00:00 2001 From: AviationSFO Date: Mon, 8 Aug 2022 16:45:57 -0700 Subject: [PATCH 08/10] update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 53a3225..320dd45 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ Tested on Mac OS and Windows 10 and 11 only. To run game: MACOS: Open launcher -Windows: Open turtlesnake.py with python +Windows: Open launch-win.exe ### Configuring prefrences From 156ffd49046fda5e89e5e6fa34f11cf904c1c55c Mon Sep 17 00:00:00 2001 From: AviationSFO Date: Mon, 8 Aug 2022 23:55:53 -0700 Subject: [PATCH 09/10] update Readme.md --- README.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/README.md b/README.md index 320dd45..9f5bd23 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,4 @@ curl https://raw.githubusercontent.com/AviationSFO/SnakeGame/master/install.sh | ``` ## Windows -Copy and paste the following code into the windows terminal to install -```shell -curl https://raw.githubusercontent.com/AviationSFO/SnakeGame/master/wininstall.sh | bash -``` \ No newline at end of file +Download source code from latest release \ No newline at end of file From 004f0922bb2d50f3ee5d6cd4cfc317514bb77013 Mon Sep 17 00:00:00 2001 From: AviationSFO Date: Tue, 9 Aug 2022 11:26:46 -0700 Subject: [PATCH 10/10] v2 release --- README.md | 2 +- snakeconfig.py | 2 +- turtlesnake.py | 2 +- version.txt | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 9f5bd23..9b0ef1f 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Snake Game +# Snake Game v2 ## Instructions ### Requirements #### Python diff --git a/snakeconfig.py b/snakeconfig.py index 38aa98f..4b3f28a 100644 --- a/snakeconfig.py +++ b/snakeconfig.py @@ -1,4 +1,4 @@ -#Turtle Snake Game color and shape congigurator for 1.10.1 and newer on 2-8-2022 By Steven Weinstein +#Turtle Snake Game color and shape congigurator for 2.0.0 and newer on 8-8-2022 By Steven Weinstein def config(script_path): diff --git a/turtlesnake.py b/turtlesnake.py index 9a46459..5b47103 100644 --- a/turtlesnake.py +++ b/turtlesnake.py @@ -83,7 +83,7 @@ print("Error: last highscore is not an integer.") wn = turtle.Screen() -wn.title("Snake Game Project v2.0.0 DEV") +wn.title("Snake Game Project v2.0.0") wn.bgcolor(bgcolor) # the width and height can be put as user's choice wn.setup(width=600, height=600) diff --git a/version.txt b/version.txt index 0b79fb7..6eaf894 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -Version DEVELOPMENT v2.0.0 \ No newline at end of file +v2.0.0 \ No newline at end of file