Покращте гру, розроблену на уроці.
Зробіть так, щоб у неї могли грати одразу два гравці. Перший,
як і раніше, натискатиме кнопку лівою клавішею миші, другий – клавішею S на клавіатурі.
import tkinter as tk
bomb =100
score = 0
press_return=True
root = tk.Tk()
root.title('Game help bunny')
root.geometry('600x500+600+200')

label1 = tk.Label(text=f'Bomb {str(bomb)}',
font=('Ariel',16),
bg='pink',
fg='black',
width=200,
anchor='w', relief=tk.RAISED, bd=20)
label1.pack()
label2 = tk.Label(text=f'You help bunny {str(score)}',
font=('Ariel', 16),
bg='pink',
fg='black',
width=200, relief=tk.RAISED, bd=20)
label2.pack()

img_1 =tk.PhotoImage(file='giphy (1).gif')
img_2=tk.PhotoImage(file='giphy (2).gif')
img_3=tk.PhotoImage(file='korean-glow.gif')
img_4=tk.PhotoImage(file='giphy (3).gif')

label3=tk.Label(image=img_1)
label3.pack()
def update_display():
global bomb
global score
if bomb >=99:
label3.config(image=img_1)
elif 66 <= bomb <99:
label3.config(image=img_2)
elif 0 < bomb <66:
label3.config(image=img_3)
else:
label3.config(image=img_4)
label1.config(text='Bomb'+str(bomb))
label2.config(text=' You help bunny'+str(score))
label1.after(100,update_display)
def is_alive():
global bomb
global press_return
if bomb<=0:
bomb=0
label1.config('WOW WOW WOW')
press_return = True
return False
else:
return True
def update_bomb():
global bomb
bomb-=5
if is_alive():
label1.after(400,update_bomb)
def update_score():
global score
if is_alive():
score += 1
label2.after(3000,update_score)
def start(event):
global press_return
if not press_return:
pass
else:
update_bomb()
update_score()
update_display()
label1.config(text='')
press_return = False

def click():
global bomb
if is_alive():
bomb+=1
btn = tk.Button(text='Click me',bg='black',fg='pink',width=50, command=click)
btn.pack()
root.bind(' ',start)
root.mainloop()
вот код

Ответы

Ответ дал: eespay
0
Щоб забезпечити можливість гри для двох гравців, ви можете додати другий обробник подій для клавіші 'S' та відповідні функції для другого гравця. Також, слід дозволити обом гравцям взаємодіяти зі своїми клавішами паралельно. Ось модифікований код:

i import tkinter as tk

bomb = 100
score = 0
press_return = [True, True] # Кожен гравець має свій флаг натискання

root = tk.Tk()
root.title('Game help bunny')
root.geometry('600x500+600+200')

label1 = tk.Label(text=f'Bomb {str(bomb)}',
font=('Ariel', 16),
bg='pink',
fg='black',
width=200,
anchor='w', relief=tk.RAISED, bd=20)
label1.pack()

label2 = tk.Label(text=f'You help bunny {str(score)}',
font=('Ariel', 16),
bg='pink',
fg='black',
width=200, relief=tk.RAISED, bd=20)
label2.pack()

img_1 = tk.PhotoImage(file='giphy (1).gif')
img_2 = tk.PhotoImage(file='giphy (2).gif')
img_3 = tk.PhotoImage(file='korean-glow.gif')
img_4 = tk.PhotoImage(file='giphy (3).gif')

label3 = tk.Label(image=img_1)
label3.pack()


def update_display():
global bomb
global score
if bomb >= 99:
label3.config(image=img_1)
elif 66 <= bomb < 99:
label3.config(image=img_2)
elif 0 < bomb < 66:
label3.config(image=img_3)
else:
label3.config(image=img_4)
label1.config(text='Bomb' + str(bomb))
label2.config(text=' You help bunny' + str(score))
label1.after(100, update_display)


def is_alive():
global bomb
global press_return
if bomb <= 0:
bomb = 0
label1.config(text='WOW WOW WOW')
press_return = [True, True]
return False
else:
return True


def update_bomb(player):
global bomb
bomb -= 5
if is_alive():
label1.after(400, lambda: update_bomb(player))


def update_score(player):
global score
if is_alive():
score += 1
label2.after(3000, lambda: update_score(player))


def start(player):
global press_return
if not press_return[player]:
pass
else:
update_bomb(player)
update_score(player)
update_display()
label1.config(text='')
press_return[player] = False


def click():
global bomb
if is_alive():
bomb += 1


btn = tk.Button(text='Click me', bg='black', fg='pink', width=50, command=click)
btn.pack()

# Додано обробник подій для клавіші 'S'
root.bind(' ', lambda event: start(0))
root.bind('s', lambda event: start(1))

root.mainloop()

Цей код дозволяє обом гравцям взаємодіяти з грою, натискуючи відповідні клавіші.
Вас заинтересует