My first python game

I wrote this project in 2015, and it was one of my first ever projects. As you can probably tell from my code, I was not very experienced: I now understand classes. Also, this file is a written out below

from tkinter import *
from random import randint
HEIGHT = 600
WIDTH = 500
window = Tk()        
window.title('John\'s first python game!')
c = Canvas(window, width=WIDTH, height=HEIGHT, bg='lightgreen')
c.pack()
player_id = c.create_oval(235, 560, 265 ,590, fill='blue')
player_r = 15
player_spd = 0
coin_id = list()
score = 0
def del_coin(i):
    c.delete(coin_id[i])
    del coin_id[i]
def get_coords(coin):
    p = c.coords(coin)    
    x = (p[0] + p[2])/2
    y = (p[1] + p[3])/2
    return x, y
def distance(id1, id2):
    from math import sqrt
    x1, y1 = get_coords(id1)
    x2, y2 = get_coords(id2)
    return sqrt((x2 - x1)**2 + (y2 - y1)**2)
def collision():
    global score
    for coin in range(len(coin_id)-1, -1, -1):
        if distance(player_id, coin_id[coin]) < (20):
            score += 1
            del_coin(coin)
def clean_up_coins():
    for i in range(len(coin_id)-1, -1, -1):
        x, y = get_coords(coin_id[i])
        if y > 610:
            del_coin(i)
def move_coins():
    for i in range(len(coin_id)):
        c.move(coin_id[i], 0, 5)
def create_coin():
    from random import randint
    r = 5
    x = randint(5, 495)
    y = -5 
    id1 = c.create_oval(x - r, y - r, x + r, y + r, fill='yellow')
    coin_id.append(id1)
def move_player(event):
    global player_spd
    if event.keysym == 'Left':
        player_spd = -5
    elif event.keysym == 'Right':
        player_spd = 5
c.bind_all('<Key>', move_player)
c.create_text(50, 30, text='TIME', fill='purple' )
c.create_text(150, 30, text='SCORE', fill='purple' )
c.create_text(250, 30, text='LEVEL', fill='purple' )
time_text = c.create_text(50, 50, fill='purple' )
level_text = c.create_text(250, 50, fill='purple' )
score_text = c.create_text(150, 50, fill='purple' )
def show_score(score):
    c.itemconfig(score_text, text=str(score))
def show_time(time):
    c.itemconfig(time_text, text=str(time))
def show_level(level):
    c.itemconfig(level_text, text=str(level))
from time import sleep, time
from math import floor
TIME_LIMIT = 30
BONUS_SCORE = 25
score = 0
bonus = 0
end = time() + TIME_LIMIT
#MAIN GAME LOOP
while time() < end:
    pos = c.coords(player_id)
    if pos[0] >= 0 and pos[2] <= 500:
        c.move(player_id, player_spd, 0)
    elif pos[2] > 500:
        c.move(player_id, 500 - pos[2], 0)
    else:
        c.move(player_id, 0 - pos[0], 0) 
    if player_spd > 0:
        player_spd -= 0.1
    elif player_spd < 0:
        player_spd += 0.1
    if randint(1,10) == 5:
        create_coin()
    move_coins()
    clean_up_coins()
    if (int(score / BONUS_SCORE)) > bonus:
        bonus += 1
        end += TIME_LIMIT
    show_score(score)
    show_time(int(end - time()))
    show_level(int((floor(score/25)) + 1))
    sleep(0.01)
    window.update()
    collision()
c.create_text(250, 300, text='GAME OVER', fill='purple', font=('Helvetica', 30))
c.create_text(250, 330, text='Score: '+ str(score), fill='purple')
c.create_text(250, 345, text='Bonus time: '+ str(bonus*TIME_LIMIT), fill='purple')
window.update()
print('Shutting down...')
sleep(3)

Leave a Reply

Your email address will not be published. Required fields are marked *