forked from MagnoEfren/tkinter
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
129 lines (102 loc) · 3.55 KB
/
main.py
File metadata and controls
129 lines (102 loc) · 3.55 KB
1
2
3
4
5
6
7
8
9
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
from PIL import Image, ImageTk
import tkinter as tk
from pygame import mixer
import random
mixer.init()
window = tk.Tk()
window.geometry('1000x600')
window.title('Flappy Bird')
x = 150
y = 300
score = 0
speed = 10
game_over = False
img_bird = Image.open('images/bird.png')
img_bird = ImageTk.PhotoImage(img_bird)
img_pipe_down = Image.open('images/pipe.png') # 104x900
img_pipe_top = img_pipe_down.rotate(180)
img_pipe_down = ImageTk.PhotoImage(img_pipe_down)
img_pipe_top = ImageTk.PhotoImage(img_pipe_top)
img_reset = Image.open('images/reiniciar.png')
img_reset = ImageTk.PhotoImage(img_reset)
canvas = tk.Canvas(window, highlightthickness=0, bg= '#00bfff')
canvas.place(relwidth = 1, relheight=1)
text_score = canvas.create_text(50,50, text= '0', fill='white', font=('D3 Egoistism outline', 30))
bird = canvas.create_image(x,y, anchor = 'nw', image =img_bird)
pipe_top = canvas.create_image(1200, -550, anchor= 'nw', image = img_pipe_top)
pipe_down = canvas.create_image(1200, 550, anchor= 'nw', image = img_pipe_down)
mixer.music.load('audio/swoosh.wav')
mixer.music.play(loops= 0)
def move_bird_key(event):
global x,y
if not game_over:
y -=30
canvas.coords(bird, x,y)
mixer.music.load('audio/wing.wav')
mixer.music.play(loops= 0)
window.bind( "<space>", move_bird_key)
def move_bird():
global x,y
y +=5
canvas.coords(bird, x,y)
if y<0 or y> window.winfo_height():
game_end()
if not game_over:
window.after(50, move_bird)
def move_pipe():
global score, game_over, speed
canvas.move(pipe_top, -speed, 0)
canvas.move(pipe_down, -speed, 0)
if canvas.coords(pipe_down)[0] < -100:
score += 1
speed += 1
canvas.itemconfigure(text_score, text = str(score))
h = window.winfo_height()
num = random.choice([i for i in range(160,h, 160)])
canvas.coords(pipe_down, window.winfo_width(), num+160)
canvas.coords(pipe_top, window.winfo_width(), num-900)
if 0 < canvas.coords(pipe_down)[0]<160:
channel = mixer.Channel(1)
channel.set_volume(1.0)
sound = mixer.Sound('audio/point.wav')
channel.play(sound, loops= 0)
if canvas.coords(pipe_down):
if canvas.bbox(bird)[0] < canvas.bbox(pipe_down)[2] and canvas.bbox(bird)[2]> canvas.bbox(pipe_down)[0]:
if canvas.bbox(bird)[1] < canvas.bbox(pipe_top)[3] or canvas.bbox(bird)[3]> canvas.bbox(pipe_down)[1]:
game_end()
if not game_over:
window.after(50, move_pipe)
def reset_game():
global x,y,score, speed, game_over
x = 150
y = 300
score = 0
speed = 10
game_over = False
canvas.coords(bird, x,y)
canvas.coords(pipe_top, 1200,-550)
canvas.coords(pipe_down, 1200, 550)
canvas.itemconfigure(text_score, text ="0")
lbl_game_over.place_forget()
bt_reset.place_forget()
move_bird()
move_pipe()
mixer.music.load('audio/swoosh.wav')
mixer.music.play(loops= 0)
def game_end():
global game_over
game_over = True
lbl_game_over.place(relx =0.5, rely =0.5, anchor='center')
bt_reset.place(relx = 0.5, rely = 0.7, anchor ='center')
mixer.music.load('audio/hit.wav')
mixer.music.play(loops= 0)
while mixer.music.get_busy():
continue
mixer.music.load('audio/die.wav')
mixer.music.play(loops= 0)
lbl_game_over = tk.Label(window, text = 'Game Over !', font= ('D3 Egoistism outline', 30), fg='white', bg='#00bfff')
bt_reset = tk.Button(window, border = 0, image= img_reset, activebackground='#00bfff', bg= '#00bfff', command = reset_game)
window.after(50, move_bird)
window.after(50, move_pipe)
window.call('wm', 'iconphoto', window._w, img_bird)
window.mainloop()