diff --git a/Visual Studio Code Projects/Day+5+Password+Generator+Project+Code/main.py b/Visual Studio Code Projects/Day+5+Password+Generator+Project+Code/main.py new file mode 100644 index 0000000..0d8320b --- /dev/null +++ b/Visual Studio Code Projects/Day+5+Password+Generator+Project+Code/main.py @@ -0,0 +1,78 @@ +import tkinter as tk +from tkinter import * +import tk +from tkinter import messagebox +import pyperclip +from random import choice, randint, shuffle + +# ---------------------------- PASSWORD GENERATOR ------------------------------- # +#Password Generator Project +def generate_password(): + letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'] + numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] + symbols = ['!', '#', '$', '%', '&', '(', ')', '*', '+'] + + password_letters = [choice(letters) for _ in range(randint(8, 10))] + password_symbols = [choice(symbols) for _ in range(randint(2, 4))] + password_numbers = [choice(numbers) for _ in range(randint(2, 4))] + + password_list = password_letters + password_symbols + password_numbers + shuffle(password_list) + + password = "".join(password_list) + password_entry.insert(0, password) + pyperclip.copy(password) +# ---------------------------- SAVE PASSWORD ------------------------------- # +def save(): + + website = website_entry.get() + email = email_entry.get() + password = password_entry.get() + + if len(website) == 0 or len(password) == 0 or len(email) == 0: + messagebox.showinfo(title="Oops!", message="Please make sure you haven't left any fields empty.") + else: + is_ok = messagebox.askyesno(title=website, message=f"These are the details entered: \nEmail: {email} " + f"\nPassword: {password} \n") + if is_ok: + with open("data.txt", "a") as data_file: + data_file.write(f"{website} | {email} | {password}\n") + website_entry.delete(0, END) + password_entry.delete(0, END) + email_entry.delete(0, END) + +# ---------------------------- UI SETUP ------------------------------- # +window = Tk() +window.title("Password Manager") +window.config(padx=50, pady=50) + + +canvas = Canvas(height=200, width=200) +logo_img = PhotoImage(file="password_manager.png") +canvas.create_image(100, 100, image=logo_img) +canvas.grid(row=0, column=1) + +#Labels +website_label = Label(text="Website:") +website_label.grid(row=1, column=0) +email_label = Label(text="Email/Username:") +email_label.grid(row=2, column=0) +password_label = Label(text="Password:") +password_label.grid(row=3, column=0) + +#Entries +website_entry = Entry(width=49) +website_entry.grid(row=1, column=1, columnspan=2) +website_entry.focus() +email_entry = Entry(width=49) +email_entry.grid(row=2, column=1, columnspan=2) +password_entry = Entry(width=30) +password_entry.grid(row=3, column=1) + +#Buttons +generate_password_button = Button(text="Generate Password", command=generate_password) +generate_password_button.grid(row=3, column=2) +add_button = Button(text="Add", width=46, command=save) +add_button.grid(row=4, column=1, columnspan=2) + +window.mainloop() \ No newline at end of file diff --git a/Visual Studio Code Projects/NATO-alphabet-start/.idea/NATO-alphabet-start.iml b/Visual Studio Code Projects/NATO-alphabet-start/.idea/NATO-alphabet-start.iml new file mode 100644 index 0000000..339a2d5 --- /dev/null +++ b/Visual Studio Code Projects/NATO-alphabet-start/.idea/NATO-alphabet-start.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Visual Studio Code Projects/NATO-alphabet-start/.idea/inspectionProfiles/Project_Default.xml b/Visual Studio Code Projects/NATO-alphabet-start/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..6db1d54 --- /dev/null +++ b/Visual Studio Code Projects/NATO-alphabet-start/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,14 @@ + + + + \ No newline at end of file diff --git a/Visual Studio Code Projects/NATO-alphabet-start/.idea/inspectionProfiles/profiles_settings.xml b/Visual Studio Code Projects/NATO-alphabet-start/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/Visual Studio Code Projects/NATO-alphabet-start/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/Visual Studio Code Projects/NATO-alphabet-start/.idea/misc.xml b/Visual Studio Code Projects/NATO-alphabet-start/.idea/misc.xml new file mode 100644 index 0000000..a50ac5b --- /dev/null +++ b/Visual Studio Code Projects/NATO-alphabet-start/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/Visual Studio Code Projects/NATO-alphabet-start/.idea/modules.xml b/Visual Studio Code Projects/NATO-alphabet-start/.idea/modules.xml new file mode 100644 index 0000000..210346c --- /dev/null +++ b/Visual Studio Code Projects/NATO-alphabet-start/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Visual Studio Code Projects/NATO-alphabet-start/.idea/workspace.xml b/Visual Studio Code Projects/NATO-alphabet-start/.idea/workspace.xml new file mode 100644 index 0000000..714791e --- /dev/null +++ b/Visual Studio Code Projects/NATO-alphabet-start/.idea/workspace.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + 1716553518691 + + + + + + \ No newline at end of file diff --git a/Visual Studio Code Projects/NATO-alphabet-start/main.py b/Visual Studio Code Projects/NATO-alphabet-start/main.py new file mode 100644 index 0000000..706b1dd --- /dev/null +++ b/Visual Studio Code Projects/NATO-alphabet-start/main.py @@ -0,0 +1,17 @@ +import pandas + +data = pandas.read_csv("nato_phonetic_alphabet.csv") + +phonetic_dict = {row.letter: row.code for (index, row) in data.iterrows()} +print(phonetic_dict) + +def generate_phoenetic(): + word = input("Enter a word: ").upper() + try: + output_list = [phonetic_dict[letter] for letter in word] + except KeyError: + print("Sorry, only letters in the alphabet, but you can type numbers in words to get the answer.") + generate_phoenetic() + else: + print(output_list) +generate_phoenetic() \ No newline at end of file diff --git a/Visual Studio Code Projects/NATO-alphabet-start/nato_phonetic_alphabet.csv b/Visual Studio Code Projects/NATO-alphabet-start/nato_phonetic_alphabet.csv new file mode 100644 index 0000000..3d8e6d8 --- /dev/null +++ b/Visual Studio Code Projects/NATO-alphabet-start/nato_phonetic_alphabet.csv @@ -0,0 +1,27 @@ +letter,code +A,Alfa +B,Bravo +C,Charlie +D,Delta +E,Echo +F,Foxtrot +G,Golf +H,Hotel +I,India +J,Juliet +K,Kilo +L,Lima +M,Mike +N,November +O,Oscar +P,Papa +Q,Quebec +R,Romeo +S,Sierra +T,Tango +U,Uniform +V,Victor +W,Whiskey +X,X-ray +Y,Yankee +Z,Zulu \ No newline at end of file diff --git a/Visual Studio Code Projects/flash-card-project-start/.vscode/settings.json b/Visual Studio Code Projects/flash-card-project-start/.vscode/settings.json new file mode 100644 index 0000000..5063301 --- /dev/null +++ b/Visual Studio Code Projects/flash-card-project-start/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "CodeGPT.apiKey": "CodeGPT Enterprise" +} \ No newline at end of file diff --git a/Visual Studio Code Projects/flash-card-project-start/data/french_words.csv b/Visual Studio Code Projects/flash-card-project-start/data/french_words.csv new file mode 100644 index 0000000..3306645 --- /dev/null +++ b/Visual Studio Code Projects/flash-card-project-start/data/french_words.csv @@ -0,0 +1,103 @@ +French,English +partie,part +histoire,history +chercher,search +seulement,only +police,police +pensais,thought +aide,help +demande,request +genre,kind +mois,month +frère,brother +laisser,let +car,because +mettre,to put +aucun,no +laisse,leash +eux,them +ville,city +chaque,each +parlé,speak +arrivé,come +devrait,should +bébé,baby +longtemps,long time +heures,hours +vont,will +pendant,while +revoir,meet again +aucune,any +place,square +parle,speak +compris,understood +savais,knew +étaient,were +attention,Warning +voici,here is +pourrais,could +affaire,case +donner,give +type,type +leurs,their +donné,given +train,train +corps,body +endroit,place +yeux,eyes +façon,way +écoute,listen +dont,whose +trouve,find +premier,first +perdu,lost +main,hand +première,first +côté,side +pouvoir,power +vieux,old +sois,be +tiens,here +matin,morning +tellement,so much +enfant,child +point,point +venu,came +suite,after +pardon,sorry +venez,come +devant,in front of +vers,towards +minutes,minutes +demandé,request +chambre,bedroom +mis,placed +belle,beautiful +droit,law +aimerais,would like to +aujourd'hui,today +mari,husband +cause,cause +enfin,finally +espère,hope +eau,water +attendez,Wait +parti,left +nouvelle,new +boulot,job +arrêter,Stop +dirait,would say +terre,Earth +compte,account +donne,given +loin,far +fin,end +croire,believe +chérie,sweetheart +gros,large +plutôt,rather +aura,will have +filles,girls +jouer,to play +bureau,officepart +histoire,history \ No newline at end of file diff --git a/Visual Studio Code Projects/flash-card-project-start/data/hindi_words.csv b/Visual Studio Code Projects/flash-card-project-start/data/hindi_words.csv new file mode 100644 index 0000000..e69de29 diff --git a/Visual Studio Code Projects/flash-card-project-start/images/card_back.png b/Visual Studio Code Projects/flash-card-project-start/images/card_back.png new file mode 100644 index 0000000..d31cb9c Binary files /dev/null and b/Visual Studio Code Projects/flash-card-project-start/images/card_back.png differ diff --git a/Visual Studio Code Projects/flash-card-project-start/images/card_front.png b/Visual Studio Code Projects/flash-card-project-start/images/card_front.png new file mode 100644 index 0000000..64b8b7c Binary files /dev/null and b/Visual Studio Code Projects/flash-card-project-start/images/card_front.png differ diff --git a/Visual Studio Code Projects/flash-card-project-start/images/right.png b/Visual Studio Code Projects/flash-card-project-start/images/right.png new file mode 100644 index 0000000..cfd3625 Binary files /dev/null and b/Visual Studio Code Projects/flash-card-project-start/images/right.png differ diff --git a/Visual Studio Code Projects/flash-card-project-start/images/wrong.png b/Visual Studio Code Projects/flash-card-project-start/images/wrong.png new file mode 100644 index 0000000..daa55dd Binary files /dev/null and b/Visual Studio Code Projects/flash-card-project-start/images/wrong.png differ diff --git a/Visual Studio Code Projects/flash-card-project-start/main.py b/Visual Studio Code Projects/flash-card-project-start/main.py new file mode 100644 index 0000000..2472b95 --- /dev/null +++ b/Visual Studio Code Projects/flash-card-project-start/main.py @@ -0,0 +1,68 @@ +from tkinter import * +import pandas +import random + +BACKGROUND_COLOR = "#B1DDC6" +current_card = {} + +to_learn = {} + +#############################################################------FUNCTIONS------########################################################################## + +try: + data = pandas.read_csv("data/words_to_learn.csv") +except FileNotFoundError: + original_data = pandas.read_csv("data/french_words.csv") + to_learn = original_data.to_dict(orient="records") +else: + to_learn = data.to_dict(orient="records") + +def next_card(): + global current_card, flip_timer + window.after_cancel(flip_timer) + current_card = random.choice(to_learn) + canvas.itemconfig(card_title, text="French", fill="black") + canvas.itemconfig(card_word, text=current_card["French"], fill="black") + canvas.itemconfig(card_background, image=card_front_img) + flip_timer = window.after(5000, func=flip_card) + +def flip_card(): + canvas.itemconfig(card_title, text="English", fill="white") + canvas.itemconfig(card_word, text=current_card["English"], fill="white") + canvas.itemconfig(card_background, image=card_back_img) + +def is_known(): + to_learn.remove(current_card) + data = pandas.DataFrame(to_learn) + data.to_csv("data/words_to_learn", index=False) + next_card() + +#############################################################------WINDOWS------########################################################################## + +window = Tk() +window.title("Flashy") +window.config(padx=50, pady=50, bg=BACKGROUND_COLOR) +flip_timer = window.after(5000, func=flip_card) + +canvas = Canvas(width=800, height=526) +card_front_img = PhotoImage(file="images/card_front.png") +card_back_img = PhotoImage(file="images/card_back.png") +card_background = canvas.create_image(400, 263, image=card_front_img) +card_title = canvas.create_text(400, 150, text="", font=("Ariel", 40, "italic")) +card_word = canvas.create_text(400, 263, text="", font=("Ariel", 40, "bold")) +canvas.config(bg=BACKGROUND_COLOR, highlightthickness=0) +canvas.grid(row=0, column=0, columnspan=2) + +#############################################################------BUTTONS------########################################################################## + +cross_image = PhotoImage(file="images/wrong.png") +unknown_button = Button(image=cross_image, highlightthickness=0, command=next_card) +unknown_button.grid(row=1, column=0) + +check_image = PhotoImage(file="images/right.png") +known_button = Button(image=check_image, highlightthickness=0, command=is_known) +known_button.grid(row=1, column=1) + +next_card() + +window.mainloop() \ No newline at end of file diff --git a/Visual Studio Code Projects/kanye-quotes-start/background.png b/Visual Studio Code Projects/kanye-quotes-start/background.png new file mode 100644 index 0000000..9e1eb4e Binary files /dev/null and b/Visual Studio Code Projects/kanye-quotes-start/background.png differ diff --git a/Visual Studio Code Projects/kanye-quotes-start/kanye.png b/Visual Studio Code Projects/kanye-quotes-start/kanye.png new file mode 100644 index 0000000..e4cade8 Binary files /dev/null and b/Visual Studio Code Projects/kanye-quotes-start/kanye.png differ diff --git a/Visual Studio Code Projects/kanye-quotes-start/main.py b/Visual Studio Code Projects/kanye-quotes-start/main.py new file mode 100644 index 0000000..8d478e9 --- /dev/null +++ b/Visual Studio Code Projects/kanye-quotes-start/main.py @@ -0,0 +1,30 @@ +from tkinter import * +import requests + + +def get_quote(): + response = requests.get("https://api.kanye.rest") + response.raise_for_status() + data = response.json() + quote = data["quote"] + canvas.itemconfig(quote_text, text=quote) + + + +window = Tk() +window.title("Kanye Says...") +window.config(padx=50, pady=50) + +canvas = Canvas(width=300, height=414) +background_img = PhotoImage(file="Visual_Studio_Code_Projects/Kanye-quotes-start/background.png") +canvas.create_image(150, 207, image=background_img) +quote_text = canvas.create_text(150, 207, text="Kanye Quote Goes Here", width=250, font=("Arial", 15, "bold"), fill="white") +canvas.grid(row=0, column=0) + +kanye_img = PhotoImage(file="kanye.png") +kanye_button = Button(image=kanye_img, highlightthickness=0, command=get_quote) +kanye_button.grid(row=1, column=0) + + + +window.mainloop() \ No newline at end of file diff --git a/Visual Studio Code Projects/pomodoro-start/.idea/.gitignore b/Visual Studio Code Projects/pomodoro-start/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/Visual Studio Code Projects/pomodoro-start/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/Visual Studio Code Projects/pomodoro-start/.idea/inspectionProfiles/Project_Default.xml b/Visual Studio Code Projects/pomodoro-start/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..893c37d --- /dev/null +++ b/Visual Studio Code Projects/pomodoro-start/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,21 @@ + + + + \ No newline at end of file diff --git a/Visual Studio Code Projects/pomodoro-start/.idea/inspectionProfiles/profiles_settings.xml b/Visual Studio Code Projects/pomodoro-start/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/Visual Studio Code Projects/pomodoro-start/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/Visual Studio Code Projects/pomodoro-start/.idea/misc.xml b/Visual Studio Code Projects/pomodoro-start/.idea/misc.xml new file mode 100644 index 0000000..e557d17 --- /dev/null +++ b/Visual Studio Code Projects/pomodoro-start/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/Visual Studio Code Projects/pomodoro-start/.idea/modules.xml b/Visual Studio Code Projects/pomodoro-start/.idea/modules.xml new file mode 100644 index 0000000..3d683a5 --- /dev/null +++ b/Visual Studio Code Projects/pomodoro-start/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Visual Studio Code Projects/pomodoro-start/.idea/pomodoro-start.iml b/Visual Studio Code Projects/pomodoro-start/.idea/pomodoro-start.iml new file mode 100644 index 0000000..d0876a7 --- /dev/null +++ b/Visual Studio Code Projects/pomodoro-start/.idea/pomodoro-start.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Visual Studio Code Projects/pomodoro-start/main.py b/Visual Studio Code Projects/pomodoro-start/main.py new file mode 100644 index 0000000..60cfec4 --- /dev/null +++ b/Visual Studio Code Projects/pomodoro-start/main.py @@ -0,0 +1,87 @@ +from tkinter import * +import math +# ---------------------------- CONSTANTS ------------------------------- # +PINK = "#e2979c" +RED = "#e7305b" +GREEN = "#9bdeac" +YELLOW = "#f7f5dd" +FONT_NAME = "Courier" +WORK_MIN = 25 +SHORT_BREAK_MIN = 5 +LONG_BREAK_MIN = 20 +reps = 0 +timer = None + +# ---------------------------- TIMER RESET ------------------------------- # +def reset_timer(): + window.after_cancel(timer) + canvas.itemconfig(timer_text, text="00:00") + title_label.config(text="Timer") + check_marks.config(text="") + global reps + reps = 0 + +# ---------------------------- TIMER MECHANISM ------------------------------- # +def start_timer(): + global reps + reps += 1 + + work_sec = WORK_MIN * 60 + short_break_sec = SHORT_BREAK_MIN * 60 + long_break_sec = LONG_BREAK_MIN * 60 + + if reps % 8 == 0: + count_down(long_break_sec) + title_label.config(text="Break", fg=RED) + elif reps % 2 == 0: + count_down(short_break_sec) + title_label.config(text="Break", fg=PINK) + else: + count_down(work_sec) + title_label.config(text="Work", fg=GREEN) + +# ---------------------------- COUNTDOWN MECHANISM ------------------------------- # +def count_down(count): + + count_min = math.floor(count / 60) + count_sec = count % 60 + if count_sec < 10: + count_sec = f"0{count_sec}" + + canvas.itemconfig(timer_text, text=f"{count_min}:{count_sec}") + if count > 0: + global timer + timer = window.after(1000, count_down, count - 1) + else: + start_timer() + marks = "" + work_sessions = math.floor(reps/2) + for _ in range(work_sessions): + marks += "✓" + check_marks.config(text=marks) + +# ---------------------------- UI SETUP ------------------------------- # +window = Tk() +window.title("Pomodoro") +window.config(padx=100, pady=50, bg=YELLOW) + + +title_label = Label(text="Timer", fg=GREEN, bg=YELLOW, font=(FONT_NAME, 50)) +title_label.grid(column=1, row=0) + +canvas = Canvas(width=200, height=224, bg=YELLOW, highlightthickness=0) +tomato_img = PhotoImage(file="tomato.png") +canvas.create_image(100, 112, image=tomato_img) +timer_text = canvas.create_text(100, 130, text="00:00", fill="white", font=(FONT_NAME, 29, "bold")) +canvas.grid(column=1, row=1) + +start_button = Button(text="Start", highlightthickness=0, command=start_timer) +start_button.grid(column=0, row=2) + +reset_button = Button(text="Reset", highlightthickness=0, command=reset_timer) +reset_button.grid(column=2, row=2) + +check_marks = Label(fg=GREEN, bg=YELLOW, font=(FONT_NAME, 15)) +check_marks.grid(column=1, row=3) + +window.mainloop() \ No newline at end of file diff --git a/Visual Studio Code Projects/pomodoro-start/tomato.png b/Visual Studio Code Projects/pomodoro-start/tomato.png new file mode 100644 index 0000000..b27ca87 Binary files /dev/null and b/Visual Studio Code Projects/pomodoro-start/tomato.png differ diff --git a/Visual Studio Code Projects/quizzler-app-start/.idea/.gitignore b/Visual Studio Code Projects/quizzler-app-start/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/Visual Studio Code Projects/quizzler-app-start/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/Visual Studio Code Projects/quizzler-app-start/.idea/inspectionProfiles/Project_Default.xml b/Visual Studio Code Projects/quizzler-app-start/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..893c37d --- /dev/null +++ b/Visual Studio Code Projects/quizzler-app-start/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,21 @@ + + + + \ No newline at end of file diff --git a/Visual Studio Code Projects/quizzler-app-start/.idea/inspectionProfiles/profiles_settings.xml b/Visual Studio Code Projects/quizzler-app-start/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/Visual Studio Code Projects/quizzler-app-start/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/Visual Studio Code Projects/quizzler-app-start/.idea/misc.xml b/Visual Studio Code Projects/quizzler-app-start/.idea/misc.xml new file mode 100644 index 0000000..a50ac5b --- /dev/null +++ b/Visual Studio Code Projects/quizzler-app-start/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/Visual Studio Code Projects/quizzler-app-start/.idea/modules.xml b/Visual Studio Code Projects/quizzler-app-start/.idea/modules.xml new file mode 100644 index 0000000..9beafdb --- /dev/null +++ b/Visual Studio Code Projects/quizzler-app-start/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Visual Studio Code Projects/quizzler-app-start/.idea/quizzler-app-start.iml b/Visual Studio Code Projects/quizzler-app-start/.idea/quizzler-app-start.iml new file mode 100644 index 0000000..339a2d5 --- /dev/null +++ b/Visual Studio Code Projects/quizzler-app-start/.idea/quizzler-app-start.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Visual Studio Code Projects/quizzler-app-start/__pycache__/data.cpython-312.pyc b/Visual Studio Code Projects/quizzler-app-start/__pycache__/data.cpython-312.pyc new file mode 100644 index 0000000..21d9ea8 Binary files /dev/null and b/Visual Studio Code Projects/quizzler-app-start/__pycache__/data.cpython-312.pyc differ diff --git a/Visual Studio Code Projects/quizzler-app-start/__pycache__/question_model.cpython-312.pyc b/Visual Studio Code Projects/quizzler-app-start/__pycache__/question_model.cpython-312.pyc new file mode 100644 index 0000000..fc49915 Binary files /dev/null and b/Visual Studio Code Projects/quizzler-app-start/__pycache__/question_model.cpython-312.pyc differ diff --git a/Visual Studio Code Projects/quizzler-app-start/__pycache__/quiz_brain.cpython-312.pyc b/Visual Studio Code Projects/quizzler-app-start/__pycache__/quiz_brain.cpython-312.pyc new file mode 100644 index 0000000..42f5076 Binary files /dev/null and b/Visual Studio Code Projects/quizzler-app-start/__pycache__/quiz_brain.cpython-312.pyc differ diff --git a/Visual Studio Code Projects/quizzler-app-start/__pycache__/ui.cpython-312.pyc b/Visual Studio Code Projects/quizzler-app-start/__pycache__/ui.cpython-312.pyc new file mode 100644 index 0000000..39cd90b Binary files /dev/null and b/Visual Studio Code Projects/quizzler-app-start/__pycache__/ui.cpython-312.pyc differ diff --git a/Visual Studio Code Projects/quizzler-app-start/data.py b/Visual Studio Code Projects/quizzler-app-start/data.py new file mode 100644 index 0000000..bcda07b --- /dev/null +++ b/Visual Studio Code Projects/quizzler-app-start/data.py @@ -0,0 +1,12 @@ +import requests + +parameters = { + "amount": 10, + "type": "boolean", + "category": "" +} + +response = requests.get("https://opentdb.com/api.php?amount=20&type=boolean", params=parameters) +response.raise_for_status() +data = response.json() +question_data = data["results"] diff --git a/Visual Studio Code Projects/quizzler-app-start/images/false.png b/Visual Studio Code Projects/quizzler-app-start/images/false.png new file mode 100644 index 0000000..904c76d Binary files /dev/null and b/Visual Studio Code Projects/quizzler-app-start/images/false.png differ diff --git a/Visual Studio Code Projects/quizzler-app-start/images/true.png b/Visual Studio Code Projects/quizzler-app-start/images/true.png new file mode 100644 index 0000000..79ca9a3 Binary files /dev/null and b/Visual Studio Code Projects/quizzler-app-start/images/true.png differ diff --git a/Visual Studio Code Projects/quizzler-app-start/main.py b/Visual Studio Code Projects/quizzler-app-start/main.py new file mode 100644 index 0000000..71e1569 --- /dev/null +++ b/Visual Studio Code Projects/quizzler-app-start/main.py @@ -0,0 +1,21 @@ +from question_model import Question +from data import question_data +from quiz_brain import QuizBrain +from ui import QuizInterface + +question_bank = [] +for question in question_data: + question_text = question["question"] + question_answer = question["correct_answer"] + new_question = Question(question_text, question_answer) + question_bank.append(new_question) + + +quiz = QuizBrain(question_bank) +quiz_ui = QuizInterface(quiz) + +# while quiz.still_has_questions(): +# quiz.next_question() + +print("You've completed the quiz") +print(f"Your final score was: {quiz.score}/{quiz.question_number}") diff --git a/Visual Studio Code Projects/quizzler-app-start/question_model.py b/Visual Studio Code Projects/quizzler-app-start/question_model.py new file mode 100644 index 0000000..b3d63d3 --- /dev/null +++ b/Visual Studio Code Projects/quizzler-app-start/question_model.py @@ -0,0 +1,5 @@ +class Question: + + def __init__(self, q_text, q_answer): + self.text = q_text + self.answer = q_answer diff --git a/Visual Studio Code Projects/quizzler-app-start/quiz_brain.py b/Visual Studio Code Projects/quizzler-app-start/quiz_brain.py new file mode 100644 index 0000000..7bd15da --- /dev/null +++ b/Visual Studio Code Projects/quizzler-app-start/quiz_brain.py @@ -0,0 +1,30 @@ +import html +class QuizBrain: + + def __init__(self, q_list): + self.question_number = 0 + self.score = 0 + self.question_list = q_list + self.current_question = None + + def still_has_questions(self): + return self.question_number < len(self.question_list) + + def next_question(self): + self.current_question = self.question_list[self.question_number] + self.question_number += 1 + q_text = html.unescape(self.current_question.text) + return f"Q.{self.question_number}: {q_text} True or False: " + # user_answer = input(f"Q.{self.question_number}: {self.current_question.text} (True/False): ") + # self.check_answer(user_answer) + + def check_answer(self, user_answer): + correct_answer = self.current_question.answer + if user_answer.lower() == correct_answer.lower(): + self.score += 1 + return True + else: + return False + + print(f"Your current score is: {self.score}/{self.question_number}") + print("\n") diff --git a/Visual Studio Code Projects/quizzler-app-start/ui.py b/Visual Studio Code Projects/quizzler-app-start/ui.py new file mode 100644 index 0000000..68bba1f --- /dev/null +++ b/Visual Studio Code Projects/quizzler-app-start/ui.py @@ -0,0 +1,70 @@ +from tkinter import * +from quiz_brain import QuizBrain + +THEME_COLOR = "#375362" + +class QuizInterface: + + def __init__(self, quiz_brain: QuizBrain): + self.quiz = quiz_brain + + self.window = Tk() + self.window.title("Quizzler") + self.window.config(padx=40, pady=40, bg=THEME_COLOR) + + self.score_label = Label(text="Score: 0", + fg="white", + bg=THEME_COLOR, + font=("Times", 18, "bold") + ) + self.score_label.grid(row=0, column=1) + + self.canvas = Canvas(width=300, height=250, bg="white") + self.question_text = self.canvas.create_text( + 150, + 125, + width=280, + text="Some Question Text", + fill='black', + font=("Times", 20, "bold") + + ) + self.canvas.grid(row=1, column=0, columnspan=2, pady=50, padx=30) + + true_image = PhotoImage(file="images/true.png") + false_image = PhotoImage(file="images/false.png") + self.true_button = Button(image=true_image, highlightthickness=0, bg=THEME_COLOR, fg=THEME_COLOR, command=self.true_pressed) + self.false_button = Button(image=false_image, highlightthickness=0, bg=THEME_COLOR, fg=THEME_COLOR, command=self.false_pressed) + self.true_button.grid(row=2, column=1) + self.false_button.grid(row=2, column=0) + + self.get_next_question() + + self.window.mainloop() + + def get_next_question(self): + self.canvas.config(bg="white") + if self.quiz.still_has_questions(): + self.score_label.config(text=f"Score: {self.quiz.score}") + q_text = self.quiz.next_question() + self.canvas.itemconfig(self.question_text, text=q_text) + else: + self.canvas.itemconfig(self.question_text, text="Hey looks like you were enjoying the quiz but I am sorry" + " to inform you that we have ran out of questions") + self.true_button.config(state="disabled") + self.false_button.config(state="disabled") + + def true_pressed(self): + self.give_feedback(self.quiz.check_answer("True")) + + def false_pressed(self): + is_right = self.quiz.check_answer("False") + self.give_feedback((is_right)) + + def give_feedback(self, is_right): + if is_right: + self.canvas.config(bg="lime green") + else: + self.canvas.config(bg="red") + + self.window.after(1000, self.get_next_question) diff --git a/Visual Studio Code Projects/turtle-crossing-start/.idea/.gitignore b/Visual Studio Code Projects/turtle-crossing-start/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/Visual Studio Code Projects/turtle-crossing-start/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/Visual Studio Code Projects/turtle-crossing-start/.idea/inspectionProfiles/Project_Default.xml b/Visual Studio Code Projects/turtle-crossing-start/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..6db1d54 --- /dev/null +++ b/Visual Studio Code Projects/turtle-crossing-start/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,14 @@ + + + + \ No newline at end of file diff --git a/Visual Studio Code Projects/turtle-crossing-start/.idea/inspectionProfiles/profiles_settings.xml b/Visual Studio Code Projects/turtle-crossing-start/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/Visual Studio Code Projects/turtle-crossing-start/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/Visual Studio Code Projects/turtle-crossing-start/.idea/misc.xml b/Visual Studio Code Projects/turtle-crossing-start/.idea/misc.xml new file mode 100644 index 0000000..726d547 --- /dev/null +++ b/Visual Studio Code Projects/turtle-crossing-start/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/Visual Studio Code Projects/turtle-crossing-start/.idea/modules.xml b/Visual Studio Code Projects/turtle-crossing-start/.idea/modules.xml new file mode 100644 index 0000000..a57aa25 --- /dev/null +++ b/Visual Studio Code Projects/turtle-crossing-start/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Visual Studio Code Projects/turtle-crossing-start/.idea/turtle-crossing-start.iml b/Visual Studio Code Projects/turtle-crossing-start/.idea/turtle-crossing-start.iml new file mode 100644 index 0000000..339a2d5 --- /dev/null +++ b/Visual Studio Code Projects/turtle-crossing-start/.idea/turtle-crossing-start.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Visual Studio Code Projects/turtle-crossing-start/ARCHBTW.py b/Visual Studio Code Projects/turtle-crossing-start/ARCHBTW.py new file mode 100644 index 0000000..6cb5fd9 --- /dev/null +++ b/Visual Studio Code Projects/turtle-crossing-start/ARCHBTW.py @@ -0,0 +1 @@ +print("") \ No newline at end of file diff --git a/Visual Studio Code Projects/turtle-crossing-start/__pycache__/car_manager.cpython-312.pyc b/Visual Studio Code Projects/turtle-crossing-start/__pycache__/car_manager.cpython-312.pyc new file mode 100644 index 0000000..bf63492 Binary files /dev/null and b/Visual Studio Code Projects/turtle-crossing-start/__pycache__/car_manager.cpython-312.pyc differ diff --git a/Visual Studio Code Projects/turtle-crossing-start/__pycache__/car_manager.cpython-38.pyc b/Visual Studio Code Projects/turtle-crossing-start/__pycache__/car_manager.cpython-38.pyc new file mode 100644 index 0000000..39dc32f Binary files /dev/null and b/Visual Studio Code Projects/turtle-crossing-start/__pycache__/car_manager.cpython-38.pyc differ diff --git a/Visual Studio Code Projects/turtle-crossing-start/__pycache__/player.cpython-312.pyc b/Visual Studio Code Projects/turtle-crossing-start/__pycache__/player.cpython-312.pyc new file mode 100644 index 0000000..eafef72 Binary files /dev/null and b/Visual Studio Code Projects/turtle-crossing-start/__pycache__/player.cpython-312.pyc differ diff --git a/Visual Studio Code Projects/turtle-crossing-start/__pycache__/player.cpython-38.pyc b/Visual Studio Code Projects/turtle-crossing-start/__pycache__/player.cpython-38.pyc new file mode 100644 index 0000000..96edf08 Binary files /dev/null and b/Visual Studio Code Projects/turtle-crossing-start/__pycache__/player.cpython-38.pyc differ diff --git a/Visual Studio Code Projects/turtle-crossing-start/__pycache__/scoreboard.cpython-312.pyc b/Visual Studio Code Projects/turtle-crossing-start/__pycache__/scoreboard.cpython-312.pyc new file mode 100644 index 0000000..6e3101e Binary files /dev/null and b/Visual Studio Code Projects/turtle-crossing-start/__pycache__/scoreboard.cpython-312.pyc differ diff --git a/Visual Studio Code Projects/turtle-crossing-start/__pycache__/scoreboard.cpython-38.pyc b/Visual Studio Code Projects/turtle-crossing-start/__pycache__/scoreboard.cpython-38.pyc new file mode 100644 index 0000000..d3449c8 Binary files /dev/null and b/Visual Studio Code Projects/turtle-crossing-start/__pycache__/scoreboard.cpython-38.pyc differ diff --git a/Visual Studio Code Projects/turtle-crossing-start/blah.py b/Visual Studio Code Projects/turtle-crossing-start/blah.py new file mode 100644 index 0000000..11de5bf --- /dev/null +++ b/Visual Studio Code Projects/turtle-crossing-start/blah.py @@ -0,0 +1,28 @@ +from turtle import Turtle + +t = Turtle() +t.penup() +t.goto(0, 0) + +def draw_square(size, color): + t.pendown() + t.color(color) + for x in range(4): + t.forward(size) + t.right(90) + t.penup() + +def draw_circle(size, color): + t.pendown() + t.color(color) + for x in range(36): + t.forward(size) + t.right(10) + t.penup() + + +while True: + t.speed(100) + draw_square(100, "red") + draw_circle(20, "blue") + t.right(10) diff --git a/Visual Studio Code Projects/turtle-crossing-start/car_manager.py b/Visual Studio Code Projects/turtle-crossing-start/car_manager.py new file mode 100644 index 0000000..1c5f05f --- /dev/null +++ b/Visual Studio Code Projects/turtle-crossing-start/car_manager.py @@ -0,0 +1,31 @@ +from turtle import Turtle +import random + +COLORS = ["red", "orange", "yellow", "green", "blue", "purple"] +STARTING_MOVE_DISTANCE = 5 +MOVE_INCREMENT = 10 + + +class CarManager: + + def __init__(self): + self.all_cars = [] + self.car_speed = STARTING_MOVE_DISTANCE + + def create_car(self): + random_chance = random.randint(1, 6) + if random_chance == 1: + new_car = Turtle("square") + new_car.shapesize(stretch_wid=1, stretch_len=2) + new_car.penup() + new_car.color(random.choice(COLORS)) + random_y = random.randint(-400, 400) + new_car.goto(1000, random_y) + self.all_cars.append(new_car) + + def move_cars(self): + for car in self.all_cars: + car.backward(self.car_speed) + + def level_up(self): + self.car_speed += MOVE_INCREMENT diff --git a/Visual Studio Code Projects/turtle-crossing-start/main.py b/Visual Studio Code Projects/turtle-crossing-start/main.py new file mode 100644 index 0000000..58f8f8e --- /dev/null +++ b/Visual Studio Code Projects/turtle-crossing-start/main.py @@ -0,0 +1,39 @@ +import time +from turtle import Screen +from player import Player +from car_manager import CarManager +from scoreboard import Scoreboard + +screen = Screen() +screen.setup(width=2000, height=1000) +screen.tracer(0) + +player = Player() +car_manager = CarManager() +scoreboard = Scoreboard() + +screen.listen() +screen.onkey(player.go_up, "Up") + +game_is_on = True +while game_is_on: + time.sleep(0.1) + screen.update() + + car_manager.create_car() + car_manager.move_cars() + + #Detect collision with car + for car in car_manager.all_cars: + if car.distance(player) < 20: + game_is_on = False + scoreboard.game_over() + + #Detect successful crossing + if player.is_at_finish_line(): + player.go_to_start() + car_manager.level_up() + scoreboard.increase_level() + + +screen.exitonclick() \ No newline at end of file diff --git a/Visual Studio Code Projects/turtle-crossing-start/player.py b/Visual Studio Code Projects/turtle-crossing-start/player.py new file mode 100644 index 0000000..d606f29 --- /dev/null +++ b/Visual Studio Code Projects/turtle-crossing-start/player.py @@ -0,0 +1,27 @@ +from turtle import Turtle + +STARTING_POSITION = (0, -450) +MOVE_DISTANCE = 10 +FINISH_LINE_Y = 490 + + +class Player(Turtle): + def __init__(self): + super().__init__() + self.shape("turtle") + self.penup() + self.color("turquoise") + self.go_to_start() + self.setheading(90) + + def go_up(self): + self.forward(MOVE_DISTANCE) + + def go_to_start(self): + self.goto(STARTING_POSITION) + + def is_at_finish_line(self): + if self.ycor() > FINISH_LINE_Y: + return True + else: + return False diff --git a/Visual Studio Code Projects/turtle-crossing-start/scoreboard.py b/Visual Studio Code Projects/turtle-crossing-start/scoreboard.py new file mode 100644 index 0000000..346cca3 --- /dev/null +++ b/Visual Studio Code Projects/turtle-crossing-start/scoreboard.py @@ -0,0 +1,26 @@ +from turtle import Turtle + +FONT = ("Courier", 24, "normal") + + +class Scoreboard(Turtle): + + def __init__(self): + super().__init__() + self.level = 1 + self.hideturtle() + self.penup() + self.goto(-950, 450) + self.update_scoreboard() + + def update_scoreboard(self): + self.clear() + self.write(f"Level: {self.level}", align="left", font=FONT) + + def increase_level(self): + self.level += 1 + self.update_scoreboard() + + def game_over(self): + self.goto(0, 0) + self.write("GAME OVER ", align="center", font=FONT) diff --git a/Visual Studio Code Projects/word_2_num.py b/Visual Studio Code Projects/word_2_num.py new file mode 100644 index 0000000..7d16e25 --- /dev/null +++ b/Visual Studio Code Projects/word_2_num.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +Created on Mon Aug 26 15:31:48 2024 + +@author: sameer +""" + +#Program for converting a number entered as word into integer +#Another option is to use word2number library + +def words_to_number(words): + num_words = { + "zero": 0, "one": 1, "two": 2, "three": 3, "four": 4, + "five": 5, "six": 6, "seven": 7, "eight": 8, "nine": 9, + "ten": 10, "eleven": 11, "twelve": 12, "thirteen": 13, + "fourteen": 14, "fifteen": 15, "sixteen": 16, "seventeen": 17, + "eighteen": 18, "nineteen": 19, "twenty": 20, "thirty": 30, + "forty": 40, "fifty": 50, "sixty": 60, "seventy": 70, + "eighty": 80, "ninety": 90, "hundred": 100, "thousand": 1000 + } + + words = words.lower().split() + total = 0 + current = 0 + + for word in words: + if word in num_words: + scale = num_words[word] + if scale == 100: + current *= scale + elif scale == 1000: + current *= scale + total += current + current = 0 + else: + current += scale + else: + raise ValueError(f"Word '{word}' is not a valid number") + + return total + current + +# Example usage +while words_to_number.words: + user = input("guess a number: ") + + print(words_to_number(user)) \ No newline at end of file