KEMBAR78
List Coding Experiment | PDF | Computer Programming | Software Engineering
0% found this document useful (0 votes)
4 views8 pages

List Coding Experiment

The document contains three separate Python programs using the Tkinter library: a digital clock that displays the current time, day, and date; a simple calculator that performs basic arithmetic operations; and a snake game where the player controls a snake to eat food while avoiding collisions. Each program creates a graphical user interface (GUI) and utilizes various Tkinter widgets like labels, buttons, and canvas. The code includes functions for updating the display, handling user input, and managing game logic.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views8 pages

List Coding Experiment

The document contains three separate Python programs using the Tkinter library: a digital clock that displays the current time, day, and date; a simple calculator that performs basic arithmetic operations; and a snake game where the player controls a snake to eat food while avoiding collisions. Each program creates a graphical user interface (GUI) and utilizes various Tkinter widgets like labels, buttons, and canvas. The code includes functions for updating the display, handling user input, and managing game logic.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 8

1.

CLOCK
from tkinter import *
from time import *

def update():
time_string = strftime("%I:%M:%S %p")
time_label.config(text=time_string)

day_string = strftime("%A")
day_label.config(text=day_string)

date_string = strftime("%B %d, %Y")


date_label.config(text=date_string)

time_label.after(1000,update)

window = Tk()

time_label = Label(window, font=("Times New Roman", 50), fg="red", bg="blue")


time_label.pack()

day_label = Label(window, font=("Times New Roman", 25))


day_label.pack()

date_label = Label(window, font=("Times New Roman", 30))


date_label.pack()

update()

window.mainloop()
2.CALCULATOR
from tkinter import *

def button_press(num):

global equation_text
equation_text = equation_text + str(num)
equation_label.set(equation_text)

def equals():

global equation_text

try:
total = str(eval(equation_text))
equation_label.set(total)
equation_text = total

except SyntaxError:

equation_label.set("Syntax Error!")
equation_text = ""

except ZeroDivisionError:

equation_label.set("Arithmetic Error!")
equation_text = ""

def clear():

global equation_text
equation_label.set("")
equation_text = ""

window = Tk()
window.title("Calculator Program")
window.geometry("500x500")

equation_text = ""

equation_label = StringVar()

label = Label(window, textvariable=equation_label, font=('consolas',20), bg="white", width=24, height=2)


label.pack()

frame = Frame(window)
frame.pack()

button1 = Button(frame, text=1, height=4, width=9, font=35,


command= lambda: button_press(1))
button1.grid(row=0,column=0)

button2 = Button(frame, text=2, height=4, width=9, font=35,


command= lambda: button_press(2))
button2.grid(row=0,column=1)

button3 = Button(frame, text=3, height=4, width=9, font=35,


command= lambda: button_press(3))
button3.grid(row=0,column=2)

button4 = Button(frame, text=4, height=4, width=9, font=35,


command= lambda: button_press(4))
button4.grid(row=1,column=0)

button5 = Button(frame, text=5, height=4, width=9, font=35,


command= lambda: button_press(5))
button5.grid(row=1,column=1)

button6 = Button(frame, text=6, height=4, width=9, font=35,


command= lambda: button_press(6))
button6.grid(row=1,column=2)

button7 = Button(frame, text=7, height=4, width=9, font=35,


command= lambda: button_press(7))
button7.grid(row=2,column=0)

button8 = Button(frame, text=8, height=4, width=9, font=35,


command= lambda: button_press(8))
button8.grid(row=2,column=1)

button9 = Button(frame, text=9, height=4, width=9, font=35,


command= lambda: button_press(9))
button9.grid(row=2,column=2)

button0 = Button(frame, text=0, height=4, width=9, font=35,


command= lambda: button_press(0))
button0.grid(row=3,column=0)
plus = Button(frame, text='+', height=4, width=9, font=35,
command= lambda: button_press('+'))
plus.grid(row=0,column=3)

minus = Button(frame, text='-', height=4, width=9, font=35,


command= lambda: button_press('-'))
minus.grid(row=1,column=3)

multiply = Button(frame, text='*', height=4, width=9, font=35,


command= lambda: button_press('*'))
multiply.grid(row=2,column=3)

divide = Button(frame, text='/', height=4, width=9, font=35,


command= lambda: button_press('/'))
divide.grid(row=3,column=3)

equal = Button(frame, text='=', height=4, width=9, font=35,


command= equals)
equal.grid(row=3,column=2)

decimal = Button(frame, text='.', height=4, width=9, font=35,


command= lambda: button_press('.'))
decimal.grid(row=3,column=1)

clear = Button(window, text='Clear', height=4, width=12, font=35,


command= clear)
clear.pack()

window.mainloop()
3. SNAKE
from tkinter import*
import random

GAME_WIDTH = 1000
GAME_HEIGHT = 500
SPEED = 500
SPACE_SIZE = 36
BODY_PARTS = 2
SNAKE_COLOR = "yellow"
FOOD_COLOR = "red"
BACKGROUND_COLOR = "black"

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,int((GAME_WIDTH/SPACE_SIZE))) * SPACE_SIZE
y = random.randint(0,int((GAME_HEIGHT/SPACE_SIZE))) * 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:
print("GAME OVER!")
return True
elif y < 0 or y >= GAME_HEIGHT:
print("GAME OVER!")
return True

for body_part in snake.coordinates[1:]:


if x == body_part[0] and y == body_part[1]:
print("GAME OVER!")
return True

return False

def game_over():
canvas.delete(ALL)
canvas.create_text(canvas.winfo_width()/2, canvas.winfo_height()/2,
font=('consolas', 50), text="GAME OVER!", fill="red", tag="gameover")

window = Tk()
window.title("Ular Hijau")
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}+{int(x)}+{int(y)}")
window.bind('<Left>', lambda event: change_direction('left'))
window.bind('<Right>', lambda event: change_direction('right'))
window.bind('<Up>', lambda event: change_direction('up'))
window.bind('<Down>', lambda event: change_direction('down'))

snake = Snake()
food = Food()
next_turn(snake, food)

window.mainloop()

You might also like