Mar-04-2021, 09:51 PM
Hi All,
This code is supposed to have the computer pick a number, the player has 3 lives to guess the number, and when they run out of lives the game ends. I am trying to represent the lives through pictures of hearts. The removal of heart_3 and heart_2 works, however when it gets to heart_1 and it goes to remove that it doesn't remove it and wait the 3000ms (3seconds) it just closes the window straight away. Why is this?
I will try and make all the functions into one but it is this for now.
This code is supposed to have the computer pick a number, the player has 3 lives to guess the number, and when they run out of lives the game ends. I am trying to represent the lives through pictures of hearts. The removal of heart_3 and heart_2 works, however when it gets to heart_1 and it goes to remove that it doesn't remove it and wait the 3000ms (3seconds) it just closes the window straight away. Why is this?
I will try and make all the functions into one but it is this for now.
import tkinter as tk from tkinter import * import random import time from PIL import ImageTk,Image window_4 = tk.Tk() window_4.title("Game") random_num = random.randint(1, 9) print(random_num) button_clicked=1 print (button_clicked) player_choice = 0 global lives lives = 3 print ("You are starting with " + str(lives) + " lives") def click_1(): global lives player_choice=1 if player_choice == random_num: print("Correct Guess - Well Done") window_4.after(3000) print ("You had " + str(lives) + " lives left") window_4.after(3000) print("The game will now terminate") window_4.after(3000, window_4.destroy()) else: lives = lives - 1 if lives == 2: heart_3.grid_forget() print ("You have " + str(lives) + " lives left") elif lives == 1: heart_2 .grid_forget() print ("You have " + str(lives) + " lives left") elif lives == 0: heart_1.grid_forget() print ("GAME OVER, you have run out of your 3 lives! - Thanks for playing") window_4.after(3000, window_4.destroy()) def click_2(): global lives player_choice=2 if player_choice == random_num: print("Correct Guess - Well Done") window_4.after(3000) print ("You had " + str(lives) + " lives left") window_4.after(3000) print("The game will now terminate") window_4.after(3000, window_4.destroy()) else: lives = lives - 1 if lives == 2: heart_3.grid_forget() print ("You have " + str(lives) + " lives left") elif lives == 1: heart_2 .grid_forget() print ("You have " + str(lives) + " lives left") elif lives == 0: heart_1.grid_forget() print ("GAME OVER, you have run out of your 3 lives! - Thanks for playing") window_4.after(3000, window_4.destroy()) def click_3(): global lives player_choice=3 if player_choice == random_num: print("Correct Guess - Well Done") window_4.after(3000) print ("You had " + str(lives) + " lives left") window_4.after(3000) print("The game will now terminate") window_4.after(3000, window_4.destroy()) else: lives = lives - 1 if lives == 2: heart_3.grid_forget() print ("You have " + str(lives) + " lives left") elif lives == 1: heart_2 .grid_forget() print ("You have " + str(lives) + " lives left") elif lives == 0: heart_1.grid_forget() print ("GAME OVER, you have run out of your 3 lives! - Thanks for playing") window_4.after(3000, window_4.destroy()) def click_4(): global lives player_choice=4 if player_choice == random_num: print("Correct Guess - Well Done") window_4.after(3000) print ("You had " + str(lives) + " lives left") window_4.after(3000) print("The game will now terminate") window_4.after(3000, window_4.destroy()) else: lives = lives - 1 if lives == 2: heart_3.grid_forget() print ("You have " + str(lives) + " lives left") elif lives == 1: heart_2 .grid_forget() print ("You have " + str(lives) + " lives left") elif lives == 0: heart_1.grid_forget() print ("GAME OVER, you have run out of your 3 lives! - Thanks for playing") window_4.after(3000, window_4.destroy()) def click_5(): global lives player_choice=5 if player_choice == random_num: print("Correct Guess - Well Done") window_4.after(3000) print ("You had " + str(lives) + " lives left") window_4.after(3000) print("The game will now terminate") window_4.after(3000, window_4.destroy()) else: lives = lives - 1 if lives == 2: heart_3.grid_forget() print ("You have " + str(lives) + " lives left") elif lives == 1: heart_2 .grid_forget() print ("You have " + str(lives) + " lives left") elif lives == 0: heart_1.grid_forget() print ("GAME OVER, you have run out of your 3 lives! - Thanks for playing") window_4.after(3000, window_4.destroy()) def click_6(): global lives player_choice=6 if player_choice == random_num: print("Correct Guess - Well Done") window_4.after(3000) print ("You had " + str(lives) + " lives left") window_4.after(3000) print("The game will now terminate") window_4.after(3000, window_4.destroy()) else: lives = lives - 1 if lives == 2: heart_3.grid_forget() print ("You have " + str(lives) + " lives left") elif lives == 1: heart_2 .grid_forget() print ("You have " + str(lives) + " lives left") elif lives == 0: heart_1.grid_forget() print ("GAME OVER, you have run out of your 3 lives! - Thanks for playing") window_4.after(3000, window_4.destroy()) def click_7(): global lives player_choice=7 if player_choice == random_num: print("Correct Guess - Well Done") window_4.after(3000) print ("You had " + str(lives) + " lives left") window_4.after(3000) print("The game will now terminate") window_4.after(3000, window_4.destroy()) else: lives = lives - 1 if lives == 2: heart_3.grid_forget() print ("You have " + str(lives) + " lives left") elif lives == 1: heart_2 .grid_forget() print ("You have " + str(lives) + " lives left") elif lives == 0: heart_1.grid_forget() print ("GAME OVER, you have run out of your 3 lives! - Thanks for playing") window_4.after(3000, window_4.destroy()) def click_8(): global lives player_choice=8 if player_choice == random_num: print("Correct Guess - Well Done") window_4.after(3000) print ("You had " + str(lives) + " lives left") window_4.after(3000) print("The game will now terminate") window_4.after(3000, window_4.destroy()) else: lives = lives - 1 if lives == 2: heart_3.grid_forget() print ("You have " + str(lives) + " lives left") elif lives == 1: heart_2 .grid_forget() print ("You have " + str(lives) + " lives left") elif lives == 0: heart_1.grid_forget() print ("GAME OVER, you have run out of your 3 lives! - Thanks for playing") window_4.after(3000, window_4.destroy()) def click_9(): global lives player_choice=9 if player_choice == random_num: print("Correct Guess - Well Done") window_4.after(3000) print ("You had " + str(lives) + " lives left") window_4.after(3000) print("The game will now terminate") window_4.after(3000, window_4.destroy()) else: button_clicked=9 print(button_clicked) lives = lives - 1 if lives == 2: heart_3.grid_forget() print ("You have " + str(lives) + " lives left") elif lives == 1: heart_2 .grid_forget() print ("You have " + str(lives) + " lives left") elif lives == 0: heart_1.grid_forget() print ("GAME OVER, you have run out of your 3 lives! - Thanks for playing") window_4.after(3000, window_4.destroy()) label_instructions = tk.Label(text="The computer has chosen a number, your job is to correctly guess the number. You only have 3 tries, Good Luck!") label_instructions.grid(row=0, column = 2) game_button_1 = tk.Button(text="1", height=1, width=2, command=click_1) game_button_1.grid(row=1, column = 1) game_button_2 = tk.Button(text="2", height=1, width=2, command=click_2) game_button_2.grid(row=1, column = 3) game_button_3 = tk.Button(text="3", height=1, width=2, command=click_3) game_button_3.grid(row=1, column = 5) clear_label_1=tk.Label(text=" ") clear_label_1.grid(row=2, column=1) game_button_4 = tk.Button(text="4", height=1, width=2, command=click_4) game_button_4.grid(row=3, column = 1) game_button_5 = tk.Button(text="5", height=1, width=2, command=click_5) game_button_5.grid(row=3, column = 3) game_button_6 = tk.Button(text="6", height=1, width=2, command=click_6) game_button_6.grid(row=3, column = 5) clear_label_2=tk.Label(text=" ") clear_label_2.grid(row=4, column=1) game_button_7 = tk.Button(text="7", height=1, width=2, command=click_7) game_button_7.grid(row=5, column = 1) game_button_8 = tk.Button(text="8", height=1, width=2, command=click_8) game_button_8.grid(row=5, column = 3) game_button_9 = tk.Button(text="9", height=1, width=2, command=click_9) game_button_9.grid(row=5, column = 5) heart_1 = Canvas(window_4, width = 300, height = 300) heart_1.grid(row=6, column=2) img_1 = ImageTk.PhotoImage(Image.open("D:\Work\School\ComputerScience\Code\Other\pic_1.png")) heart_1.create_image(20, 20, anchor=NW, image=img_1) heart_2 = Canvas(window_4, width = 300, height = 300) heart_2.grid(row=6, column=3) img_2 = ImageTk.PhotoImage(Image.open("D:\Work\School\ComputerScience\Code\Other\pic_2.png")) heart_2.create_image(20, 20, anchor=NW, image=img_2) heart_3 = Canvas(window_4, width = 300, height = 300) heart_3.grid(row=6, column=4) img_3 = ImageTk.PhotoImage(Image.open("D:\Work\School\ComputerScience\Code\Other\pic_3.png")) heart_3.create_image(20, 20, anchor=NW, image=img_3) window_4.mainloop()