diff --git a/projects/Alarm clock/alarm_clock.py b/projects/Alarm clock/alarm_clock.py new file mode 100644 index 000000000..4c746282f --- /dev/null +++ b/projects/Alarm clock/alarm_clock.py @@ -0,0 +1,86 @@ +# Import Required Library +from tkinter import * +import datetime +import time +import winsound +from threading import * + +# Create Object +root = Tk() + +# Set geometry +root.geometry("400x200") + +# Use Threading +def Threading(): + t1=Thread(target=alarm) + t1.start() + +def alarm(): + # Infinite Loop + while True: + # Set Alarm + set_alarm_time = f"{hour.get()}:{minute.get()}:{second.get()}" + + # Wait for one seconds + time.sleep(1) + + # Get current time + current_time = datetime.datetime.now().strftime("%H:%M:%S") + print(current_time,set_alarm_time) + + # Check whether set alarm is equal to current time or not + if current_time == set_alarm_time: + print("Time to Wake up") + # Playing sound + winsound.PlaySound("sound.wav",winsound.SND_ASYNC) + +# Add Labels, Frame, Button, Optionmenus +Label(root,text="Alarm Clock",font=("Helvetica 20 bold"),fg="red").pack(pady=10) +Label(root,text="Set Time",font=("Helvetica 15 bold")).pack() + +frame = Frame(root) +frame.pack() + +hour = StringVar(root) +hours = ('00', '01', '02', '03', '04', '05', '06', '07', + '08', '09', '10', '11', '12', '13', '14', '15', + '16', '17', '18', '19', '20', '21', '22', '23', '24' + ) +hour.set(hours[0]) + +hrs = OptionMenu(frame, hour, *hours) +hrs.pack(side=LEFT) + +minute = StringVar(root) +minutes = ('00', '01', '02', '03', '04', '05', '06', '07', + '08', '09', '10', '11', '12', '13', '14', '15', + '16', '17', '18', '19', '20', '21', '22', '23', + '24', '25', '26', '27', '28', '29', '30', '31', + '32', '33', '34', '35', '36', '37', '38', '39', + '40', '41', '42', '43', '44', '45', '46', '47', + '48', '49', '50', '51', '52', '53', '54', '55', + '56', '57', '58', '59', '60') +minute.set(minutes[0]) + +mins = OptionMenu(frame, minute, *minutes) +mins.pack(side=LEFT) + +second = StringVar(root) +seconds = ('00', '01', '02', '03', '04', '05', '06', '07', + '08', '09', '10', '11', '12', '13', '14', '15', + '16', '17', '18', '19', '20', '21', '22', '23', + '24', '25', '26', '27', '28', '29', '30', '31', + '32', '33', '34', '35', '36', '37', '38', '39', + '40', '41', '42', '43', '44', '45', '46', '47', + '48', '49', '50', '51', '52', '53', '54', '55', + '56', '57', '58', '59', '60') +second.set(seconds[0]) + +secs = OptionMenu(frame, second, *seconds) +secs.pack(side=LEFT) + +Button(root,text="Set Alarm",font=("Helvetica 15"),command=Threading).pack(pady=20) + +# Execute Tkinter +root.mainloop() diff --git a/projects/Snake Game/snake_game.py b/projects/Snake Game/snake_game.py new file mode 100644 index 000000000..19bd6f0f3 --- /dev/null +++ b/projects/Snake Game/snake_game.py @@ -0,0 +1,163 @@ +from tkinter import * +import random + +GAME_WIDTH = 700 +GAME_HEIGHT = 700 +SPEED = 100 +SPACE_SIZE = 50 +BODY_PARTS = 3 +SNAKE_COLOR = "#00FF00" +FOOD_COLOR = "#FF0000" +BACKGROUND_COLOR = "#000000" + + +class Snake: + + def __init__(self): + self.body_size = BODY_PARTS + self.coordinates = [] + self.squares = [] + + for i in range(0, BODY_PARTS): + self.coordinates.append([0, 0]) + + for x, y in self.coordinates: + square = canvas.create_rectangle(x, y, x + SPACE_SIZE, y + SPACE_SIZE, fill=SNAKE_COLOR, tag="snake") + self.squares.append(square) + + +class Food: + + def __init__(self): + + x = random.randint(0, (GAME_WIDTH / SPACE_SIZE)-1) * SPACE_SIZE + y = random.randint(0, (GAME_HEIGHT / SPACE_SIZE) - 1) * SPACE_SIZE + + self.coordinates = [x, y] + + canvas.create_oval(x, y, x + SPACE_SIZE, y + SPACE_SIZE, fill=FOOD_COLOR, tag="food") + + +def next_turn(snake, food): + + x, y = snake.coordinates[0] + + if direction == "up": + y -= SPACE_SIZE + elif direction == "down": + y += SPACE_SIZE + elif direction == "left": + x -= SPACE_SIZE + elif direction == "right": + x += SPACE_SIZE + + snake.coordinates.insert(0, (x, y)) + + square = canvas.create_rectangle(x, y, x + SPACE_SIZE, y + SPACE_SIZE, fill=SNAKE_COLOR) + + snake.squares.insert(0, square) + + if x == food.coordinates[0] and y == food.coordinates[1]: + + global score + + score += 1 + + label.config(text="Score:{}".format(score)) + + canvas.delete("food") + + food = Food() + + else: + + del snake.coordinates[-1] + + canvas.delete(snake.squares[-1]) + + del snake.squares[-1] + + if check_collisions(snake): + game_over() + + else: + window.after(SPEED, next_turn, snake, food) + + +def change_direction(new_direction): + + global direction + + if new_direction == 'left': + if direction != 'right': + direction = new_direction + elif new_direction == 'right': + if direction != 'left': + direction = new_direction + elif new_direction == 'up': + if direction != 'down': + direction = new_direction + elif new_direction == 'down': + if direction != 'up': + direction = new_direction + + +def check_collisions(snake): + + x, y = snake.coordinates[0] + + if x < 0 or x >= GAME_WIDTH: + return True + elif y < 0 or y >= GAME_HEIGHT: + return True + + for body_part in snake.coordinates[1:]: + if x == body_part[0] and y == body_part[1]: + return True + + return False + + +def game_over(): + + canvas.delete(ALL) + canvas.create_text(canvas.winfo_width()/2, canvas.winfo_height()/2, + font=('consolas',70), text="GAME OVER", fill="red", tag="gameover") + + +window = Tk() +window.title("Snake game") +window.resizable(False, False) + +score = 0 +direction = 'down' + +label = Label(window, text="Score:{}".format(score), font=('consolas', 40)) +label.pack() + +canvas = Canvas(window, bg=BACKGROUND_COLOR, height=GAME_HEIGHT, width=GAME_WIDTH) +canvas.pack() + +window.update() + +window_width = window.winfo_width() +window_height = window.winfo_height() +screen_width = window.winfo_screenwidth() +screen_height = window.winfo_screenheight() + +x = int((screen_width/2) - (window_width/2)) +y = int((screen_height/2) - (window_height/2)) + +window.geometry(f"{window_width}x{window_height}+{x}+{y}") + +window.bind('', lambda event: change_direction('left')) +window.bind('', lambda event: change_direction('right')) +window.bind('', lambda event: change_direction('up')) +window.bind('', lambda event: change_direction('down')) + +snake = Snake() +food = Food() + +next_turn(snake, food) + +window.mainloop() \ No newline at end of file