Баг с спавном и поведением врагов
Решил я сделать игру в жанре shot`em up. Прописывал спавн врагов и их поведение.
Столкнулся с не приятным багом.
Суть бага в том, что первый враг пролетает как надо, но после него остальные враги начинают двигаться с большой скоростью и спавнятся также быстро.
P.S.(Это tkinter а, точнее python 3)
from tkinter import *
import time
import random
tk = Tk()
c = Canvas(tk, width=500, height=840, bg='white', )
c.pack()
t = 0
click = 0
vpos1 = [382.5, 432.5]
vpos2 = [330, 380,]
vpos3 = [246.5, 296,5]
vpos4 = [200, 250]
vpos5 = [225.5, 275.5]
vpos6 = [120,170]
vpos7 = [67.5, 117.5]
posv = [vpos7,vpos6,vpos5,vpos4,vpos3,vpos2,vpos1]
kor1 = PhotoImage(file='unnamed.png')
kor = c.create_image(165, 700, anchor=NW, image=kor1)
c.create_line(499, 0, 499, 1049,width=3)
c.create_line(1, 0, 1, 1049,width=5)
c.create_line(1, 840, 499, 840,width=3)
def ogon(event):
global click
xko = c.coords(kor)[0]
xog = xko + 79
xoga = xko + 91
if click != 300:
boom=c.create_oval(xog,700,xoga,712, fill='grey',outline='black',tag='boom')
bomcord = c.coords(boom)
print('Coords boom =', bomcord)
for i in range(1,200):
c.move('boom',0,-5)
tk.update()
time.sleep(0.012)
c.itemconfig('boom', fill='red')
c.delete('boom')
else:
pass
def rightmove(event):
global click
xrkc = c.coords(kor)[0]
xrkc = xrkc + 170
if event.keysym == 'd' and click < 1 and xrkc < 492.5:
click += 1
for i in range(1,22):
time.sleep(0.004)
c.move(kor, 2.5, 0)
c.update()
click -= 1
##print('clikc =',click)
def leftmove(event):
global click
xl = c.coords(kor)[0]
if event.keysym == 'a' and click < 1 and xl > 7.5:
print('Left - ', xl)
click += 1
for i in range(1,22):
time.sleep(0.004)
c.move(kor, -2.5, 0)
c.update()
click -= 1
## print('clikc =',click)
c.bind_all('a',leftmove)
c.bind_all('d',rightmove)
c.bind('<Button-1>',ogon)
def ani_vrag():
global t
global vrag
tk.after(2000,spawn_vrag)
if t <= 90:
c.move('vrag',0,7)
tk.update()
t += 1
tk.after(12,ani_vrag)
else:
t -= 90
c.delete('vrag')
def spawn_vrag():
global posv
random.shuffle(posv)
x = posv[0]
x1 = x[0]
x2 = x[1]
vrag = c.create_rectangle(x1,1,x2,50,fill='red',outline='black',tag='vrag')
ani_vrag()
spawn_vrag()
tk.mainloop()