',Shoot)
self.bind('',Pause)
EnemyMove()
Enemy2Move()
Enemy3Move()
Enemy4Move()
Enemy5Move()
Generate()
ShotMove()
enShotMove()
#Frame settings
self.geometry("830x700")
self.title("Space Assault")
self.configure(bg="black")
def MultiPlayer():
self = Tk()
#Variables
global wave
global Damage
global Damage3
global Damage5
global Damage6
global Xpos
global Ypos
global X2pos
global Y2pos
global enXpos
global enYpos
global en2Xpos
global en2Ypos
global en3Xpos
global en3Ypos
global en4Xpos
global en4Ypos
global en5Xpos
global en5Ypos
global en6Xpos
global en6Ypos
global gameover
global direction
global direction2
global start
global created
global created2
global created3
global created4
global created5
global destroy
global summoned
global waveTime
global generated1
global generated2
global generated3
global generated4
global pause
global pace
wave = 0
Damage = 0
Damage3 = 0
Damage5 = 0
Damage6 = 0
Xpos = 425
Ypos = 350
X2pos = 400
Y2pos = 325
enXpos = 0
enYpos = 0
en2Xpos = 0
en2Ypos = 0
en3Xpos = 0
en3Ypos = 0
en4Xpos = 0
en4Ypos = 0
en5Xpos = 0
en5Ypos = 0
en6Xpos = 0
en6Ypos = 0
gameover = 0
direction = "N"
direction2 = "N"
start = 0
created = 0
created2 = 0
created3 = 0
created4 = 0
created5 = 0
destroy = 0
summoned = 0
waveTime = 0
generated1 = 1000
generated2 = 1250
generated3 = 1500
generated4 = 1750
pause = 0
#Lists
Players = []
PlayersXpos = []
PlayersYpos = []
PlayersDir = []
Shots = []
ShotsXpos = []
ShotsYpos = []
ShotDir = []
enShots = []
enShotsXpos = []
enShotsYpos = []
enShotDir = []
Enemies = []
EnemiesDmg = []
EnemiesXpos = []
EnemiesYpos = []
Enemies2 = []
Enemies2Xpos = []
Enemies2Ypos = []
Enemies3 = []
Enemies3Dmg = []
Enemies3Xpos = []
Enemies3Ypos = []
Enemies4 = []
Enemies4Xpos = []
Enemies4Ypos = []
Enemies5 = []
Enemies5Dmg = []
Enemies5Xpos = []
Enemies5Ypos = []
Enemies5Wall = []
Enemies6 = []
Enemies6Xpos = []
Enemies6Ypos = []
Enemies6Type = []
Enemies6Dmg = []
Explosions = []
#Score
self.lbScore = Label(text="Wave: "+str(wave)+" Next Wave: "+str(pace/1000)+"sec Press 'p' to pause",bg="black",fg="white")
self.lbScore.place(x=165,y=680,width=500,height=20)
#Player
self.player = Canvas(self,bg="black",highlightthickness=0,width=30,height=30)
self.player.place(x=Xpos,y=Ypos)
self.player.create_polygon(15,0,30,30,15,15,0,30,15,0,fill="green")
Players.append(self.player)
PlayersXpos.append(Xpos)
PlayersYpos.append(Ypos)
PlayersDir.append(direction)
#Player2
self.player2 = Canvas(self,bg="black",highlightthickness=0,width=30,height=30)
self.player2.place(x=X2pos,y=Y2pos)
self.player2.create_polygon(15,0,30,30,15,15,0,30,15,0,fill="white")
Players.append(self.player2)
PlayersXpos.append(X2pos)
PlayersYpos.append(Y2pos)
PlayersDir.append(direction2)
#Functions
def LeftKey(event):
global Xpos
global Ypos
global direction
global start
self.player.delete("all")
self.player.create_polygon(0,15,30,30,15,15,30,0,0,15,fill="green")
if PlayersXpos[0] > 0:
PlayersXpos[0] -= 25
self.player.place(x=PlayersXpos[0],y=PlayersYpos[0])
PlayersDir[0] = "W"
cycle = 0
for enemy in Enemies:
if PlayersXpos[0] == EnemiesXpos[cycle] and PlayersYpos[0] == EnemiesYpos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy2 in Enemies2:
if PlayersXpos[0] == Enemies2Xpos[cycle] and PlayersYpos[0] == Enemies2Ypos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy3 in Enemies3:
if PlayersXpos[0] == Enemies3Xpos[cycle] and PlayersYpos[0] == Enemies3Ypos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy4 in Enemies4:
if PlayersXpos[0] == Enemies4Xpos[cycle] and PlayersYpos[0] == Enemies4Ypos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy5 in Enemies5:
if PlayersXpos[0] == Enemies5Xpos[cycle] and PlayersYpos[0] == Enemies5Ypos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy6 in Enemies6:
if PlayersXpos[0] == Enemies6Xpos[cycle] and PlayersYpos[0] == Enemies6Ypos[cycle]:
GameOver()
cycle += 1
if start == 0:
NextWave()
start = 1
def RightKey(event):
global Xpos
global Ypos
global direction
global start
self.player.delete("all")
self.player.create_polygon(30,15,0,30,15,15,0,0,30,15,fill="green")
if PlayersXpos[0] < 800:
PlayersXpos[0] += 25
self.player.place(x=PlayersXpos[0],y=PlayersYpos[0])
PlayersDir[0] = "E"
cycle = 0
for enemy in Enemies:
if PlayersXpos[0] == EnemiesXpos[cycle] and PlayersYpos[0] == EnemiesYpos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy2 in Enemies2:
if PlayersXpos[0] == Enemies2Xpos[cycle] and PlayersYpos[0] == Enemies2Ypos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy3 in Enemies3:
if PlayersXpos[0] == Enemies3Xpos[cycle] and PlayersYpos[0] == Enemies3Ypos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy4 in Enemies4:
if PlayersXpos[0] == Enemies4Xpos[cycle] and PlayersYpos[0] == Enemies4Ypos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy5 in Enemies5:
if PlayersXpos[0] == Enemies5Xpos[cycle] and PlayersYpos[0] == Enemies5Ypos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy6 in Enemies6:
if PlayersXpos[0] == Enemies6Xpos[cycle] and PlayersYpos[0] == Enemies6Ypos[cycle]:
GameOver()
cycle += 1
if start == 0:
NextWave()
start = 1
def UpKey(event):
global Xpos
global Ypos
global direction
global start
self.player.delete("all")
self.player.create_polygon(15,0,30,30,15,15,0,30,15,0,fill="green")
if PlayersYpos[0] > 0:
PlayersYpos[0] -= 25
self.player.place(x=PlayersXpos[0],y=PlayersYpos[0])
PlayersDir[0] = "N"
cycle = 0
for enemy in Enemies:
if PlayersXpos[0] == EnemiesXpos[cycle] and PlayersYpos[0] == EnemiesYpos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy2 in Enemies2:
if PlayersXpos[0] == Enemies2Xpos[cycle] and PlayersYpos[0] == Enemies2Ypos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy3 in Enemies3:
if PlayersXpos[0] == Enemies3Xpos[cycle] and PlayersYpos[0] == Enemies3Ypos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy4 in Enemies4:
if PlayersXpos[0] == Enemies4Xpos[cycle] and PlayersYpos[0] == Enemies4Ypos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy5 in Enemies5:
if PlayersXpos[0] == Enemies5Xpos[cycle] and PlayersYpos[0] == Enemies5Ypos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy6 in Enemies6:
if PlayersXpos[0] == Enemies6Xpos[cycle] and PlayersYpos[0] == Enemies6Ypos[cycle]:
GameOver()
cycle += 1
if start == 0:
NextWave()
start = 1
def DownKey(event):
global Xpos
global Ypos
global direction
global start
self.player.delete("all")
self.player.create_polygon(15,30,30,0,15,15,0,0,15,30,fill="green")
if PlayersYpos[0] < 650:
PlayersYpos[0] += 25
self.player.place(x=PlayersXpos[0],y=PlayersYpos[0])
PlayersDir[0] = "S"
cycle = 0
for enemy in Enemies:
if PlayersXpos[0] == EnemiesXpos[cycle] and PlayersYpos[0] == EnemiesYpos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy2 in Enemies2:
if PlayersXpos[0] == Enemies2Xpos[cycle] and PlayersYpos[0] == Enemies2Ypos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy3 in Enemies3:
if PlayersXpos[0] == Enemies3Xpos[cycle] and PlayersYpos[0] == Enemies3Ypos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy4 in Enemies4:
if PlayersXpos[0] == Enemies4Xpos[cycle] and PlayersYpos[0] == Enemies4Ypos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy5 in Enemies5:
if PlayersXpos[0] == Enemies5Xpos[cycle] and PlayersYpos[0] == Enemies5Ypos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy6 in Enemies6:
if PlayersXpos[0] == Enemies6Xpos[cycle] and PlayersYpos[0] == Enemies6Ypos[cycle]:
GameOver()
cycle += 1
if start == 0:
NextWave()
start = 1
def AKey(event):
global start
self.player2.delete("all")
self.player2.create_polygon(0,15,30,30,15,15,30,0,0,15,fill="white")
if PlayersXpos[1] > 0:
PlayersXpos[1] -= 25
self.player2.place(x=PlayersXpos[1],y=PlayersYpos[1])
PlayersDir[1] = "W"
cycle = 0
for enemy in Enemies:
if PlayersXpos[1] == EnemiesXpos[cycle] and PlayersYpos[1] == EnemiesYpos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy2 in Enemies2:
if PlayersXpos[1] == Enemies2Xpos[cycle] and PlayersYpos[1] == Enemies2Ypos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy3 in Enemies3:
if PlayersXpos[1] == Enemies3Xpos[cycle] and PlayersYpos[1] == Enemies3Ypos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy4 in Enemies4:
if PlayersXpos[1] == Enemies4Xpos[cycle] and PlayersYpos[1] == Enemies4Ypos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy5 in Enemies5:
if PlayersXpos[1] == Enemies5Xpos[cycle] and PlayersYpos[1] == Enemies5Ypos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy6 in Enemies6:
if PlayersXpos[1] == Enemies6Xpos[cycle] and PlayersYpos[1] == Enemies6Ypos[cycle]:
GameOver()
cycle += 1
if start == 0:
NextWave()
start = 1
def DKey(event):
global start
self.player2.delete("all")
self.player2.create_polygon(30,15,0,30,15,15,0,0,30,15,fill="white")
if PlayersXpos[1] < 800:
PlayersXpos[1] += 25
self.player2.place(x=PlayersXpos[1] ,y=PlayersYpos[1] )
PlayersDir[1] = "E"
cycle = 0
for enemy in Enemies:
if PlayersXpos[1] == EnemiesXpos[cycle] and PlayersYpos[1] == EnemiesYpos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy2 in Enemies2:
if PlayersXpos[1] == Enemies2Xpos[cycle] and PlayersYpos[1] == Enemies2Ypos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy3 in Enemies3:
if PlayersXpos[1] == Enemies3Xpos[cycle] and PlayersYpos[1] == Enemies3Ypos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy4 in Enemies4:
if PlayersXpos[1] == Enemies4Xpos[cycle] and PlayersYpos[1] == Enemies4Ypos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy5 in Enemies5:
if PlayersXpos[1] == Enemies5Xpos[cycle] and PlayersYpos[1] == Enemies5Ypos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy6 in Enemies6:
if PlayersXpos[1] == Enemies6Xpos[cycle] and PlayersYpos[1] == Enemies6Ypos[cycle]:
GameOver()
cycle += 1
if start == 0:
NextWave()
start = 1
def WKey(event):
global start
self.player2.delete("all")
self.player2.create_polygon(15,0,30,30,15,15,0,30,15,0,fill="white")
if PlayersYpos[1] > 0:
PlayersYpos[1] -= 25
self.player2.place(x=PlayersXpos[1],y=PlayersYpos[1])
PlayersDir[1] = "N"
cycle = 0
for enemy in Enemies:
if PlayersXpos[1] == EnemiesXpos[cycle] and PlayersYpos[1] == EnemiesYpos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy2 in Enemies2:
if PlayersXpos[1] == Enemies2Xpos[cycle] and PlayersYpos[1] == Enemies2Ypos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy3 in Enemies3:
if PlayersXpos[1] == Enemies3Xpos[cycle] and PlayersYpos[1] == Enemies3Ypos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy4 in Enemies4:
if PlayersXpos[1] == Enemies4Xpos[cycle] and PlayersYpos[1] == Enemies4Ypos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy5 in Enemies5:
if PlayersXpos[1] == Enemies5Xpos[cycle] and PlayersYpos[1] == Enemies5Ypos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy6 in Enemies6:
if PlayersXpos[1] == Enemies6Xpos[cycle] and PlayersYpos[1] == Enemies6Ypos[cycle]:
GameOver()
cycle += 1
if start == 0:
NextWave()
start = 1
def SKey(event):
global start
self.player2.delete("all")
self.player2.create_polygon(15,30,30,0,15,15,0,0,15,30,fill="white")
if PlayersYpos[1] < 650:
PlayersYpos[1] += 25
self.player2.place(x=PlayersXpos[1],y=PlayersYpos[1])
PlayersDir[1] = "S"
cycle = 0
for enemy in Enemies:
if PlayersXpos[1] == EnemiesXpos[cycle] and PlayersYpos[1] == EnemiesYpos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy2 in Enemies2:
if PlayersXpos[1] == Enemies2Xpos[cycle] and PlayersYpos[1] == Enemies2Ypos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy3 in Enemies3:
if PlayersXpos[1] == Enemies3Xpos[cycle] and PlayersYpos[1] == Enemies3Ypos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy4 in Enemies4:
if PlayersXpos[1] == Enemies4Xpos[cycle] and PlayersYpos[1] == Enemies4Ypos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy5 in Enemies5:
if PlayersXpos[1] == Enemies5Xpos[cycle] and PlayersYpos[1] == Enemies5Ypos[cycle]:
GameOver()
cycle += 1
cycle = 0
for enemy6 in Enemies6:
if PlayersXpos[1] == Enemies6Xpos[cycle] and PlayersYpos[1] == Enemies6Ypos[cycle]:
GameOver()
cycle += 1
if start == 0:
NextWave()
start = 1
def CreateEnemy():
global Xpos
global Ypos
global enXpos
global enYpos
global Damage
global created
enXpos = random.randrange(0,33)*25
enYpos = random.randrange(0,27)*25
while (abs(PlayersXpos[0] - enXpos) <= 75 and abs(PlayersYpos[0] - enYpos) <= 75) or (abs(PlayersXpos[1] - enXpos) <= 75 and abs(PlayersYpos[1] - enYpos) <= 75):
enXpos = random.randrange(0,33)*25
enYpos = random.randrange(0,27)*25
self.enemy = Canvas(self,bg="black",highlightthickness=0,width=30,height=30)
self.enemy.place(x=enXpos,y=enYpos)
self.enemy.polygon = self.enemy.create_polygon(15,0,30,30,15,15,0,30,15,0,fill="darkviolet")
Enemies.append(self.enemy)
EnemiesDmg.append(Damage)
EnemiesXpos.append(enXpos)
EnemiesYpos.append(enYpos)
created = 1
def CreateEnemy2():
global Xpos
global Ypos
global en2Xpos
global en2Ypos
global created2
en2Xpos = random.randrange(0,33)*25
en2Ypos = random.randrange(0,27)*25
while (abs(PlayersXpos[0] - en2Xpos) <= 75 and abs(PlayersYpos[0] - en2Ypos) <= 75) or (abs(PlayersXpos[1] - en2Xpos) <= 75 and abs(PlayersYpos[1] - en2Ypos) <= 75):
en2Xpos = random.randrange(0,33)*25
en2Ypos = random.randrange(0,27)*25
self.enemy2 = Canvas(self,bg="black",highlightthickness=0,width=30,height=30)
self.enemy2.place(x=en2Xpos,y=en2Ypos)
self.enemy2.create_polygon(15,0,30,30,15,15,0,30,15,0,fill="red")
Enemies2.append(self.enemy2)
Enemies2Xpos.append(en2Xpos)
Enemies2Ypos.append(en2Ypos)
created2 = 1
def CreateEnemy3():
global Xpos
global Ypos
global en3Xpos
global en3Ypos
global Damage3
global created3
en3Xpos = random.randrange(0,33)*25
en3Ypos = random.randrange(0,27)*25
while (abs(PlayersXpos[0] - en3Xpos) <= 75 and abs(PlayersYpos[0] - en3Ypos) <= 75) or (abs(PlayersXpos[1] - en3Xpos) <= 75 and abs(PlayersYpos[1] - en3Ypos) <= 75):
en3Xpos = random.randrange(0,33)*25
en3Ypos = random.randrange(0,27)*25
self.enemy3 = Canvas(self,bg="black",highlightthickness=0,width=30,height=30)
self.enemy3.place(x=en3Xpos,y=en3Ypos)
self.enemy3.polygon = self.enemy3.create_polygon(10,0,0,0,0,30,30,30,30,0,20,0,20,10,10,10,fill="navy")
Enemies3.append(self.enemy3)
Enemies3Dmg.append(Damage3)
Enemies3Xpos.append(en3Xpos)
Enemies3Ypos.append(en3Ypos)
created3 = 1
def CreateEnemy4():
global Xpos
global Ypos
global en4Xpos
global en4Ypos
global created4
en4Xpos = random.randrange(0,33)*25
en4Ypos = random.randrange(0,27)*25
while (abs(PlayersXpos[0] - en4Xpos) <= 150 and abs(PlayersYpos[0] - en4Ypos) <= 150) or (abs(PlayersXpos[1] - en4Xpos) <= 150 and abs(PlayersYpos[1] - en4Ypos) <= 150):
en4Xpos = random.randrange(0,33)*25
en4Ypos = random.randrange(0,27)*25
self.enemy4 = Canvas(self,bg="black",highlightthickness=0,width=30,height=30)
self.enemy4.place(x=en4Xpos,y=en4Ypos)
self.enemy4.create_polygon(15,0,5,15,12,15,5,30,25,30,17,15,25,15,fill="darkgreen")
Enemies4.append(self.enemy4)
Enemies4Xpos.append(en4Xpos)
Enemies4Ypos.append(en4Ypos)
created4 = 1
def CreateEnemy5():
global Xpos
global Ypos
global en5Xpos
global en5Ypos
global Damage5
global created5
wall = random.choice(["N","E","S","W"])
if wall == "N":
en5Xpos = random.randrange(0,33)*25
en5Ypos = 0
self.enemy5 = Canvas(self,bg="black",highlightthickness=0,width=30,height=30)
self.enemy5.place(x=en5Xpos,y=en5Ypos)
self.enemy5.polygon = self.enemy5.create_polygon(0,0,10,15,10,30,20,30,20,15,30,0,fill="darkorange2")
elif wall == "E":
en5Xpos = 800
en5Ypos = random.randrange(0,27)*25
self.enemy5 = Canvas(self,bg="black",highlightthickness=0,width=30,height=30)
self.enemy5.place(x=en5Xpos,y=en5Ypos)
self.enemy5.polygon = self.enemy5.create_polygon(30,0,15,10,0,10,0,20,15,20,30,30,fill="darkorange2")
elif wall == "S":
en5Xpos = random.randrange(0,33)*25
en5Ypos = 650
self.enemy5 = Canvas(self,bg="black",highlightthickness=0,width=30,height=30)
self.enemy5.place(x=en5Xpos,y=en5Ypos)
self.enemy5.polygon = self.enemy5.create_polygon(30,30,20,15,20,0,10,0,10,15,0,30,fill="darkorange2")
elif wall == "W":
en5Xpos = 0
en5Ypos = random.randrange(0,27)*25
self.enemy5 = Canvas(self,bg="black",highlightthickness=0,width=30,height=30)
self.enemy5.place(x=en5Xpos,y=en5Ypos)
self.enemy5.polygon = self.enemy5.create_polygon(0,30,15,20,30,20,30,10,15,10,0,0,fill="darkorange2")
while (abs(PlayersXpos[0] - en5Xpos) <= 75 and abs(PlayersYpos[0] - en5Ypos) <= 75) or (abs(PlayersXpos[1] - en5Xpos) <= 75 and abs(PlayersYpos[1] - en5Ypos) <= 75):
wall = random.choice(["N","E","S","W"])
if wall == "N":
en5Xpos = random.randrange(0,33)*25
en5Ypos = 0
self.enemy5 = Canvas(self,bg="black",highlightthickness=0,width=30,height=30)
self.enemy5.place(x=en5Xpos,y=en5Ypos)
self.enemy5.polygon = self.enemy5.create_polygon(0,0,10,15,10,30,20,30,20,15,30,0,fill="darkorange2")
elif wall == "E":
en5Xpos = 800
en5Ypos = random.randrange(0,27)*25
self.enemy5 = Canvas(self,bg="black",highlightthickness=0,width=30,height=30)
self.enemy5.place(x=en5Xpos,y=en5Ypos)
self.enemy5.polygon = self.enemy5.create_polygon(30,0,15,10,0,10,0,20,15,20,30,30,fill="darkorange2")
elif wall == "S":
en5Xpos = random.randrange(0,33)*25
en5Ypos = 650
self.enemy5 = Canvas(self,bg="black",highlightthickness=0,width=30,height=30)
self.enemy5.place(x=en5Xpos,y=en5Ypos)
self.enemy5.polygon = self.enemy5.create_polygon(30,30,20,15,20,0,10,0,10,15,0,30,fill="darkorange2")
elif wall == "W":
en5Xpos = 0
en5Ypos = random.randrange(0,27)*25
self.enemy5 = Canvas(self,bg="black",highlightthickness=0,width=30,height=30)
self.enemy5.place(x=en5Xpos,y=en5Ypos)
self.enemy5.polygon = self.enemy5.create_polygon(0,30,15,20,30,20,30,10,15,10,0,0,fill="darkorange2")
Enemies5.append(self.enemy5)
Enemies5Dmg.append(Damage5)
Enemies5Xpos.append(en5Xpos)
Enemies5Ypos.append(en5Ypos)
Enemies5Wall.append(wall)
created5 = 1
def CreateEnemy6():
global Xpos
global Ypos
global en6Xpos
global en6Ypos
en6Type = random.choice([1,2,3,4])
en6Xpos = random.randrange(0,33)*25
en6Ypos = random.randrange(0,27)*25
while (abs(PlayersXpos[0] - en6Xpos) <= 75 and abs(PlayersYpos[0] - en6Ypos) <= 75) or (abs(PlayersXpos[1] - en6Xpos) <= 75 and abs(PlayersYpos[1] - en6Ypos) <= 75):
en6Xpos = random.randrange(0,33)*25
en6Ypos = random.randrange(0,27)*25
self.enemy6 = Canvas(self,bg="black",highlightthickness=0,width=30,height=30)
self.enemy6.place(x=en6Xpos,y=en6Ypos)
self.enemy6.oval = self.enemy6.create_oval(0,0,30,30,fill="gray20")
Enemies6.append(self.enemy6)
Enemies6Xpos.append(en6Xpos)
Enemies6Ypos.append(en6Ypos)
Enemies6Type.append(en6Type)
Enemies6Dmg.append(Damage6)
def EnemyMove():
global Xpos
global Ypos
global gameover
global created
if gameover != 1:
self.after(300,EnemyMove)
if created == 1:
cycle = 0
for self.enemy in Enemies:
rndDir = random.choice(["X","Y"])
if EnemiesDmg[cycle] == 0:
EnemyColor = "darkviolet"
else:
EnemyColor = "violet"
if ((PlayersXpos[0] - EnemiesXpos[cycle])**2 + (PlayersYpos[0] - EnemiesYpos[cycle])**2)**0.5 <= ((PlayersXpos[1] - EnemiesXpos[cycle])**2 + (PlayersYpos[1] - EnemiesYpos[cycle])**2)**0.5:
#Target Player 1
if PlayersXpos[0] < EnemiesXpos[cycle] and PlayersYpos[0] < EnemiesYpos[cycle]:
self.enemy.delete("all")
if rndDir == "X":
EnemiesXpos[cycle] -= 25
self.enemy.polygon = self.enemy.create_polygon(0,15,30,30,15,15,30,0,0,15,fill=EnemyColor)
else:
EnemiesYpos[cycle] -= 25
self.enemy.polygon = self.enemy.create_polygon(15,0,30,30,15,15,0,30,15,0,fill=EnemyColor)
elif PlayersXpos[0] < EnemiesXpos[cycle] and PlayersYpos[0] > EnemiesYpos[cycle]:
self.enemy.delete("all")
if rndDir == "X":
EnemiesXpos[cycle] -= 25
self.enemy.polygon = self.enemy.create_polygon(0,15,30,30,15,15,30,0,0,15,fill=EnemyColor)
else:
EnemiesYpos[cycle] += 25
self.enemy.polygon = self.enemy.create_polygon(15,30,30,0,15,15,0,0,15,30,fill=EnemyColor)
elif PlayersXpos[0] > EnemiesXpos[cycle] and PlayersYpos[0] < EnemiesYpos[cycle]:
self.enemy.delete("all")
if rndDir == "X":
EnemiesXpos[cycle] += 25
self.enemy.polygon = self.enemy.create_polygon(30,15,0,30,15,15,0,0,30,15,fill=EnemyColor)
else:
EnemiesYpos[cycle] -= 25
self.enemy.polygon = self.enemy.create_polygon(15,0,30,30,15,15,0,30,15,0,fill=EnemyColor)
elif PlayersXpos[0] > EnemiesXpos[cycle] and PlayersYpos[0] > EnemiesYpos[cycle]:
self.enemy.delete("all")
if rndDir == "X":
EnemiesXpos[cycle] += 25
self.enemy.polygon = self.enemy.create_polygon(30,15,0,30,15,15,0,0,30,15,fill=EnemyColor)
else:
EnemiesYpos[cycle] += 25
self.enemy.polygon = self.enemy.create_polygon(15,30,30,0,15,15,0,0,15,30,fill=EnemyColor)
elif PlayersXpos[0] < EnemiesXpos[cycle] and PlayersYpos[0] == EnemiesYpos[cycle]:
self.enemy.delete("all")
self.enemy.polygon = self.enemy.create_polygon(0,15,30,30,15,15,30,0,0,15,fill=EnemyColor)
EnemiesXpos[cycle] -= 25
elif PlayersXpos[0] > EnemiesXpos[cycle] and PlayersYpos[0] == EnemiesYpos[cycle]:
self.enemy.delete("all")
self.enemy.polygon = self.enemy.create_polygon(30,15,0,30,15,15,0,0,30,15,fill=EnemyColor)
EnemiesXpos[cycle] += 25
elif PlayersXpos[0] == EnemiesXpos[cycle] and PlayersYpos[0] < EnemiesYpos[cycle]:
self.enemy.delete("all")
self.enemy.polygon = self.enemy.create_polygon(15,0,30,30,15,15,0,30,15,0,fill=EnemyColor)
EnemiesYpos[cycle] -= 25
elif PlayersXpos[0] == EnemiesXpos[cycle] and PlayersYpos[0] > EnemiesYpos[cycle]:
self.enemy.delete("all")
self.enemy.polygon = self.enemy.create_polygon(15,30,30,0,15,15,0,0,15,30,fill=EnemyColor)
EnemiesYpos[cycle] += 25
else:
#Target Player 2
if PlayersXpos[1] < EnemiesXpos[cycle] and PlayersYpos[1] < EnemiesYpos[cycle]:
self.enemy.delete("all")
if rndDir == "X":
EnemiesXpos[cycle] -= 25
self.enemy.polygon = self.enemy.create_polygon(0,15,30,30,15,15,30,0,0,15,fill=EnemyColor)
else:
EnemiesYpos[cycle] -= 25
self.enemy.polygon = self.enemy.create_polygon(15,0,30,30,15,15,0,30,15,0,fill=EnemyColor)
elif PlayersXpos[1] < EnemiesXpos[cycle] and PlayersYpos[1] > EnemiesYpos[cycle]:
self.enemy.delete("all")
if rndDir == "X":
EnemiesXpos[cycle] -= 25
self.enemy.polygon = self.enemy.create_polygon(0,15,30,30,15,15,30,0,0,15,fill=EnemyColor)
else:
EnemiesYpos[cycle] += 25
self.enemy.polygon = self.enemy.create_polygon(15,30,30,0,15,15,0,0,15,30,fill=EnemyColor)
elif PlayersXpos[1] > EnemiesXpos[cycle] and PlayersYpos[1] < EnemiesYpos[cycle]:
self.enemy.delete("all")
if rndDir == "X":
EnemiesXpos[cycle] += 25
self.enemy.polygon = self.enemy.create_polygon(30,15,0,30,15,15,0,0,30,15,fill=EnemyColor)
else:
EnemiesYpos[cycle] -= 25
self.enemy.polygon = self.enemy.create_polygon(15,0,30,30,15,15,0,30,15,0,fill=EnemyColor)
elif PlayersXpos[1] > EnemiesXpos[cycle] and PlayersYpos[1] > EnemiesYpos[cycle]:
self.enemy.delete("all")
if rndDir == "X":
EnemiesXpos[cycle] += 25
self.enemy.polygon = self.enemy.create_polygon(30,15,0,30,15,15,0,0,30,15,fill=EnemyColor)
else:
EnemiesYpos[cycle] += 25
self.enemy.polygon = self.enemy.create_polygon(15,30,30,0,15,15,0,0,15,30,fill=EnemyColor)
elif PlayersXpos[1] < EnemiesXpos[cycle] and PlayersYpos[1] == EnemiesYpos[cycle]:
self.enemy.delete("all")
self.enemy.polygon = self.enemy.create_polygon(0,15,30,30,15,15,30,0,0,15,fill=EnemyColor)
EnemiesXpos[cycle] -= 25
elif PlayersXpos[1] > EnemiesXpos[cycle] and PlayersYpos[1] == EnemiesYpos[cycle]:
self.enemy.delete("all")
self.enemy.polygon = self.enemy.create_polygon(30,15,0,30,15,15,0,0,30,15,fill=EnemyColor)
EnemiesXpos[cycle] += 25
elif PlayersXpos[1] == EnemiesXpos[cycle] and PlayersYpos[1] < EnemiesYpos[cycle]:
self.enemy.delete("all")
self.enemy.polygon = self.enemy.create_polygon(15,0,30,30,15,15,0,30,15,0,fill=EnemyColor)
EnemiesYpos[cycle] -= 25
elif PlayersXpos[1] == EnemiesXpos[cycle] and PlayersYpos[1] > EnemiesYpos[cycle]:
self.enemy.delete("all")
self.enemy.polygon = self.enemy.create_polygon(15,30,30,0,15,15,0,0,15,30,fill=EnemyColor)
EnemiesYpos[cycle] += 25
self.enemy.place(x=EnemiesXpos[cycle],y=EnemiesYpos[cycle])
for Pcycle in range(0,2):
if PlayersXpos[Pcycle] == EnemiesXpos[cycle] and PlayersYpos[Pcycle] == EnemiesYpos[cycle]:
GameOver()
cycle += 1
def Enemy2Move():
global Xpos
global Ypos
global gameover
global created2
if gameover != 1:
self.after(300,Enemy2Move)
if created2 == 1:
cycle = 0
for self.enemy2 in Enemies2:
if ((PlayersXpos[0] - Enemies2Xpos[cycle])**2 + (PlayersYpos[0] - Enemies2Ypos[cycle])**2)**0.5 <= ((PlayersXpos[1] - Enemies2Xpos[cycle])**2 + (PlayersYpos[1] - Enemies2Ypos[cycle])**2)**0.5:
#Target Player 1
if PlayersXpos[0] < Enemies2Xpos[cycle] and PlayersYpos[0] < Enemies2Ypos[cycle]:
self.enemy2.delete("all")
self.enemy2.create_polygon(0,0,30,15,15,15,15,30,0,0,fill="red")
Enemies2Xpos[cycle] -= 25
Enemies2Ypos[cycle] -= 25
elif PlayersXpos[0] < Enemies2Xpos[cycle] and PlayersYpos[0] > Enemies2Ypos[cycle]:
self.enemy2.delete("all")
self.enemy2.create_polygon(0,30,15,0,15,15,30,15,0,30,fill="red")
Enemies2Xpos[cycle] -= 25
Enemies2Ypos[cycle] += 25
elif PlayersXpos[0] > Enemies2Xpos[cycle] and PlayersYpos[0] < Enemies2Ypos[cycle]:
self.enemy2.delete("all")
self.enemy2.create_polygon(30,0,0,15,15,15,15,30,30,0,fill="red")
Enemies2Xpos[cycle] += 25
Enemies2Ypos[cycle] -= 25
elif PlayersXpos[0] > Enemies2Xpos[cycle] and PlayersYpos[0] > Enemies2Ypos[cycle]:
self.enemy2.delete("all")
self.enemy2.create_polygon(30,30,15,0,15,15,0,15,30,30,fill="red")
Enemies2Xpos[cycle] += 25
Enemies2Ypos[cycle] += 25
elif PlayersXpos[0] < Enemies2Xpos[cycle] and PlayersYpos[0] == Enemies2Ypos[cycle]:
self.enemy2.delete("all")
self.enemy2.create_polygon(0,15,30,30,15,15,30,0,0,15,fill="red")
Enemies2Xpos[cycle] -= 25
elif PlayersXpos[0] > Enemies2Xpos[cycle] and PlayersYpos[0] == Enemies2Ypos[cycle]:
self.enemy2.delete("all")
self.enemy2.create_polygon(30,15,0,30,15,15,0,0,30,15,fill="red")
Enemies2Xpos[cycle] += 25
elif PlayersXpos[0] == Enemies2Xpos[cycle] and PlayersYpos[0] < Enemies2Ypos[cycle]:
self.enemy2.delete("all")
self.enemy2.create_polygon(15,0,30,30,15,15,0,30,15,0,fill="red")
Enemies2Ypos[cycle] -= 25
elif PlayersXpos[0] == Enemies2Xpos[cycle] and PlayersYpos[0] > Enemies2Ypos[cycle]:
self.enemy2.delete("all")
self.enemy2.create_polygon(15,30,30,0,15,15,0,0,15,30,fill="red")
Enemies2Ypos[cycle] += 25
else:
#Target Player 2
if PlayersXpos[1] < Enemies2Xpos[cycle] and PlayersYpos[1] < Enemies2Ypos[cycle]:
self.enemy2.delete("all")
self.enemy2.create_polygon(0,0,30,15,15,15,15,30,0,0,fill="red")
Enemies2Xpos[cycle] -= 25
Enemies2Ypos[cycle] -= 25
elif PlayersXpos[1] < Enemies2Xpos[cycle] and PlayersYpos[1] > Enemies2Ypos[cycle]:
self.enemy2.delete("all")
self.enemy2.create_polygon(0,30,15,0,15,15,30,15,0,30,fill="red")
Enemies2Xpos[cycle] -= 25
Enemies2Ypos[cycle] += 25
elif PlayersXpos[1] > Enemies2Xpos[cycle] and PlayersYpos[1] < Enemies2Ypos[cycle]:
self.enemy2.delete("all")
self.enemy2.create_polygon(30,0,0,15,15,15,15,30,30,0,fill="red")
Enemies2Xpos[cycle] += 25
Enemies2Ypos[cycle] -= 25
elif PlayersXpos[1] > Enemies2Xpos[cycle] and PlayersYpos[1] > Enemies2Ypos[cycle]:
self.enemy2.delete("all")
self.enemy2.create_polygon(30,30,15,0,15,15,0,15,30,30,fill="red")
Enemies2Xpos[cycle] += 25
Enemies2Ypos[cycle] += 25
elif PlayersXpos[1] < Enemies2Xpos[cycle] and PlayersYpos[1] == Enemies2Ypos[cycle]:
self.enemy2.delete("all")
self.enemy2.create_polygon(0,15,30,30,15,15,30,0,0,15,fill="red")
Enemies2Xpos[cycle] -= 25
elif PlayersXpos[1] > Enemies2Xpos[cycle] and PlayersYpos[1] == Enemies2Ypos[cycle]:
self.enemy2.delete("all")
self.enemy2.create_polygon(30,15,0,30,15,15,0,0,30,15,fill="red")
Enemies2Xpos[cycle] += 25
elif PlayersXpos[1] == Enemies2Xpos[cycle] and PlayersYpos[1] < Enemies2Ypos[cycle]:
self.enemy2.delete("all")
self.enemy2.create_polygon(15,0,30,30,15,15,0,30,15,0,fill="red")
Enemies2Ypos[cycle] -= 25
elif PlayersXpos[1] == Enemies2Xpos[cycle] and PlayersYpos[1] > Enemies2Ypos[cycle]:
self.enemy2.delete("all")
self.enemy2.create_polygon(15,30,30,0,15,15,0,0,15,30,fill="red")
Enemies2Ypos[cycle] += 25
self.enemy2.place(x=Enemies2Xpos[cycle],y=Enemies2Ypos[cycle])
for Pcycle in range(0,2):
if PlayersXpos[Pcycle] == Enemies2Xpos[cycle] and PlayersYpos[Pcycle] == Enemies2Ypos[cycle]:
GameOver()
cycle += 1
def Enemy3Move():
global Xpos
global Ypos
global gameover
global created3
if gameover != 1:
self.after(350,Enemy3Move)
if created3 == 1:
cycle = 0
for self.enemy3 in Enemies3:
rndDir = random.choice(["X","Y"])
if Enemies3Dmg[cycle] == 0:
Enemy3Color = "navy"
elif Enemies3Dmg[cycle] == 1:
Enemy3Color = "blue"
elif Enemies3Dmg[cycle] == 2:
Enemy3Color = "dodgerblue"
elif Enemies3Dmg[cycle] == 3:
Enemy3Color = "deepskyblue"
else:
Enemy3Color = "lightskyblue"
if ((PlayersXpos[0] - Enemies3Xpos[cycle])**2 + (PlayersYpos[0] - Enemies3Ypos[cycle])**2)**0.5 <= ((PlayersXpos[1] - Enemies3Xpos[cycle])**2 + (PlayersYpos[1] - Enemies3Ypos[cycle])**2)**0.5:
#Target Player 1
if PlayersXpos[0] < Enemies3Xpos[cycle] and PlayersYpos[0] < Enemies3Ypos[cycle]:
self.enemy3.delete("all")
if rndDir == "X":
Enemies3Xpos[cycle] -= 25
self.enemy3.polygon = self.enemy3.create_polygon(0,20,0,30,30,30,30,0,0,0,0,10,10,10,10,20,fill=Enemy3Color)
else:
Enemies3Ypos[cycle] -= 25
self.enemy3.polygon = self.enemy3.create_polygon(10,0,0,0,0,30,30,30,30,0,20,0,20,10,10,10,fill=Enemy3Color)
elif PlayersXpos[0] < Enemies3Xpos[cycle] and PlayersYpos[0] > Enemies3Ypos[cycle]:
self.enemy3.delete("all")
if rndDir == "X":
Enemies3Xpos[cycle] -= 25
self.enemy3.polygon = self.enemy3.create_polygon(0,20,0,30,30,30,30,0,0,0,0,10,10,10,10,20,fill=Enemy3Color)
else:
Enemies3Ypos[cycle] += 25
self.enemy3.polygon = self.enemy3.create_polygon(20,30,30,30,30,0,0,0,0,30,10,30,10,20,20,20,fill=Enemy3Color)
elif PlayersXpos[0] > Enemies3Xpos[cycle] and PlayersYpos[0] < Enemies3Ypos[cycle]:
self.enemy3.delete("all")
if rndDir == "X":
Enemies3Xpos[cycle] += 25
self.enemy3.polygon = self.enemy3.create_polygon(30,10,30,0,0,0,0,30,30,30,30,20,20,20,20,10,fill=Enemy3Color)
else:
Enemies3Ypos[cycle] -= 25
self.enemy3.polygon = self.enemy3.create_polygon(10,0,0,0,0,30,30,30,30,0,20,0,20,10,10,10,fill=Enemy3Color)
elif PlayersXpos[0] > Enemies3Xpos[cycle] and PlayersYpos[0] > Enemies3Ypos[cycle]:
self.enemy3.delete("all")
if rndDir == "X":
Enemies3Xpos[cycle] += 25
self.enemy3.polygon = self.enemy3.create_polygon(30,10,30,0,0,0,0,30,30,30,30,20,20,20,20,10,fill=Enemy3Color)
else:
Enemies3Ypos[cycle] += 25
self.enemy3.polygon = self.enemy3.create_polygon(20,30,30,30,30,0,0,0,0,30,10,30,10,20,20,20,fill=Enemy3Color)
elif PlayersXpos[0] < Enemies3Xpos[cycle] and PlayersYpos[0] == Enemies3Ypos[cycle]:
self.enemy3.delete("all")
self.enemy3.polygon = self.enemy3.create_polygon(0,20,0,30,30,30,30,0,0,0,0,10,10,10,10,20,fill=Enemy3Color)
Enemies3Xpos[cycle] -= 25
elif PlayersXpos[0] > Enemies3Xpos[cycle] and PlayersYpos[0] == Enemies3Ypos[cycle]:
self.enemy3.delete("all")
self.enemy3.polygon = self.enemy3.create_polygon(30,10,30,0,0,0,0,30,30,30,30,20,20,20,20,10,fill=Enemy3Color)
Enemies3Xpos[cycle] += 25
elif PlayersXpos[0] == Enemies3Xpos[cycle] and PlayersYpos[0] < Enemies3Ypos[cycle]:
self.enemy3.delete("all")
self.enemy3.polygon = self.enemy3.create_polygon(10,0,0,0,0,30,30,30,30,0,20,0,20,10,10,10,fill=Enemy3Color)
Enemies3Ypos[cycle] -= 25
elif PlayersXpos[0] == Enemies3Xpos[cycle] and PlayersYpos[0] > Enemies3Ypos[cycle]:
self.enemy3.delete("all")
self.enemy3.polygon = self.enemy3.create_polygon(20,30,30,30,30,0,0,0,0,30,10,30,10,20,20,20,fill=Enemy3Color)
Enemies3Ypos[cycle] += 25
else:
#Target Player 2
if PlayersXpos[1] < Enemies3Xpos[cycle] and PlayersYpos[1] < Enemies3Ypos[cycle]:
self.enemy3.delete("all")
if rndDir == "X":
Enemies3Xpos[cycle] -= 25
self.enemy3.polygon = self.enemy3.create_polygon(0,20,0,30,30,30,30,0,0,0,0,10,10,10,10,20,fill=Enemy3Color)
else:
Enemies3Ypos[cycle] -= 25
self.enemy3.polygon = self.enemy3.create_polygon(10,0,0,0,0,30,30,30,30,0,20,0,20,10,10,10,fill=Enemy3Color)
elif PlayersXpos[1] < Enemies3Xpos[cycle] and PlayersYpos[1] > Enemies3Ypos[cycle]:
self.enemy3.delete("all")
if rndDir == "X":
Enemies3Xpos[cycle] -= 25
self.enemy3.polygon = self.enemy3.create_polygon(0,20,0,30,30,30,30,0,0,0,0,10,10,10,10,20,fill=Enemy3Color)
else:
Enemies3Ypos[cycle] += 25
self.enemy3.polygon = self.enemy3.create_polygon(20,30,30,30,30,0,0,0,0,30,10,30,10,20,20,20,fill=Enemy3Color)
elif PlayersXpos[1] > Enemies3Xpos[cycle] and PlayersYpos[1] < Enemies3Ypos[cycle]:
self.enemy3.delete("all")
if rndDir == "X":
Enemies3Xpos[cycle] += 25
self.enemy3.polygon = self.enemy3.create_polygon(30,10,30,0,0,0,0,30,30,30,30,20,20,20,20,10,fill=Enemy3Color)
else:
Enemies3Ypos[cycle] -= 25
self.enemy3.polygon = self.enemy3.create_polygon(10,0,0,0,0,30,30,30,30,0,20,0,20,10,10,10,fill=Enemy3Color)
elif PlayersXpos[1] > Enemies3Xpos[cycle] and PlayersYpos[1] > Enemies3Ypos[cycle]:
self.enemy3.delete("all")
if rndDir == "X":
Enemies3Xpos[cycle] += 25
self.enemy3.polygon = self.enemy3.create_polygon(30,10,30,0,0,0,0,30,30,30,30,20,20,20,20,10,fill=Enemy3Color)
else:
Enemies3Ypos[cycle] += 25
self.enemy3.polygon = self.enemy3.create_polygon(20,30,30,30,30,0,0,0,0,30,10,30,10,20,20,20,fill=Enemy3Color)
elif PlayersXpos[1] < Enemies3Xpos[cycle] and PlayersYpos[1] == Enemies3Ypos[cycle]:
self.enemy3.delete("all")
self.enemy3.polygon = self.enemy3.create_polygon(0,20,0,30,30,30,30,0,0,0,0,10,10,10,10,20,fill=Enemy3Color)
Enemies3Xpos[cycle] -= 25
elif PlayersXpos[1] > Enemies3Xpos[cycle] and PlayersYpos[1] == Enemies3Ypos[cycle]:
self.enemy3.delete("all")
self.enemy3.polygon = self.enemy3.create_polygon(30,10,30,0,0,0,0,30,30,30,30,20,20,20,20,10,fill=Enemy3Color)
Enemies3Xpos[cycle] += 25
elif PlayersXpos[1] == Enemies3Xpos[cycle] and PlayersYpos[1] < Enemies3Ypos[cycle]:
self.enemy3.delete("all")
self.enemy3.polygon = self.enemy3.create_polygon(10,0,0,0,0,30,30,30,30,0,20,0,20,10,10,10,fill=Enemy3Color)
Enemies3Ypos[cycle] -= 25
elif PlayersXpos[1] == Enemies3Xpos[cycle] and PlayersYpos[1] > Enemies3Ypos[cycle]:
self.enemy3.delete("all")
self.enemy3.polygon = self.enemy3.create_polygon(20,30,30,30,30,0,0,0,0,30,10,30,10,20,20,20,fill=Enemy3Color)
Enemies3Ypos[cycle] += 25
self.enemy3.place(x=Enemies3Xpos[cycle],y=Enemies3Ypos[cycle])
for Pcycle in range(0,2):
if PlayersXpos[Pcycle] == Enemies3Xpos[cycle] and PlayersYpos[Pcycle] == Enemies3Ypos[cycle]:
GameOver()
cycle += 1
def Enemy4Move():
global Xpos
global Ypos
global gameover
global created4
if gameover != 1:
self.after(100,Enemy4Move)
if created4 == 1:
cycle = 0
for self.enemy4 in Enemies4:
rndDir = random.choice(["X","Y"])
Enemy4Color = "darkgreen"
if ((PlayersXpos[0] - Enemies4Xpos[cycle])**2 + (PlayersYpos[0] - Enemies4Ypos[cycle])**2)**0.5 <= ((PlayersXpos[1] - Enemies4Xpos[cycle])**2 + (PlayersYpos[1] - Enemies4Ypos[cycle])**2)**0.5:
#Target Player 1
if PlayersXpos[0] < Enemies4Xpos[cycle] and PlayersYpos[0] < Enemies4Ypos[cycle]:
self.enemy4.delete("all")
if rndDir == "X":
Enemies4Xpos[cycle] -= 25
self.enemy4.polygon = self.enemy4.create_polygon(0,15,15,25,15,17,30,25,30,5,15,13,15,5,fill=Enemy4Color)
else:
Enemies4Ypos[cycle] -= 25
self.enemy4.polygon = self.enemy4.create_polygon(15,0,5,15,12,15,5,30,25,30,17,15,25,15,fill=Enemy4Color)
elif PlayersXpos[0] < Enemies4Xpos[cycle] and PlayersYpos[0] > Enemies4Ypos[cycle]:
self.enemy4.delete("all")
if rndDir == "X":
Enemies4Xpos[cycle] -= 25
self.enemy4.polygon = self.enemy4.create_polygon(0,15,15,25,15,17,30,25,30,5,15,13,15,5,fill=Enemy4Color)
else:
Enemies4Ypos[cycle] += 25
self.enemy4.polygon = self.enemy4.create_polygon(15,30,25,15,17,15,25,0,5,0,13,15,5,15,fill=Enemy4Color)
elif PlayersXpos[0] > Enemies4Xpos[cycle] and PlayersYpos[0] < Enemies4Ypos[cycle]:
self.enemy4.delete("all")
if rndDir == "X":
Enemies4Xpos[cycle] += 25
self.enemy4.polygon = self.enemy4.create_polygon(30,15,15,5,15,13,0,5,0,25,15,17,15,25,fill=Enemy4Color)
else:
Enemies4Ypos[cycle] -= 25
self.enemy4.polygon = self.enemy4.create_polygon(15,0,5,15,12,15,5,30,25,30,17,15,25,15,fill=Enemy4Color)
elif PlayersXpos[0] > Enemies4Xpos[cycle] and PlayersYpos[0] > Enemies4Ypos[cycle]:
self.enemy4.delete("all")
if rndDir == "X":
Enemies4Xpos[cycle] += 25
self.enemy4.polygon = self.enemy4.create_polygon(30,15,15,5,15,13,0,5,0,25,15,17,15,25,fill=Enemy4Color)
else:
Enemies4Ypos[cycle] += 25
self.enemy4.polygon = self.enemy4.create_polygon(15,30,25,15,17,15,25,0,5,0,13,15,5,15,fill=Enemy4Color)
elif PlayersXpos[0] < Enemies4Xpos[cycle] and PlayersYpos[0] == Enemies4Ypos[cycle]:
self.enemy4.delete("all")
self.enemy4.polygon = self.enemy4.create_polygon(0,15,15,25,15,17,30,25,30,5,15,13,15,5,fill=Enemy4Color)
Enemies4Xpos[cycle] -= 25
elif PlayersXpos[0] > Enemies4Xpos[cycle] and PlayersYpos[0] == Enemies4Ypos[cycle]:
self.enemy4.delete("all")
self.enemy4.polygon = self.enemy4.create_polygon(30,15,15,5,15,13,0,5,0,25,15,17,15,25,fill=Enemy4Color)
Enemies4Xpos[cycle] += 25
elif PlayersXpos[0] == Enemies4Xpos[cycle] and PlayersYpos[0] < Enemies4Ypos[cycle]:
self.enemy4.delete("all")
self.enemy4.polygon = self.enemy4.create_polygon(15,0,5,15,12,15,5,30,25,30,17,15,25,15,fill=Enemy4Color)
Enemies4Ypos[cycle] -= 25
elif PlayersXpos[0] == Enemies4Xpos[cycle] and PlayersYpos[0] > Enemies4Ypos[cycle]:
self.enemy4.delete("all")
self.enemy4.polygon = self.enemy4.create_polygon(15,30,25,15,17,15,25,0,5,0,13,15,5,15,fill=Enemy4Color)
Enemies4Ypos[cycle] += 25
else:
#Target Player 2
if PlayersXpos[1] < Enemies4Xpos[cycle] and PlayersYpos[1] < Enemies4Ypos[cycle]:
self.enemy4.delete("all")
if rndDir == "X":
Enemies4Xpos[cycle] -= 25
self.enemy4.polygon = self.enemy4.create_polygon(0,15,15,25,15,17,30,25,30,5,15,13,15,5,fill=Enemy4Color)
else:
Enemies4Ypos[cycle] -= 25
self.enemy4.polygon = self.enemy4.create_polygon(15,0,5,15,12,15,5,30,25,30,17,15,25,15,fill=Enemy4Color)
elif PlayersXpos[1] < Enemies4Xpos[cycle] and PlayersYpos[1] > Enemies4Ypos[cycle]:
self.enemy4.delete("all")
if rndDir == "X":
Enemies4Xpos[cycle] -= 25
self.enemy4.polygon = self.enemy4.create_polygon(0,15,15,25,15,17,30,25,30,5,15,13,15,5,fill=Enemy4Color)
else:
Enemies4Ypos[cycle] += 25
self.enemy4.polygon = self.enemy4.create_polygon(15,30,25,15,17,15,25,0,5,0,13,15,5,15,fill=Enemy4Color)
elif PlayersXpos[1] > Enemies4Xpos[cycle] and PlayersYpos[1] < Enemies4Ypos[cycle]:
self.enemy4.delete("all")
if rndDir == "X":
Enemies4Xpos[cycle] += 25
self.enemy4.polygon = self.enemy4.create_polygon(30,15,15,5,15,13,0,5,0,25,15,17,15,25,fill=Enemy4Color)
else:
Enemies4Ypos[cycle] -= 25
self.enemy4.polygon = self.enemy4.create_polygon(15,0,5,15,12,15,5,30,25,30,17,15,25,15,fill=Enemy4Color)
elif PlayersXpos[1] > Enemies4Xpos[cycle] and PlayersYpos[1] > Enemies4Ypos[cycle]:
self.enemy4.delete("all")
if rndDir == "X":
Enemies4Xpos[cycle] += 25
self.enemy4.polygon = self.enemy4.create_polygon(30,15,15,5,15,13,0,5,0,25,15,17,15,25,fill=Enemy4Color)
else:
Enemies4Ypos[cycle] += 25
self.enemy4.polygon = self.enemy4.create_polygon(15,30,25,15,17,15,25,0,5,0,13,15,5,15,fill=Enemy4Color)
elif PlayersXpos[1] < Enemies4Xpos[cycle] and PlayersYpos[1] == Enemies4Ypos[cycle]:
self.enemy4.delete("all")
self.enemy4.polygon = self.enemy4.create_polygon(0,15,15,25,15,17,30,25,30,5,15,13,15,5,fill=Enemy4Color)
Enemies4Xpos[cycle] -= 25
elif PlayersXpos[1] > Enemies4Xpos[cycle] and PlayersYpos[1] == Enemies4Ypos[cycle]:
self.enemy4.delete("all")
self.enemy4.polygon = self.enemy4.create_polygon(30,15,15,5,15,13,0,5,0,25,15,17,15,25,fill=Enemy4Color)
Enemies4Xpos[cycle] += 25
elif PlayersXpos[1] == Enemies4Xpos[cycle] and PlayersYpos[1] < Enemies4Ypos[cycle]:
self.enemy4.delete("all")
self.enemy4.polygon = self.enemy4.create_polygon(15,0,5,15,12,15,5,30,25,30,17,15,25,15,fill=Enemy4Color)
Enemies4Ypos[cycle] -= 25
elif PlayersXpos[1] == Enemies4Xpos[cycle] and PlayersYpos[1] > Enemies4Ypos[cycle]:
self.enemy4.delete("all")
self.enemy4.polygon = self.enemy4.create_polygon(15,30,25,15,17,15,25,0,5,0,13,15,5,15,fill=Enemy4Color)
Enemies4Ypos[cycle] += 25
self.enemy4.place(x=Enemies4Xpos[cycle],y=Enemies4Ypos[cycle])
for Pcycle in range(0,2):
if PlayersXpos[Pcycle] == Enemies4Xpos[cycle] and PlayersYpos[Pcycle] == Enemies4Ypos[cycle]:
GameOver()
cycle += 1
def Enemy5Move():
global Xpos
global Ypos
global gameover
global created5
if gameover != 1:
self.after(500,Enemy5Move)
if created5 == 1:
cycle = 0
for self.enemy5 in Enemies5:
if ((PlayersXpos[0] - Enemies5Xpos[cycle])**2 + (PlayersYpos[0] - Enemies5Ypos[cycle])**2)**0.5 <= ((PlayersXpos[1] - Enemies5Xpos[cycle])**2 + (PlayersYpos[1] - Enemies5Ypos[cycle])**2)**0.5:
#Target Player 1
if (Enemies5Wall[cycle] == "E" or Enemies5Wall[cycle] == "W") and PlayersYpos[0] < Enemies5Ypos[cycle]:
Enemies5Ypos[cycle] -= 25
elif (Enemies5Wall[cycle] == "E" or Enemies5Wall[cycle] == "W") and PlayersYpos[0] > Enemies5Ypos[cycle]:
Enemies5Ypos[cycle] += 25
elif PlayersXpos[0] < Enemies5Xpos[cycle] and (Enemies5Wall[cycle] == "N" or Enemies5Wall[cycle] == "S"):
Enemies5Xpos[cycle] -= 25
elif PlayersXpos[0] > Enemies5Xpos[cycle] and (Enemies5Wall[cycle] == "N" or Enemies5Wall[cycle] == "S"):
Enemies5Xpos[cycle] += 25
else:
#Target Player 2
if (Enemies5Wall[cycle] == "E" or Enemies5Wall[cycle] == "W") and PlayersYpos[1] < Enemies5Ypos[cycle]:
Enemies5Ypos[cycle] -= 25
elif (Enemies5Wall[cycle] == "E" or Enemies5Wall[cycle] == "W") and PlayersYpos[1] > Enemies5Ypos[cycle]:
Enemies5Ypos[cycle] += 25
elif PlayersXpos[1] < Enemies5Xpos[cycle] and (Enemies5Wall[cycle] == "N" or Enemies5Wall[cycle] == "S"):
Enemies5Xpos[cycle] -= 25
elif PlayersXpos[1] > Enemies5Xpos[cycle] and (Enemies5Wall[cycle] == "N" or Enemies5Wall[cycle] == "S"):
Enemies5Xpos[cycle] += 25
self.enemy5.place(x=Enemies5Xpos[cycle],y=Enemies5Ypos[cycle])
for Pcycle in range(0,2):
if PlayersXpos[Pcycle] == Enemies5Xpos[cycle] and PlayersYpos[Pcycle] == Enemies5Ypos[cycle]:
GameOver()
for Pcycle in range(0,2):
if Enemies5Wall[cycle] == "E" or Enemies5Wall[cycle] == "W":
if Enemies5Ypos[cycle] == PlayersYpos[Pcycle]:
enShoot()
else:
if Enemies5Xpos[cycle] == PlayersXpos[Pcycle]:
enShoot()
cycle += 1
def Generate():
global generated1
global generated2
global generated3
global generated4
if gameover != 1:
self.after(10,Generate)
if generated1 == 0:
GenerateEnemy1()
generated1 = 1000
if generated2 == 0:
GenerateEnemy2()
generated2 = 1250
if generated3 == 0:
GenerateEnemy3()
generated3 = 1500
if generated4 == 0:
GenerateEnemy4()
generated4 = 1750
generated1 -= 10
generated2 -= 10
generated3 -= 10
generated4 -= 10
def GenerateEnemy1():
global enXpos
global enYpos
global Damage
global created
cycle = 0
for self.enemy6 in Enemies6:
if Enemies6Type[cycle] == 1:
enXpos = Enemies6Xpos[cycle]
enYpos = Enemies6Ypos[cycle]
self.enemy = Canvas(self,bg="black",highlightthickness=0,width=30,height=30)
self.enemy.place(x=enXpos,y=enYpos)
self.enemy.polygon = self.enemy.create_polygon(15,0,30,30,15,15,0,30,15,0,fill="darkviolet")
Enemies.append(self.enemy)
EnemiesDmg.append(Damage)
EnemiesXpos.append(enXpos)
EnemiesYpos.append(enYpos)
created = 1
cycle += 1
def GenerateEnemy2():
global en2Xpos
global en2Ypos
global created2
cycle = 0
for self.enemy6 in Enemies6:
if Enemies6Type[cycle] == 2:
en2Xpos = Enemies6Xpos[cycle]
en2Ypos = Enemies6Ypos[cycle]
self.enemy2 = Canvas(self,bg="black",highlightthickness=0,width=30,height=30)
self.enemy2.place(x=en2Xpos,y=en2Ypos)
self.enemy2.create_polygon(15,0,30,30,15,15,0,30,15,0,fill="red")
Enemies2.append(self.enemy2)
Enemies2Xpos.append(en2Xpos)
Enemies2Ypos.append(en2Ypos)
created2 = 1
cycle += 1
def GenerateEnemy3():
global en3Xpos
global en3Ypos
global Damage3
global created3
cycle = 0
for self.enemy6 in Enemies6:
if Enemies6Type[cycle] == 3:
en3Xpos = Enemies6Xpos[cycle]
en3Ypos = Enemies6Ypos[cycle]
self.enemy3 = Canvas(self,bg="black",highlightthickness=0,width=30,height=30)
self.enemy3.place(x=en3Xpos,y=en3Ypos)
self.enemy3.polygon = self.enemy3.create_polygon(10,0,0,0,0,30,30,30,30,0,20,0,20,10,10,10,fill="navy")
Enemies3.append(self.enemy3)
Enemies3Dmg.append(Damage3)
Enemies3Xpos.append(en3Xpos)
Enemies3Ypos.append(en3Ypos)
created3 = 1
cycle += 1
def GenerateEnemy4():
global en4Xpos
global en4Ypos
global created4
cycle = 0
for self.enemy6 in Enemies6:
if Enemies6Type[cycle] == 4:
en4Xpos = Enemies6Xpos[cycle]
en4Ypos = Enemies6Ypos[cycle]
self.enemy4 = Canvas(self,bg="black",highlightthickness=0,width=30,height=30)
self.enemy4.place(x=en4Xpos,y=en4Ypos)
self.enemy4.create_polygon(15,0,5,15,12,15,5,30,25,30,17,15,25,15,fill="darkgreen")
Enemies4.append(self.enemy4)
Enemies4Xpos.append(en4Xpos)
Enemies4Ypos.append(en4Ypos)
created4 = 1
cycle += 1
def Shoot(event):
global Xpos
global Ypos
global direction
global start
if PlayersDir[0] == "N":
shotXpos = PlayersXpos[0] + 10
shotYpos = PlayersYpos[0] - 10
elif PlayersDir[0] == "E":
shotXpos = PlayersXpos[0] + 30
shotYpos = PlayersYpos[0] + 10
elif PlayersDir[0] == "S":
shotXpos = PlayersXpos[0] + 10
shotYpos = PlayersYpos[0] + 30
elif PlayersDir[0] == "W":
shotXpos = PlayersXpos[0] - 10
shotYpos = PlayersYpos[0] + 10
self.shot = Canvas(bg="black",highlightthickness=0,width=10,height=10)
self.shot.place(x=shotXpos,y=shotYpos)
self.shot.create_oval(0,0,10,10,fill="white")
Shots.append(self.shot)
ShotsXpos.append(shotXpos)
ShotsYpos.append(shotYpos)
ShotDir.append(PlayersDir[0])
if start == 0:
NextWave()
start = 1
def Shoot2(event):
global start
if PlayersDir[1] == "N":
shotXpos = PlayersXpos[1] + 10
shotYpos = PlayersYpos[1] - 10
elif PlayersDir[1] == "E":
shotXpos = PlayersXpos[1] + 30
shotYpos = PlayersYpos[1] + 10
elif PlayersDir[1] == "S":
shotXpos = PlayersXpos[1] + 10
shotYpos = PlayersYpos[1] + 30
elif PlayersDir[1] == "W":
shotXpos = PlayersXpos[1] - 10
shotYpos = PlayersYpos[1] + 10
self.shot = Canvas(bg="black",highlightthickness=0,width=10,height=10)
self.shot.place(x=shotXpos,y=shotYpos)
self.shot.create_oval(0,0,10,10,fill="white")
Shots.append(self.shot)
ShotsXpos.append(shotXpos)
ShotsYpos.append(shotYpos)
ShotDir.append(PlayersDir[1])
if start == 0:
NextWave()
start = 1
def enShoot():
cycle = 0
for self.enemy5 in Enemies5:
if Enemies5Wall[cycle] == "N":
enDir = "S"
enShotXpos = Enemies5Xpos[cycle] + 10
enShotYpos = Enemies5Ypos[cycle] + 30
elif Enemies5Wall[cycle] == "E":
enDir = "W"
enShotXpos = Enemies5Xpos[cycle] - 10
enShotYpos = Enemies5Ypos[cycle] + 10
elif Enemies5Wall[cycle] == "S":
enDir = "N"
enShotXpos = Enemies5Xpos[cycle] + 10
enShotYpos = Enemies5Ypos[cycle] - 10
elif Enemies5Wall[cycle] == "W":
enDir = "E"
enShotXpos = Enemies5Xpos[cycle] + 30
enShotYpos = Enemies5Ypos[cycle] + 10
if Enemies5Wall[cycle] == "E" or Enemies5Wall[cycle] == "W":
for Pcycle in range(0,2):
if Enemies5Ypos[cycle] == Ypos:
self.enShot = Canvas(bg="black",highlightthickness=0,width=10,height=10)
self.enShot.place(x=enShotXpos,y=enShotYpos)
self.enShot.create_oval(0,0,10,10,fill="yellow")
enShots.append(self.enShot)
enShotsXpos.append(enShotXpos)
enShotsYpos.append(enShotYpos)
enShotDir.append(enDir)
else:
for Pcycle in range(0,2):
if Enemies5Xpos[cycle] == Xpos:
self.enShot = Canvas(bg="black",highlightthickness=0,width=10,height=10)
self.enShot.place(x=enShotXpos,y=enShotYpos)
self.enShot.create_oval(0,0,10,10,fill="yellow")
enShots.append(self.enShot)
enShotsXpos.append(enShotXpos)
enShotsYpos.append(enShotYpos)
enShotDir.append(enDir)
cycle += 1
def ShotMove():
global direction
global en2Xpos
global en2Ypos
global destroy
global gameover
if gameover != 1:
self.after(10,ShotMove)
#Move Shots
cycle = 0
for self.shot in Shots:
destroy = -1
if ShotDir[cycle] == "N":
ShotsYpos[cycle] -= 10
elif ShotDir[cycle] == "E":
ShotsXpos[cycle] += 10
elif ShotDir[cycle] == "S":
ShotsYpos[cycle] += 10
elif ShotDir[cycle] == "W":
ShotsXpos[cycle] -= 10
self.shot.place(x=ShotsXpos[cycle],y=ShotsYpos[cycle])
#Damage Enemy1
enCycle = 0
for self.enemy in Enemies:
if destroy == -1:
if EnemiesXpos[enCycle] + 30 >= ShotsXpos[cycle] >= EnemiesXpos[enCycle] - 10 and EnemiesYpos[enCycle] + 30 >= ShotsYpos[cycle] >= EnemiesYpos[enCycle] - 10:
destroy = 0
if EnemiesDmg[enCycle] == 1:
self.explode = Canvas(bg="black",highlightthickness=0,width=30,height=30)
self.explode.place(x=EnemiesXpos[enCycle],y=EnemiesYpos[enCycle])
self.explode.create_polygon(0,15,13,13,15,0,17,13,30,15,17,17,15,30,13,17,fill="orange")
Explosions.append(self.explode)
self.enemy.destroy()
del Enemies[enCycle]
del EnemiesDmg[enCycle]
del EnemiesXpos[enCycle]
del EnemiesYpos[enCycle]
self.after(10,destroyEnemy)
self.shot.destroy()
del Shots[cycle]
del ShotsXpos[cycle]
del ShotsYpos[cycle]
del ShotDir[cycle]
else:
self.shot.destroy()
del Shots[cycle]
del ShotsXpos[cycle]
del ShotsYpos[cycle]
del ShotDir[cycle]
EnemiesDmg[enCycle] += 1
if EnemiesDmg[enCycle] == 0:
EnemyColor = "darkviolet"
else:
EnemyColor = "violet"
self.enemy.itemconfig(self.enemy.polygon,fill=EnemyColor)
enCycle += 1
#Damage Enemy2
enCycle = 0
for self.enemy2 in Enemies2:
if destroy == -1:
if Enemies2Xpos[enCycle] + 30 >= ShotsXpos[cycle] >= Enemies2Xpos[enCycle] - 10 and Enemies2Ypos[enCycle] + 30 >= ShotsYpos[cycle] >= Enemies2Ypos[enCycle] - 10:
destroy = 0
self.explode = Canvas(bg="black",highlightthickness=0,width=30,height=30)
self.explode.place(x=Enemies2Xpos[enCycle],y=Enemies2Ypos[enCycle])
self.explode.create_polygon(0,15,13,13,15,0,17,13,30,15,17,17,15,30,13,17,fill="orange")
Explosions.append(self.explode)
self.enemy2.destroy()
del Enemies2[enCycle]
del Enemies2Xpos[enCycle]
del Enemies2Ypos[enCycle]
self.shot.destroy()
del Shots[cycle]
del ShotsXpos[cycle]
del ShotsYpos[cycle]
del ShotDir[cycle]
self.after(10,destroyEnemy)
enCycle += 1
#Damage Enemy3
enCycle = 0
for self.enemy3 in Enemies3:
if destroy == -1:
if Enemies3Xpos[enCycle] + 30 >= ShotsXpos[cycle] >= Enemies3Xpos[enCycle] - 10 and Enemies3Ypos[enCycle] + 30 >= ShotsYpos[cycle] >= Enemies3Ypos[enCycle] - 10:
destroy = 0
if Enemies3Dmg[enCycle] == 4:
self.explode = Canvas(bg="black",highlightthickness=0,width=30,height=30)
self.explode.place(x=Enemies3Xpos[enCycle],y=Enemies3Ypos[enCycle])
self.explode.create_polygon(0,15,13,13,15,0,17,13,30,15,17,17,15,30,13,17,fill="orange")
Explosions.append(self.explode)
self.enemy3.destroy()
del Enemies3[enCycle]
del Enemies3Dmg[enCycle]
del Enemies3Xpos[enCycle]
del Enemies3Ypos[enCycle]
self.after(10,destroyEnemy)
self.shot.destroy()
del Shots[cycle]
del ShotsXpos[cycle]
del ShotsYpos[cycle]
del ShotDir[cycle]
else:
self.shot.destroy()
del Shots[cycle]
del ShotsXpos[cycle]
del ShotsYpos[cycle]
del ShotDir[cycle]
Enemies3Dmg[enCycle] += 1
if Enemies3Dmg[enCycle] == 0:
Enemy3Color = "navy"
elif Enemies3Dmg[enCycle] == 1:
Enemy3Color = "darkblue"
elif Enemies3Dmg[enCycle] == 2:
Enemy3Color = "dodgerblue"
elif Enemies3Dmg[enCycle] == 3:
Enemy3Color = "deepskyblue"
else:
Enemy3Color = "lightskyblue"
self.enemy3.itemconfig(self.enemy3.polygon,fill=Enemy3Color)
enCycle += 1
#Damage Enemy4
enCycle = 0
for self.enemy4 in Enemies4:
if destroy == -1:
if Enemies4Xpos[enCycle] + 30 >= ShotsXpos[cycle] >= Enemies4Xpos[enCycle] - 10 and Enemies4Ypos[enCycle] + 30 >= ShotsYpos[cycle] >= Enemies4Ypos[enCycle] - 10:
destroy = 0
self.explode = Canvas(bg="black",highlightthickness=0,width=30,height=30)
self.explode.place(x=Enemies4Xpos[enCycle],y=Enemies4Ypos[enCycle])
self.explode.create_polygon(0,15,13,13,15,0,17,13,30,15,17,17,15,30,13,17,fill="orange")
Explosions.append(self.explode)
self.enemy4.destroy()
del Enemies4[enCycle]
del Enemies4Xpos[enCycle]
del Enemies4Ypos[enCycle]
self.shot.destroy()
del Shots[cycle]
del ShotsXpos[cycle]
del ShotsYpos[cycle]
del ShotDir[cycle]
self.after(10,destroyEnemy)
enCycle += 1
#Damage Enemy5
enCycle = 0
for self.enemy5 in Enemies5:
if destroy == -1:
if Enemies5Xpos[enCycle] + 30 >= ShotsXpos[cycle] >= Enemies5Xpos[enCycle] - 10 and Enemies5Ypos[enCycle] + 30 >= ShotsYpos[cycle] >= Enemies5Ypos[enCycle] - 10:
destroy = 0
if Enemies5Dmg[enCycle] == 1:
self.explode = Canvas(bg="black",highlightthickness=0,width=30,height=30)
self.explode.place(x=Enemies5Xpos[enCycle],y=Enemies5Ypos[enCycle])
self.explode.create_polygon(0,15,13,13,15,0,17,13,30,15,17,17,15,30,13,17,fill="orange")
Explosions.append(self.explode)
self.enemy5.destroy()
del Enemies5[enCycle]
del Enemies5Dmg[enCycle]
del Enemies5Xpos[enCycle]
del Enemies5Ypos[enCycle]
del Enemies5Wall[enCycle]
self.after(10,destroyEnemy)
self.shot.destroy()
del Shots[cycle]
del ShotsXpos[cycle]
del ShotsYpos[cycle]
del ShotDir[cycle]
else:
self.shot.destroy()
del Shots[cycle]
del ShotsXpos[cycle]
del ShotsYpos[cycle]
del ShotDir[cycle]
Enemies5Dmg[enCycle] += 1
if Enemies5Dmg[enCycle] == 0:
Enemy5Color = "darkorange2"
else:
Enemy5Color = "orange"
self.enemy5.itemconfig(self.enemy5.polygon,fill=Enemy5Color)
enCycle += 1
#Damage Enemy6
enCycle = 0
for self.enemy6 in Enemies6:
if destroy == -1:
if Enemies6Xpos[enCycle] + 30 >= ShotsXpos[cycle] >= Enemies6Xpos[enCycle] - 10 and Enemies6Ypos[enCycle] + 30 >= ShotsYpos[cycle] >= Enemies6Ypos[enCycle] - 10:
destroy = 0
if Enemies6Dmg[enCycle] == 5:
self.explode = Canvas(bg="black",highlightthickness=0,width=30,height=30)
self.explode.place(x=Enemies6Xpos[enCycle],y=Enemies6Ypos[enCycle])
self.explode.create_polygon(0,15,13,13,15,0,17,13,30,15,17,17,15,30,13,17,fill="orange")
Explosions.append(self.explode)
self.enemy6.destroy()
del Enemies6[enCycle]
del Enemies6Dmg[enCycle]
del Enemies6Xpos[enCycle]
del Enemies6Ypos[enCycle]
del Enemies6Type[enCycle]
self.after(10,destroyEnemy)
self.shot.destroy()
del Shots[cycle]
del ShotsXpos[cycle]
del ShotsYpos[cycle]
del ShotDir[cycle]
else:
self.shot.destroy()
del Shots[cycle]
del ShotsXpos[cycle]
del ShotsYpos[cycle]
del ShotDir[cycle]
Enemies6Dmg[enCycle] += 1
if Enemies6Dmg[enCycle] == 0:
Enemy6Color = "gray20"
elif Enemies6Dmg[enCycle] == 1:
Enemy6Color = "gray30"
elif Enemies6Dmg[enCycle] == 2:
Enemy6Color = "gray40"
elif Enemies6Dmg[enCycle] == 3:
Enemy6Color = "gray50"
elif Enemies6Dmg[enCycle] == 4:
Enemy6Color = "gray60"
elif Enemies6Dmg[enCycle] == 5:
Enemy6Color = "gray70"
self.enemy6.itemconfig(self.enemy6.oval,fill=Enemy6Color)
enCycle += 1
#Destroy Shot at Boundary
if destroy == -1:
if ShotsXpos[cycle] < 0 or ShotsXpos[cycle] > 830 or ShotsYpos[cycle] < 0 or ShotsYpos[cycle] > 680:
self.shot.destroy()
del Shots[cycle]
del ShotsXpos[cycle]
del ShotsYpos[cycle]
del ShotDir[cycle]
cycle += 1
def enShotMove():
global gameover
if gameover != 1:
self.after(10,enShotMove)
cycle = 0
for self.enShot in enShots:
enDestroy = -1
if enShotDir[cycle] == "N":
enShotsYpos[cycle] -= 10
elif enShotDir[cycle] == "E":
enShotsXpos[cycle] += 10
elif enShotDir[cycle] == "S":
enShotsYpos[cycle] += 10
elif enShotDir[cycle] == "W":
enShotsXpos[cycle] -= 10
self.enShot.place(x=enShotsXpos[cycle],y=enShotsYpos[cycle])
#Game Over
for Pcycle in range(0,2):
if gameover != 1:
if PlayersXpos[Pcycle] + 30 >= enShotsXpos[cycle] >= PlayersXpos[Pcycle] - 10 and PlayersYpos[Pcycle] + 30 >= enShotsYpos[cycle] >= PlayersYpos[Pcycle] - 10:
enDestroy = 0
self.enShot.destroy()
del enShots[cycle]
del enShotsXpos[cycle]
del enShotsYpos[cycle]
del enShotDir[cycle]
GameOver()
#Destroy Shot at Boundary
if enDestroy == -1:
if enShotsXpos[cycle] < 0 or enShotsXpos[cycle] > 830 or enShotsYpos[cycle] < 0 or enShotsYpos[cycle] > 680:
self.enShot.destroy()
del enShots[cycle]
del enShotsXpos[cycle]
del enShotsYpos[cycle]
del enShotDir[cycle]
cycle += 1
def destroyEnemy():
destroyed = 0
for self.explode in Explosions:
self.explode.destroy()
del Explosions[destroyed]
destroyed += 1
def Summon():
global wave
global summoned
time = 0
wave += 1
#Wave 1
if wave == 1:
E = 0
while E < 3:
self.after(time,CreateEnemy)
E += 1
time += 250
#Wave 2
elif wave == 2:
E = 0
while E < 3:
self.after(time,CreateEnemy2)
E += 1
time += 250
#Wave 3
elif wave == 3:
E = 0
while E < 2:
self.after(time,CreateEnemy)
E += 1
time += 250
E = 0
while E < 2:
self.after(time,CreateEnemy2)
E += 1
time += 250
#Wave 4
elif wave == 4:
E = 0
while E < 4:
self.after(time,CreateEnemy)
E += 1
time += 250
E = 0
while E < 2:
self.after(time,CreateEnemy2)
E += 1
time += 250
#Wave 5
elif wave == 5:
E = 0
while E < 3:
self.after(time,CreateEnemy3)
E += 1
time += 250
#Wave 6
elif wave == 6:
E = 0
while E < 2:
self.after(time,CreateEnemy)
E += 1
time += 250
E = 0
while E < 1:
self.after(time,CreateEnemy)
E += 1
time += 250
E = 0
while E < 3:
self.after(time,CreateEnemy3)
E += 1
time += 250
#Wave 7
elif wave == 7:
E = 0
while E < 3:
self.after(time,CreateEnemy)
E += 1
time += 250
E = 0
while E < 2:
self.after(time,CreateEnemy2)
E += 1
time += 250
E = 0
while E < 2:
self.after(time,CreateEnemy3)
E += 1
time += 250
#Wave 8
elif wave == 8:
E = 0
while E < 2:
self.after(time,CreateEnemy4)
E += 1
time += 250
#Wave 9
elif wave == 9:
E = 0
while E < 3:
self.after(time,CreateEnemy)
E += 1
time += 250
E = 0
while E < 2:
self.after(time,CreateEnemy2)
E += 1
time += 250
E = 0
while E < 2:
self.after(time,CreateEnemy4)
E += 1
time += 250
#Wave 10
elif wave == 10:
E = 0
while E < 3:
self.after(time,CreateEnemy3)
E += 1
time += 250
E = 0
while E < 2:
self.after(time,CreateEnemy4)
E += 1
time += 250
#Wave 11
elif wave == 11:
E = 0
while E < 2:
self.after(time,CreateEnemy)
E += 1
time += 250
E = 0
while E < 2:
self.after(time,CreateEnemy2)
E += 1
time += 250
E = 0
while E < 1:
self.after(time,CreateEnemy3)
E += 1
time += 250
E = 0
while E < 1:
self.after(time,CreateEnemy4)
E += 1
time += 250
#Wave 12
elif wave == 12:
E = 0
while E < 2:
self.after(time,CreateEnemy5)
E += 1
time += 250
#Wave 13
elif wave == 13:
E = 0
while E < 3:
self.after(time,CreateEnemy)
E += 1
time += 250
E = 0
while E < 2:
self.after(time,CreateEnemy2)
E += 1
time += 250
E = 0
while E < 1:
self.after(time,CreateEnemy3)
E += 1
time += 250
E = 0
while E < 1:
self.after(time,CreateEnemy5)
E += 1
time += 250
#Wave 14
elif wave == 14:
E = 0
while E < 4:
self.after(time,CreateEnemy)
E += 1
time += 250
E = 0
while E < 1:
self.after(time,CreateEnemy4)
E += 1
time += 250
E = 0
while E < 2:
self.after(time,CreateEnemy5)
E += 1
time += 250
#Wave 15
elif wave == 15:
E = 0
while E < 2:
self.after(time,CreateEnemy6)
E += 1
time += 250
#Wave 16
elif wave == 16:
E = 0
while E < 3:
self.after(time,CreateEnemy)
E += 1
time += 250
E = 0
while E < 2:
self.after(time,CreateEnemy2)
E += 1
time += 250
E = 0
while E < 1:
self.after(time,CreateEnemy6)
E += 1
time += 250
#Wave 17
elif wave == 17:
E = 0
while E < 1:
self.after(time,CreateEnemy)
E += 1
time += 250
E = 0
while E < 1:
self.after(time,CreateEnemy2)
E += 1
time += 250
E = 0
while E < 1:
self.after(time,CreateEnemy3)
E += 1
time += 250
E = 0
while E < 1:
self.after(time,CreateEnemy4)
E += 1
time += 250
E = 0
while E < 1:
self.after(time,CreateEnemy5)
E += 1
time += 250
E = 0
while E < 1:
self.after(time,CreateEnemy6)
E += 1
time += 250
#Wave 18+
elif wave >= 18:
E = 0
while E < wave - 12:
rndEnemy = random.choice([1,2,3,4,5,6])
if rndEnemy == 1:
self.after(time,CreateEnemy)
elif rndEnemy == 2:
self.after(time,CreateEnemy2)
elif rndEnemy == 3:
self.after(time,CreateEnemy3)
elif rndEnemy == 4:
self.after(time,CreateEnemy4)
elif rndEnemy == 5:
self.after(time,CreateEnemy5)
elif rndEnemy == 6:
self.after(time,CreateEnemy6)
E += 1
time += 250
summoned = 0
def NextWave():
global wave
global summoned
global waveTime
global pace
global gameover
if gameover == 0:
self.after(10,NextWave)
if summoned == 0:
summoned = 1
waveTime = pace
if waveTime <= 0:
Summon()
if not Enemies and not Enemies2 and not Enemies3 and not Enemies4 and not Enemies5 and not Enemies6:
Summon()
waveTime -= 10
self.lbScore.config(text="Wave: "+str(wave)+" Next Wave: "+str(waveTime/1000)+"sec Press 'p' to pause")
def GameOver():
global gameover
global wave
if gameover == 0:
gameover = 1
self.unbind('')
self.unbind('')
self.unbind('')
self.unbind('')
self.unbind('')
self.after_cancel(EnemyMove)
self.after_cancel(Enemy2Move)
self.after_cancel(Enemy3Move)
self.after_cancel(Enemy4Move)
self.after_cancel(Enemy5Move)
self.after_cancel(CreateEnemy)
self.after_cancel(CreateEnemy2)
self.after_cancel(CreateEnemy3)
self.after_cancel(CreateEnemy4)
self.after_cancel(CreateEnemy5)
self.after_cancel(CreateEnemy6)
self.after_cancel(Generate)
self.after_cancel(NextWave)
self.after_cancel(ShotMove)
self.after_cancel(enShotMove)
for self.shot in Shots:
self.shot.destroy()
self.lbScore.destroy()
self.lbGameOver = Label(text="Game Over" + "\n" "You survived to wave " + str(wave) + "\n" + "Click here to restart",bg="black",fg="white")
self.lbGameOver.pack(fill=BOTH,expand=1)
self.lbGameOver.bind('