from tkinter import * import random import time def MainMenu(): self = Tk() #Objects self.lbDirections = Label(text="Choose a Game Mode",bg="black",fg="white") self.lbDirections.pack() self.btnSinglePlayer = Button(text="Single Player") self.btnSinglePlayer.pack() self.btnMultiPlayer = Button(text="Multi-Player") self.btnMultiPlayer.pack() self.btnTenWaveChallenge = Button(text="Ten Wave Challenge") self.btnTenWaveChallenge.pack() def SinglePlayerChooseDifficulty(event): self.lbDirections.config(text="Choose a Pace") self.btnSinglePlayer.destroy() self.btnMultiPlayer.destroy() self.btnTenWaveChallenge.destroy() self.btnDifficultyEasy = Button(text="Easy") self.btnDifficultyEasy.pack() self.btnDifficultyMedium = Button(text="Medium") self.btnDifficultyMedium.pack() self.btnDifficultyHard = Button(text="Hard") self.btnDifficultyHard.pack() self.btnMainMenu = Button(text="Main Menu") self.btnMainMenu.pack(side=BOTTOM) self.lbControls = Label(text="Use arrow keys to move and space bar to shoot",bg="black",fg="white") self.lbControls.pack() self.btnMainMenu.bind('<Button>',StartMainMenu) self.btnDifficultyEasy.bind('<Button>',StartSinglePlayerEasy) self.btnDifficultyMedium.bind('<Button>',StartSinglePlayerMedium) self.btnDifficultyHard.bind('<Button>',StartSinglePlayerHard) def MultiPlayerChooseDifficulty(event): self.lbDirections.config(text="Choose a Pace") self.btnSinglePlayer.destroy() self.btnMultiPlayer.destroy() self.btnTenWaveChallenge.destroy() self.btnDifficultyEasy = Button(text="Easy") self.btnDifficultyEasy.pack() self.btnDifficultyMedium = Button(text="Medium") self.btnDifficultyMedium.pack() self.btnDifficultyHard = Button(text="Hard") self.btnDifficultyHard.pack() self.btnMainMenu = Button(text="Main Menu") self.btnMainMenu.pack(side=BOTTOM) self.lbControls = Label(text="Player 1 - Use arrow keys to move and space bar to shoot"+'\n'+"Player 2 - Use 'wasd' keys to move and tab to shoot",bg="black",fg="white") self.lbControls.pack() self.btnMainMenu.bind('<Button>',StartMainMenu) self.btnDifficultyEasy.bind('<Button>',StartMultiPlayerEasy) self.btnDifficultyMedium.bind('<Button>',StartMultiPlayerMedium) self.btnDifficultyHard.bind('<Button>',StartMultiPlayerHard) def TenWaveChallengeChooseMode(event): self.lbDirections.config(text="Choose a Mode") self.btnSinglePlayer.destroy() self.btnMultiPlayer.destroy() self.btnTenWaveChallenge.destroy() self.btnTenWaveChallengeSinglePlayer = Button(text="Single Player") self.btnTenWaveChallengeSinglePlayer.pack() self.btnTenWaveChallengeMultiPlayer = Button(text="Multi-Player") self.btnTenWaveChallengeMultiPlayer.pack() self.btnMainMenu = Button(text="Main Menu") self.btnMainMenu.pack(side=BOTTOM) self.lbControls = Label(text="Player 1 - Use arrow keys to move and space bar to shoot"+'\n'+"Player 2 - Use 'wasd' keys to move and tab to shoot",bg="black",fg="white") self.lbControls.pack() self.btnMainMenu.bind('<Button>',StartMainMenu) self.btnTenWaveChallengeSinglePlayer.bind('<Button>',StartTenWaveChallengeSinglePlayer) self.btnTenWaveChallengeMultiPlayer.bind('<Button>',StartTenWaveChallengeMultiPlayer) def StartMainMenu(event): self.destroy() MainMenu() def StartTenWaveChallengeSinglePlayer(event): self.destroy() TenWaveChallengeSinglePlayerChooseEnemies() def StartTenWaveChallengeMultiPlayer(event): self.destroy() TenWaveChallengeMultiPlayerChooseEnemies() def StartSinglePlayerEasy(event): global pace pace = 14000 self.destroy() SinglePlayer() def StartSinglePlayerMedium(event): global pace pace = 10000 self.destroy() SinglePlayer() def StartSinglePlayerHard(event): global pace pace = 6000 self.destroy() SinglePlayer() def StartMultiPlayerEasy(event): global pace pace = 14000 self.destroy() MultiPlayer() def StartMultiPlayerMedium(event): global pace pace = 10000 self.destroy() MultiPlayer() def StartMultiPlayerHard(event): global pace pace = 6000 self.destroy() MultiPlayer() def Exit(event): self.destroy() #Bind self.btnSinglePlayer.bind('<Button>',SinglePlayerChooseDifficulty) self.btnMultiPlayer.bind('<Button>',MultiPlayerChooseDifficulty) self.btnTenWaveChallenge.bind('<Button>',TenWaveChallengeChooseMode) self.bind('<Escape>',Exit) #Frame settings self.geometry("830x700") self.title("Space Assault") self.configure(bg="black") def SinglePlayer(): self = Tk() #Variables global wave global Damage global Damage3 global Damage5 global Damage6 global Xpos global Ypos 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 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 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" 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 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") #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 Xpos > 0: Xpos -= 25 self.player.place(x=Xpos,y=Ypos) direction = "W" cycle = 0 for enemy in Enemies: if Xpos == EnemiesXpos[cycle] and Ypos == EnemiesYpos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy2 in Enemies2: if Xpos == Enemies2Xpos[cycle] and Ypos == Enemies2Ypos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy3 in Enemies3: if Xpos == Enemies3Xpos[cycle] and Ypos == Enemies3Ypos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy4 in Enemies4: if Xpos == Enemies4Xpos[cycle] and Ypos == Enemies4Ypos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy5 in Enemies5: if Xpos == Enemies5Xpos[cycle] and Ypos == Enemies5Ypos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy6 in Enemies6: if Xpos == Enemies6Xpos[cycle] and Ypos == 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 Xpos < 800: Xpos += 25 self.player.place(x=Xpos,y=Ypos) direction = "E" cycle = 0 for enemy in Enemies: if Xpos == EnemiesXpos[cycle] and Ypos == EnemiesYpos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy2 in Enemies2: if Xpos == Enemies2Xpos[cycle] and Ypos == Enemies2Ypos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy3 in Enemies3: if Xpos == Enemies3Xpos[cycle] and Ypos == Enemies3Ypos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy4 in Enemies4: if Xpos == Enemies4Xpos[cycle] and Ypos == Enemies4Ypos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy5 in Enemies5: if Xpos == Enemies5Xpos[cycle] and Ypos == Enemies5Ypos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy6 in Enemies6: if Xpos == Enemies6Xpos[cycle] and Ypos == 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 Ypos > 0: Ypos -= 25 self.player.place(x=Xpos,y=Ypos) direction = "N" cycle = 0 for enemy in Enemies: if Xpos == EnemiesXpos[cycle] and Ypos == EnemiesYpos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy2 in Enemies2: if Xpos == Enemies2Xpos[cycle] and Ypos == Enemies2Ypos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy3 in Enemies3: if Xpos == Enemies3Xpos[cycle] and Ypos == Enemies3Ypos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy4 in Enemies4: if Xpos == Enemies4Xpos[cycle] and Ypos == Enemies4Ypos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy5 in Enemies5: if Xpos == Enemies5Xpos[cycle] and Ypos == Enemies5Ypos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy6 in Enemies6: if Xpos == Enemies6Xpos[cycle] and Ypos == 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 Ypos < 650: Ypos += 25 self.player.place(x=Xpos,y=Ypos) direction = "S" cycle = 0 for enemy in Enemies: if Xpos == EnemiesXpos[cycle] and Ypos == EnemiesYpos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy2 in Enemies2: if Xpos == Enemies2Xpos[cycle] and Ypos == Enemies2Ypos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy3 in Enemies3: if Xpos == Enemies3Xpos[cycle] and Ypos == Enemies3Ypos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy4 in Enemies4: if Xpos == Enemies4Xpos[cycle] and Ypos == Enemies4Ypos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy5 in Enemies5: if Xpos == Enemies5Xpos[cycle] and Ypos == Enemies5Ypos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy6 in Enemies6: if Xpos == Enemies6Xpos[cycle] and Ypos == 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(Xpos - enXpos) <= 75 and abs(Ypos - 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(Xpos - en2Xpos) <= 75 and abs(Ypos - 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(Xpos - en3Xpos) <= 75 and abs(Ypos - 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(Xpos - en4Xpos) <= 150 and abs(Ypos - 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(Xpos - en5Xpos) <= 75 and abs(Ypos - 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(Xpos - en6Xpos) <= 75 and abs(Ypos - 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 Xpos < EnemiesXpos[cycle] and Ypos < 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 Xpos < EnemiesXpos[cycle] and Ypos > 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 Xpos > EnemiesXpos[cycle] and Ypos < 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 Xpos > EnemiesXpos[cycle] and Ypos > 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 Xpos < EnemiesXpos[cycle] and Ypos == 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 Xpos > EnemiesXpos[cycle] and Ypos == 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 Xpos == EnemiesXpos[cycle] and Ypos < 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 Xpos == EnemiesXpos[cycle] and Ypos > 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]) if Xpos == EnemiesXpos[cycle] and Ypos == 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 Xpos < Enemies2Xpos[cycle] and Ypos < 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 Xpos < Enemies2Xpos[cycle] and Ypos > 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 Xpos > Enemies2Xpos[cycle] and Ypos < 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 Xpos > Enemies2Xpos[cycle] and Ypos > 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 Xpos < Enemies2Xpos[cycle] and Ypos == 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 Xpos > Enemies2Xpos[cycle] and Ypos == 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 Xpos == Enemies2Xpos[cycle] and Ypos < 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 Xpos == Enemies2Xpos[cycle] and Ypos > 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]) if Xpos == Enemies2Xpos[cycle] and Ypos == 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 Xpos < Enemies3Xpos[cycle] and Ypos < 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 Xpos < Enemies3Xpos[cycle] and Ypos > 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 Xpos > Enemies3Xpos[cycle] and Ypos < 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 Xpos > Enemies3Xpos[cycle] and Ypos > 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 Xpos < Enemies3Xpos[cycle] and Ypos == 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 Xpos > Enemies3Xpos[cycle] and Ypos == 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 Xpos == Enemies3Xpos[cycle] and Ypos < 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 Xpos == Enemies3Xpos[cycle] and Ypos > 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]) if Xpos == Enemies3Xpos[cycle] and Ypos == 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 Xpos < Enemies4Xpos[cycle] and Ypos < 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 Xpos < Enemies4Xpos[cycle] and Ypos > 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 Xpos > Enemies4Xpos[cycle] and Ypos < 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 Xpos > Enemies4Xpos[cycle] and Ypos > 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 Xpos < Enemies4Xpos[cycle] and Ypos == 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 Xpos > Enemies4Xpos[cycle] and Ypos == 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 Xpos == Enemies4Xpos[cycle] and Ypos < 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 Xpos == Enemies4Xpos[cycle] and Ypos > 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]) if Xpos == Enemies4Xpos[cycle] and Ypos == 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 (Enemies5Wall[cycle] == "E" or Enemies5Wall[cycle] == "W") and Ypos < Enemies5Ypos[cycle]: Enemies5Ypos[cycle] -= 25 elif (Enemies5Wall[cycle] == "E" or Enemies5Wall[cycle] == "W") and Ypos > Enemies5Ypos[cycle]: Enemies5Ypos[cycle] += 25 elif Xpos < Enemies5Xpos[cycle] and (Enemies5Wall[cycle] == "N" or Enemies5Wall[cycle] == "S"): Enemies5Xpos[cycle] -= 25 elif Xpos > Enemies5Xpos[cycle] and (Enemies5Wall[cycle] == "N" or Enemies5Wall[cycle] == "S"): Enemies5Xpos[cycle] += 25 self.enemy5.place(x=Enemies5Xpos[cycle],y=Enemies5Ypos[cycle]) if Xpos == Enemies5Xpos[cycle] and Ypos == Enemies5Ypos[cycle]: GameOver() if Enemies5Wall[cycle] == "E" or Enemies5Wall[cycle] == "W": if Enemies5Ypos[cycle] == Ypos: enShoot() else: if Enemies5Xpos[cycle] == Xpos: 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 direction == "N": shotXpos = Xpos + 10 shotYpos = Ypos - 10 elif direction == "E": shotXpos = Xpos + 30 shotYpos = Ypos + 10 elif direction == "S": shotXpos = Xpos + 10 shotYpos = Ypos + 30 elif direction == "W": shotXpos = Xpos - 10 shotYpos = Ypos + 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(direction) 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": 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: 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 if Xpos + 30 >= enShotsXpos[cycle] >= Xpos - 10 and Ypos + 30 >= enShotsYpos[cycle] >= Ypos - 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('<Left>') self.unbind('<Right>') self.unbind('<Up>') self.unbind('<Down>') self.unbind('<space>') 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('<Button>',Restart) self.btnMainMenu = Button(text="Main Menu") self.btnMainMenu.pack(side=LEFT) self.btnMainMenu.bind('<Button>',StartMainMenu) def Restart(event): self.destroy() SinglePlayer() def Pause(event): global pause global gameover global waveTime if pause == 0: gameover = 1 pause = 1 self.unbind('<Left>') self.unbind('<Right>') self.unbind('<Up>') self.unbind('<Down>') self.unbind('<space>') 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.lbPause = Label(text="Paused"+"\n"+"Press 'p' to Unpause",bg="black",fg="white") self.lbPause.pack(fill=BOTH,expand=1) self.btnMainMenu = Button(text="Main Menu") self.btnMainMenu.pack(side=LEFT) self.btnMainMenu.bind('<Button>',StartMainMenu) elif pause == 1: gameover = 0 pause = 0 self.bind('<Left>',LeftKey) self.bind('<Right>',RightKey) self.bind('<Up>',UpKey) self.bind('<Down>',DownKey) self.bind('<space>',Shoot) EnemyMove() Enemy2Move() Enemy3Move() Enemy4Move() Enemy5Move() Generate() ShotMove() enShotMove() self.lbScore = Label(text="Wave: "+str(wave)+" Next Wave: "+str(waveTime/1000)+"sec Press 'p' to pause",bg="black",fg="white") self.lbScore.place(x=165,y=680,width=500,height=20) NextWave() self.lbPause.destroy() self.btnMainMenu.unbind('<Button>') self.btnMainMenu.destroy() def Exit(event): self.destroy() def StartMainMenu(event): self.destroy() MainMenu() #Bindings self.bind('<Left>',LeftKey) self.bind('<Right>',RightKey) self.bind('<Up>',UpKey) self.bind('<Down>',DownKey) self.bind('<Escape>',Exit) self.bind('<space>',Shoot) self.bind('<p>',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('<Left>') self.unbind('<Right>') self.unbind('<Up>') self.unbind('<Down>') self.unbind('<space>') 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('<Button>',Restart) self.btnMainMenu = Button(text="Main Menu") self.btnMainMenu.pack(side=LEFT) self.btnMainMenu.bind('<Button>',StartMainMenu) def Restart(event): self.destroy() MultiPlayer() def Pause(event): global pause global gameover global waveTime if pause == 0: gameover = 1 pause = 1 self.unbind('<Left>') self.unbind('<Right>') self.unbind('<Up>') self.unbind('<Down>') self.unbind('<space>') 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.lbPause = Label(text="Paused"+"\n"+"Press 'p' to Unpause",bg="black",fg="white") self.lbPause.pack(fill=BOTH,expand=1) self.btnMainMenu = Button(text="Main Menu") self.btnMainMenu.pack(side=LEFT) self.btnMainMenu.bind('<Button>',StartMainMenu) elif pause == 1: gameover = 0 pause = 0 self.bind('<Left>',LeftKey) self.bind('<Right>',RightKey) self.bind('<Up>',UpKey) self.bind('<Down>',DownKey) self.bind('<space>',Shoot) EnemyMove() Enemy2Move() Enemy3Move() Enemy4Move() Enemy5Move() Generate() ShotMove() enShotMove() self.lbScore = Label(text="Wave: "+str(wave)+" Next Wave: "+str(waveTime/1000)+"sec Press 'p' to pause",bg="black",fg="white") self.lbScore.place(x=165,y=680,width=500,height=20) NextWave() self.lbPause.destroy() self.btnMainMenu.unbind('<Button>') self.btnMainMenu.destroy() def Exit(event): self.destroy() def StartMainMenu(event): self.destroy() MainMenu() #Bindings self.bind('<Left>',LeftKey) self.bind('<Right>',RightKey) self.bind('<Up>',UpKey) self.bind('<Down>',DownKey) self.bind('<a>',AKey) self.bind('<d>',DKey) self.bind('<w>',WKey) self.bind('<s>',SKey) self.bind('<Escape>',Exit) self.bind('<space>',Shoot) self.bind('<Tab>',Shoot2) self.bind('<p>',Pause) EnemyMove() Enemy2Move() Enemy3Move() Enemy4Move() Enemy5Move() Generate() ShotMove() enShotMove() #Frame settings self.geometry("830x700") self.title("Space Assault") self.configure(bg="black") def TenWaveChallengeSinglePlayerChooseEnemies(): self = Tk() #Variables global W1E1 global W1E2 global W1E3 global W1E4 global W1E5 global W1E6 global W2E1 global W2E2 global W2E3 global W2E4 global W2E5 global W2E6 global W3E1 global W3E2 global W3E3 global W3E4 global W3E5 global W3E6 global W4E1 global W4E2 global W4E3 global W4E4 global W4E5 global W4E6 global W5E1 global W5E2 global W5E3 global W5E4 global W5E5 global W5E6 global W6E1 global W6E2 global W6E3 global W6E4 global W6E5 global W6E6 global W7E1 global W7E2 global W7E3 global W7E4 global W7E5 global W7E6 global W8E1 global W8E2 global W8E3 global W8E4 global W8E5 global W8E6 global W9E1 global W9E2 global W9E3 global W9E4 global W9E5 global W9E6 global W10E1 global W10E2 global W10E3 global W10E4 global W10E5 global W10E6 W1E1 = 0 W1E2 = 0 W1E3 = 0 W1E4 = 0 W1E5 = 0 W1E6 = 0 W2E1 = 0 W2E2 = 0 W2E3 = 0 W2E4 = 0 W2E5 = 0 W2E6 = 0 W3E1 = 0 W3E2 = 0 W3E3 = 0 W3E4 = 0 W3E5 = 0 W3E6 = 0 W4E1 = 0 W4E2 = 0 W4E3 = 0 W4E4 = 0 W4E5 = 0 W4E6 = 0 W5E1 = 0 W5E2 = 0 W5E3 = 0 W5E4 = 0 W5E5 = 0 W5E6 = 0 W6E1 = 0 W6E2 = 0 W6E3 = 0 W6E4 = 0 W6E5 = 0 W6E6 = 0 W7E1 = 0 W7E2 = 0 W7E3 = 0 W7E4 = 0 W7E5 = 0 W7E6 = 0 W8E1 = 0 W8E2 = 0 W8E3 = 0 W8E4 = 0 W8E5 = 0 W8E6 = 0 W9E1 = 0 W9E2 = 0 W9E3 = 0 W9E4 = 0 W9E5 = 0 W9E6 = 0 W10E1 = 0 W10E2 = 0 W10E3 = 0 W10E4 = 0 W10E5 = 0 W10E6 = 0 #Objects self.lbDirections = Label(text="Choose what enemies are in each wave",bg="black",fg="white") self.lbDirections.pack() self.btnMainMenu = Button(text="Main Menu") self.btnMainMenu.place(x=0,y=680,width=100,height=20) self.lbWave1 = Label(text="Wave 1",bg="black",fg="white") self.lbWave1.place(x=115,y=680,width=60,height=20) self.lbWave2 = Label(text="Wave 2",bg="black",fg="white") self.lbWave2.place(x=175,y=680,width=60,height=20) self.lbWave3 = Label(text="Wave 3",bg="black",fg="white") self.lbWave3.place(x=235,y=680,width=60,height=20) self.lbWave4 = Label(text="Wave 4",bg="black",fg="white") self.lbWave4.place(x=295,y=680,width=60,height=20) self.lbWave5 = Label(text="Wave 5",bg="black",fg="white") self.lbWave5.place(x=355,y=680,width=60,height=20) self.lbWave6 = Label(text="Wave 6",bg="black",fg="white") self.lbWave6.place(x=415,y=680,width=60,height=20) self.lbWave7 = Label(text="Wave 7",bg="black",fg="white") self.lbWave7.place(x=475,y=680,width=60,height=20) self.lbWave8 = Label(text="Wave 8",bg="black",fg="white") self.lbWave8.place(x=535,y=680,width=60,height=20) self.lbWave9 = Label(text="Wave 9",bg="black",fg="white") self.lbWave9.place(x=595,y=680,width=60,height=20) self.lbWave10 = Label(text="Wave 10",bg="black",fg="white") self.lbWave10.place(x=655,y=680,width=60,height=20) self.btnPlaySinglePlayer = Button(text="Play") self.btnPlaySinglePlayer.place(x=730,y=680,width=100,height=20) self.enemy1Up = Canvas(bg="black",highlightthickness=0) self.enemy1Up.place(x=90,y=300,width=30,height=30) self.enemy1Up.create_polygon(15,0,30,30,15,15,0,30,15,0,fill="darkviolet") self.enemy1num = Label(text="0",bg="black",fg="white") self.enemy1num.place(x=90,y=330,width=30,height=20) self.enemy1Down = Canvas(bg="black",highlightthickness=0) self.enemy1Down.place(x=90,y=350,width=30,height=30) self.enemy1Down.create_polygon(15,30,30,0,15,15,0,0,15,30,fill="darkviolet") self.enemy2Up = Canvas(bg="black",highlightthickness=0) self.enemy2Up.place(x=210,y=300,width=30,height=30) self.enemy2Up.create_polygon(15,0,30,30,15,15,0,30,15,0,fill="red") self.enemy2num = Label(text="0",bg="black",fg="white") self.enemy2num.place(x=210,y=330,width=30,height=20) self.enemy2Down = Canvas(bg="black",highlightthickness=0) self.enemy2Down.place(x=210,y=350,width=30,height=30) self.enemy2Down.create_polygon(15,30,30,0,15,15,0,0,15,30,fill="red") self.enemy3Up = Canvas(bg="black",highlightthickness=0) self.enemy3Up.place(x=330,y=300,width=30,height=30) self.enemy3Up.create_polygon(10,0,0,0,0,30,30,30,30,0,20,0,20,10,10,10,fill="navy") self.enemy3num = Label(text="0",bg="black",fg="white") self.enemy3num.place(x=330,y=330,width=30,height=20) self.enemy3Down = Canvas(bg="black",highlightthickness=0) self.enemy3Down.place(x=330,y=350,width=30,height=30) self.enemy3Down.create_polygon(20,30,30,30,30,0,0,0,0,30,10,30,10,20,20,20,fill="navy") self.enemy4Up = Canvas(bg="black",highlightthickness=0) self.enemy4Up.place(x=450,y=300,width=30,height=30) self.enemy4Up.create_polygon(15,0,5,15,12,15,5,30,25,30,17,15,25,15,fill="darkgreen") self.enemy4num = Label(text="0",bg="black",fg="white") self.enemy4num.place(x=450,y=330,width=30,height=20) self.enemy4Down = Canvas(bg="black",highlightthickness=0) self.enemy4Down.place(x=450,y=350,width=30,height=30) self.enemy4Down.create_polygon(15,30,25,15,17,15,25,0,5,0,13,15,5,15,fill="darkgreen") self.enemy5Up = Canvas(bg="black",highlightthickness=0) self.enemy5Up.place(x=570,y=300,width=30,height=30) self.enemy5Up.create_polygon(30,30,20,15,20,0,10,0,10,15,0,30,fill="darkorange2") self.enemy5num = Label(text="0",bg="black",fg="white") self.enemy5num.place(x=570,y=330,width=30,height=20) self.enemy5Down = Canvas(bg="black",highlightthickness=0) self.enemy5Down.place(x=570,y=350,width=30,height=30) self.enemy5Down.create_polygon(0,0,10,15,10,30,20,30,20,15,30,0,fill="darkorange2") self.enemy6Up = Canvas(bg="black",highlightthickness=0) self.enemy6Up.place(x=690,y=300,width=30,height=30) self.enemy6Up.create_oval(0,0,30,30,fill="gray20") self.enemy6num = Label(text="0",bg="black",fg="white") self.enemy6num.place(x=690,y=330,width=30,height=20) self.enemy6Down = Canvas(bg="black",highlightthickness=0) self.enemy6Down.place(x=690,y=350,width=30,height=30) self.enemy6Down.create_oval(0,0,30,30,fill="gray20") #Functions def StartMainMenu(event): self.destroy() MainMenu() def Wave1(*args): global W1E1 global W1E2 global W1E3 global W1E4 global W1E5 global W1E6 self.lbWave1.config(bg="darkblue") self.lbWave2.config(bg="black") self.lbWave3.config(bg="black") self.lbWave4.config(bg="black") self.lbWave5.config(bg="black") self.lbWave6.config(bg="black") self.lbWave7.config(bg="black") self.lbWave8.config(bg="black") self.lbWave9.config(bg="black") self.lbWave10.config(bg="black") self.enemy1Up.unbind('<Button>') self.enemy2Up.unbind('<Button>') self.enemy3Up.unbind('<Button>') self.enemy4Up.unbind('<Button>') self.enemy5Up.unbind('<Button>') self.enemy6Up.unbind('<Button>') self.enemy1Down.unbind('<Button>') self.enemy2Down.unbind('<Button>') self.enemy3Down.unbind('<Button>') self.enemy4Down.unbind('<Button>') self.enemy5Down.unbind('<Button>') self.enemy6Down.unbind('<Button>') self.enemy1Up.bind('<Button>',W1E1Up) self.enemy2Up.bind('<Button>',W1E2Up) self.enemy3Up.bind('<Button>',W1E3Up) self.enemy4Up.bind('<Button>',W1E4Up) self.enemy5Up.bind('<Button>',W1E5Up) self.enemy6Up.bind('<Button>',W1E6Up) self.enemy1Down.bind('<Button>',W1E1Down) self.enemy2Down.bind('<Button>',W1E2Down) self.enemy3Down.bind('<Button>',W1E3Down) self.enemy4Down.bind('<Button>',W1E4Down) self.enemy5Down.bind('<Button>',W1E5Down) self.enemy6Down.bind('<Button>',W1E6Down) self.enemy1num.config(text=str(W1E1)) self.enemy2num.config(text=str(W1E2)) self.enemy3num.config(text=str(W1E3)) self.enemy4num.config(text=str(W1E4)) self.enemy5num.config(text=str(W1E5)) self.enemy6num.config(text=str(W1E6)) def Wave2(event): global W2E1 global W2E2 global W2E3 global W2E4 global W2E5 global W2E6 self.lbWave1.config(bg="black") self.lbWave2.config(bg="darkblue") self.lbWave3.config(bg="black") self.lbWave4.config(bg="black") self.lbWave5.config(bg="black") self.lbWave6.config(bg="black") self.lbWave7.config(bg="black") self.lbWave8.config(bg="black") self.lbWave9.config(bg="black") self.lbWave10.config(bg="black") self.enemy1Up.unbind('<Button>') self.enemy2Up.unbind('<Button>') self.enemy3Up.unbind('<Button>') self.enemy4Up.unbind('<Button>') self.enemy5Up.unbind('<Button>') self.enemy6Up.unbind('<Button>') self.enemy1Down.unbind('<Button>') self.enemy2Down.unbind('<Button>') self.enemy3Down.unbind('<Button>') self.enemy4Down.unbind('<Button>') self.enemy5Down.unbind('<Button>') self.enemy6Down.unbind('<Button>') self.enemy1Up.bind('<Button>',W2E1Up) self.enemy2Up.bind('<Button>',W2E2Up) self.enemy3Up.bind('<Button>',W2E3Up) self.enemy4Up.bind('<Button>',W2E4Up) self.enemy5Up.bind('<Button>',W2E5Up) self.enemy6Up.bind('<Button>',W2E6Up) self.enemy1Down.bind('<Button>',W2E1Down) self.enemy2Down.bind('<Button>',W2E2Down) self.enemy3Down.bind('<Button>',W2E3Down) self.enemy4Down.bind('<Button>',W2E4Down) self.enemy5Down.bind('<Button>',W2E5Down) self.enemy6Down.bind('<Button>',W2E6Down) self.enemy1num.config(text=str(W2E1)) self.enemy2num.config(text=str(W2E2)) self.enemy3num.config(text=str(W2E3)) self.enemy4num.config(text=str(W2E4)) self.enemy5num.config(text=str(W2E5)) self.enemy6num.config(text=str(W2E6)) def Wave3(event): global W3E1 global W3E2 global W3E3 global W3E4 global W3E5 global W3E6 self.lbWave1.config(bg="black") self.lbWave2.config(bg="black") self.lbWave3.config(bg="darkblue") self.lbWave4.config(bg="black") self.lbWave5.config(bg="black") self.lbWave6.config(bg="black") self.lbWave7.config(bg="black") self.lbWave8.config(bg="black") self.lbWave9.config(bg="black") self.lbWave10.config(bg="black") self.enemy1Up.unbind('<Button>') self.enemy2Up.unbind('<Button>') self.enemy3Up.unbind('<Button>') self.enemy4Up.unbind('<Button>') self.enemy5Up.unbind('<Button>') self.enemy6Up.unbind('<Button>') self.enemy1Down.unbind('<Button>') self.enemy2Down.unbind('<Button>') self.enemy3Down.unbind('<Button>') self.enemy4Down.unbind('<Button>') self.enemy5Down.unbind('<Button>') self.enemy6Down.unbind('<Button>') self.enemy1Up.bind('<Button>',W3E1Up) self.enemy2Up.bind('<Button>',W3E2Up) self.enemy3Up.bind('<Button>',W3E3Up) self.enemy4Up.bind('<Button>',W3E4Up) self.enemy5Up.bind('<Button>',W3E5Up) self.enemy6Up.bind('<Button>',W3E6Up) self.enemy1Down.bind('<Button>',W3E1Down) self.enemy2Down.bind('<Button>',W3E2Down) self.enemy3Down.bind('<Button>',W3E3Down) self.enemy4Down.bind('<Button>',W3E4Down) self.enemy5Down.bind('<Button>',W3E5Down) self.enemy6Down.bind('<Button>',W3E6Down) self.enemy1num.config(text=str(W3E1)) self.enemy2num.config(text=str(W3E2)) self.enemy3num.config(text=str(W3E3)) self.enemy4num.config(text=str(W3E4)) self.enemy5num.config(text=str(W3E5)) self.enemy6num.config(text=str(W3E6)) def Wave4(event): global W4E1 global W4E2 global W4E3 global W4E4 global W4E5 global W4E6 self.lbWave1.config(bg="black") self.lbWave2.config(bg="black") self.lbWave3.config(bg="black") self.lbWave4.config(bg="darkblue") self.lbWave5.config(bg="black") self.lbWave6.config(bg="black") self.lbWave7.config(bg="black") self.lbWave8.config(bg="black") self.lbWave9.config(bg="black") self.lbWave10.config(bg="black") self.enemy1Up.unbind('<Button>') self.enemy2Up.unbind('<Button>') self.enemy3Up.unbind('<Button>') self.enemy4Up.unbind('<Button>') self.enemy5Up.unbind('<Button>') self.enemy6Up.unbind('<Button>') self.enemy1Down.unbind('<Button>') self.enemy2Down.unbind('<Button>') self.enemy3Down.unbind('<Button>') self.enemy4Down.unbind('<Button>') self.enemy5Down.unbind('<Button>') self.enemy6Down.unbind('<Button>') self.enemy1Up.bind('<Button>',W4E1Up) self.enemy2Up.bind('<Button>',W4E2Up) self.enemy3Up.bind('<Button>',W4E3Up) self.enemy4Up.bind('<Button>',W4E4Up) self.enemy5Up.bind('<Button>',W4E5Up) self.enemy6Up.bind('<Button>',W4E6Up) self.enemy1Down.bind('<Button>',W4E1Down) self.enemy2Down.bind('<Button>',W4E2Down) self.enemy3Down.bind('<Button>',W4E3Down) self.enemy4Down.bind('<Button>',W4E4Down) self.enemy5Down.bind('<Button>',W4E5Down) self.enemy6Down.bind('<Button>',W4E6Down) self.enemy1num.config(text=str(W4E1)) self.enemy2num.config(text=str(W4E2)) self.enemy3num.config(text=str(W4E3)) self.enemy4num.config(text=str(W4E4)) self.enemy5num.config(text=str(W4E5)) self.enemy6num.config(text=str(W4E6)) def Wave5(event): global W5E1 global W5E2 global W5E3 global W5E4 global W5E5 global W5E6 self.lbWave1.config(bg="black") self.lbWave2.config(bg="black") self.lbWave3.config(bg="black") self.lbWave4.config(bg="black") self.lbWave5.config(bg="darkblue") self.lbWave6.config(bg="black") self.lbWave7.config(bg="black") self.lbWave8.config(bg="black") self.lbWave9.config(bg="black") self.lbWave10.config(bg="black") self.enemy1Up.unbind('<Button>') self.enemy2Up.unbind('<Button>') self.enemy3Up.unbind('<Button>') self.enemy4Up.unbind('<Button>') self.enemy5Up.unbind('<Button>') self.enemy6Up.unbind('<Button>') self.enemy1Down.unbind('<Button>') self.enemy2Down.unbind('<Button>') self.enemy3Down.unbind('<Button>') self.enemy4Down.unbind('<Button>') self.enemy5Down.unbind('<Button>') self.enemy6Down.unbind('<Button>') self.enemy1Up.bind('<Button>',W5E1Up) self.enemy2Up.bind('<Button>',W5E2Up) self.enemy3Up.bind('<Button>',W5E3Up) self.enemy4Up.bind('<Button>',W5E4Up) self.enemy5Up.bind('<Button>',W5E5Up) self.enemy6Up.bind('<Button>',W5E6Up) self.enemy1Down.bind('<Button>',W5E1Down) self.enemy2Down.bind('<Button>',W5E2Down) self.enemy3Down.bind('<Button>',W5E3Down) self.enemy4Down.bind('<Button>',W5E4Down) self.enemy5Down.bind('<Button>',W5E5Down) self.enemy6Down.bind('<Button>',W5E6Down) self.enemy1num.config(text=str(W5E1)) self.enemy2num.config(text=str(W5E2)) self.enemy3num.config(text=str(W5E3)) self.enemy4num.config(text=str(W5E4)) self.enemy5num.config(text=str(W5E5)) self.enemy6num.config(text=str(W5E6)) def Wave6(event): global W6E1 global W6E2 global W6E3 global W6E4 global W6E5 global W6E6 self.lbWave1.config(bg="black") self.lbWave2.config(bg="black") self.lbWave3.config(bg="black") self.lbWave4.config(bg="black") self.lbWave5.config(bg="black") self.lbWave6.config(bg="darkblue") self.lbWave7.config(bg="black") self.lbWave8.config(bg="black") self.lbWave9.config(bg="black") self.lbWave10.config(bg="black") self.enemy1Up.unbind('<Button>') self.enemy2Up.unbind('<Button>') self.enemy3Up.unbind('<Button>') self.enemy4Up.unbind('<Button>') self.enemy5Up.unbind('<Button>') self.enemy6Up.unbind('<Button>') self.enemy1Down.unbind('<Button>') self.enemy2Down.unbind('<Button>') self.enemy3Down.unbind('<Button>') self.enemy4Down.unbind('<Button>') self.enemy5Down.unbind('<Button>') self.enemy6Down.unbind('<Button>') self.enemy1Up.bind('<Button>',W6E1Up) self.enemy2Up.bind('<Button>',W6E2Up) self.enemy3Up.bind('<Button>',W6E3Up) self.enemy4Up.bind('<Button>',W6E4Up) self.enemy5Up.bind('<Button>',W6E5Up) self.enemy6Up.bind('<Button>',W6E6Up) self.enemy1Down.bind('<Button>',W6E1Down) self.enemy2Down.bind('<Button>',W6E2Down) self.enemy3Down.bind('<Button>',W6E3Down) self.enemy4Down.bind('<Button>',W6E4Down) self.enemy5Down.bind('<Button>',W6E5Down) self.enemy6Down.bind('<Button>',W6E6Down) self.enemy1num.config(text=str(W6E1)) self.enemy2num.config(text=str(W6E2)) self.enemy3num.config(text=str(W6E3)) self.enemy4num.config(text=str(W6E4)) self.enemy5num.config(text=str(W6E5)) self.enemy6num.config(text=str(W6E6)) def Wave7(event): global W7E1 global W7E2 global W7E3 global W7E4 global W7E5 global W7E6 self.lbWave1.config(bg="black") self.lbWave2.config(bg="black") self.lbWave3.config(bg="black") self.lbWave4.config(bg="black") self.lbWave5.config(bg="black") self.lbWave6.config(bg="black") self.lbWave7.config(bg="darkblue") self.lbWave8.config(bg="black") self.lbWave9.config(bg="black") self.lbWave10.config(bg="black") self.enemy1Up.unbind('<Button>') self.enemy2Up.unbind('<Button>') self.enemy3Up.unbind('<Button>') self.enemy4Up.unbind('<Button>') self.enemy5Up.unbind('<Button>') self.enemy6Up.unbind('<Button>') self.enemy1Down.unbind('<Button>') self.enemy2Down.unbind('<Button>') self.enemy3Down.unbind('<Button>') self.enemy4Down.unbind('<Button>') self.enemy5Down.unbind('<Button>') self.enemy6Down.unbind('<Button>') self.enemy1Up.bind('<Button>',W7E1Up) self.enemy2Up.bind('<Button>',W7E2Up) self.enemy3Up.bind('<Button>',W7E3Up) self.enemy4Up.bind('<Button>',W7E4Up) self.enemy5Up.bind('<Button>',W7E5Up) self.enemy6Up.bind('<Button>',W7E6Up) self.enemy1Down.bind('<Button>',W7E1Down) self.enemy2Down.bind('<Button>',W7E2Down) self.enemy3Down.bind('<Button>',W7E3Down) self.enemy4Down.bind('<Button>',W7E4Down) self.enemy5Down.bind('<Button>',W7E5Down) self.enemy6Down.bind('<Button>',W7E6Down) self.enemy1num.config(text=str(W7E1)) self.enemy2num.config(text=str(W7E2)) self.enemy3num.config(text=str(W7E3)) self.enemy4num.config(text=str(W7E4)) self.enemy5num.config(text=str(W7E5)) self.enemy6num.config(text=str(W7E6)) def Wave8(event): global W8E1 global W8E2 global W8E3 global W8E4 global W8E5 global W8E6 self.lbWave1.config(bg="black") self.lbWave2.config(bg="black") self.lbWave3.config(bg="black") self.lbWave4.config(bg="black") self.lbWave5.config(bg="black") self.lbWave6.config(bg="black") self.lbWave7.config(bg="black") self.lbWave8.config(bg="darkblue") self.lbWave9.config(bg="black") self.lbWave10.config(bg="black") self.enemy1Up.unbind('<Button>') self.enemy2Up.unbind('<Button>') self.enemy3Up.unbind('<Button>') self.enemy4Up.unbind('<Button>') self.enemy5Up.unbind('<Button>') self.enemy6Up.unbind('<Button>') self.enemy1Down.unbind('<Button>') self.enemy2Down.unbind('<Button>') self.enemy3Down.unbind('<Button>') self.enemy4Down.unbind('<Button>') self.enemy5Down.unbind('<Button>') self.enemy6Down.unbind('<Button>') self.enemy1Up.bind('<Button>',W8E1Up) self.enemy2Up.bind('<Button>',W8E2Up) self.enemy3Up.bind('<Button>',W8E3Up) self.enemy4Up.bind('<Button>',W8E4Up) self.enemy5Up.bind('<Button>',W8E5Up) self.enemy6Up.bind('<Button>',W8E6Up) self.enemy1Down.bind('<Button>',W8E1Down) self.enemy2Down.bind('<Button>',W8E2Down) self.enemy3Down.bind('<Button>',W8E3Down) self.enemy4Down.bind('<Button>',W8E4Down) self.enemy5Down.bind('<Button>',W8E5Down) self.enemy6Down.bind('<Button>',W8E6Down) self.enemy1num.config(text=str(W8E1)) self.enemy2num.config(text=str(W8E2)) self.enemy3num.config(text=str(W8E3)) self.enemy4num.config(text=str(W8E4)) self.enemy5num.config(text=str(W8E5)) self.enemy6num.config(text=str(W8E6)) def Wave9(event): global W9E1 global W9E2 global W9E3 global W9E4 global W9E5 global W9E6 self.lbWave1.config(bg="black") self.lbWave2.config(bg="black") self.lbWave3.config(bg="black") self.lbWave4.config(bg="black") self.lbWave5.config(bg="black") self.lbWave6.config(bg="black") self.lbWave7.config(bg="black") self.lbWave8.config(bg="black") self.lbWave9.config(bg="darkblue") self.lbWave10.config(bg="black") self.enemy1Up.unbind('<Button>') self.enemy2Up.unbind('<Button>') self.enemy3Up.unbind('<Button>') self.enemy4Up.unbind('<Button>') self.enemy5Up.unbind('<Button>') self.enemy6Up.unbind('<Button>') self.enemy1Down.unbind('<Button>') self.enemy2Down.unbind('<Button>') self.enemy3Down.unbind('<Button>') self.enemy4Down.unbind('<Button>') self.enemy5Down.unbind('<Button>') self.enemy6Down.unbind('<Button>') self.enemy1Up.bind('<Button>',W9E1Up) self.enemy2Up.bind('<Button>',W9E2Up) self.enemy3Up.bind('<Button>',W9E3Up) self.enemy4Up.bind('<Button>',W9E4Up) self.enemy5Up.bind('<Button>',W9E5Up) self.enemy6Up.bind('<Button>',W9E6Up) self.enemy1Down.bind('<Button>',W9E1Down) self.enemy2Down.bind('<Button>',W9E2Down) self.enemy3Down.bind('<Button>',W9E3Down) self.enemy4Down.bind('<Button>',W9E4Down) self.enemy5Down.bind('<Button>',W9E5Down) self.enemy6Down.bind('<Button>',W9E6Down) self.enemy1num.config(text=str(W9E1)) self.enemy2num.config(text=str(W9E2)) self.enemy3num.config(text=str(W9E3)) self.enemy4num.config(text=str(W9E4)) self.enemy5num.config(text=str(W9E5)) self.enemy6num.config(text=str(W9E6)) def Wave10(event): global W10E1 global W10E2 global W10E3 global W10E4 global W10E5 global W10E6 self.lbWave1.config(bg="black") self.lbWave2.config(bg="black") self.lbWave3.config(bg="black") self.lbWave4.config(bg="black") self.lbWave5.config(bg="black") self.lbWave6.config(bg="black") self.lbWave7.config(bg="black") self.lbWave8.config(bg="black") self.lbWave9.config(bg="black") self.lbWave10.config(bg="darkblue") self.enemy1Up.unbind('<Button>') self.enemy2Up.unbind('<Button>') self.enemy3Up.unbind('<Button>') self.enemy4Up.unbind('<Button>') self.enemy5Up.unbind('<Button>') self.enemy6Up.unbind('<Button>') self.enemy1Down.unbind('<Button>') self.enemy2Down.unbind('<Button>') self.enemy3Down.unbind('<Button>') self.enemy4Down.unbind('<Button>') self.enemy5Down.unbind('<Button>') self.enemy6Down.unbind('<Button>') self.enemy1Up.bind('<Button>',W10E1Up) self.enemy2Up.bind('<Button>',W10E2Up) self.enemy3Up.bind('<Button>',W10E3Up) self.enemy4Up.bind('<Button>',W10E4Up) self.enemy5Up.bind('<Button>',W10E5Up) self.enemy6Up.bind('<Button>',W10E6Up) self.enemy1Down.bind('<Button>',W10E1Down) self.enemy2Down.bind('<Button>',W10E2Down) self.enemy3Down.bind('<Button>',W10E3Down) self.enemy4Down.bind('<Button>',W10E4Down) self.enemy5Down.bind('<Button>',W10E5Down) self.enemy6Down.bind('<Button>',W10E6Down) self.enemy1num.config(text=str(W10E1)) self.enemy2num.config(text=str(W10E2)) self.enemy3num.config(text=str(W10E3)) self.enemy4num.config(text=str(W10E4)) self.enemy5num.config(text=str(W10E5)) self.enemy6num.config(text=str(W10E6)) def StartTenWaveChallengeSinglePlayer(event): self.destroy() TenWaveChallengeSinglePlayer() def W1E1Up(event): global W1E1 W1E1 += 1 self.enemy1num.config(text=str(W1E1)) def W1E2Up(event): global W1E2 W1E2 += 1 self.enemy2num.config(text=str(W1E2)) def W1E3Up(event): global W1E3 W1E3 += 1 self.enemy3num.config(text=str(W1E3)) def W1E4Up(event): global W1E4 W1E4 += 1 self.enemy4num.config(text=str(W1E4)) def W1E5Up(event): global W1E5 W1E5 += 1 self.enemy5num.config(text=str(W1E5)) def W1E6Up(event): global W1E6 W1E6 += 1 self.enemy6num.config(text=str(W1E6)) def W1E1Down(event): global W1E1 if W1E1 > 0: W1E1 -= 1 self.enemy1num.config(text=str(W1E1)) def W1E2Down(event): global W1E2 if W1E2 > 0: W1E2 -= 1 self.enemy2num.config(text=str(W1E2)) def W1E3Down(event): global W1E3 if W1E3 > 0: W1E3 -= 1 self.enemy3num.config(text=str(W1E3)) def W1E4Down(event): global W1E4 if W1E4 > 0: W1E4 -= 1 self.enemy4num.config(text=str(W1E4)) def W1E5Down(event): global W1E5 if W1E5 > 0: W1E5 -= 1 self.enemy5num.config(text=str(W1E5)) def W1E6Down(event): global W1E6 if W1E6 > 0: W1E6 -= 1 self.enemy6num.config(text=str(W1E6)) def W2E1Up(event): global W2E1 W2E1 += 1 self.enemy1num.config(text=str(W2E1)) def W2E2Up(event): global W2E2 W2E2 += 1 self.enemy2num.config(text=str(W2E2)) def W2E3Up(event): global W2E3 W2E3 += 1 self.enemy3num.config(text=str(W2E3)) def W2E4Up(event): global W2E4 W2E4 += 1 self.enemy4num.config(text=str(W2E4)) def W2E5Up(event): global W2E5 W2E5 += 1 self.enemy5num.config(text=str(W2E5)) def W2E6Up(event): global W2E6 W2E6 += 1 self.enemy6num.config(text=str(W2E6)) def W2E1Down(event): global W2E1 if W2E1 > 0: W2E1 -= 1 self.enemy1num.config(text=str(W2E1)) def W2E2Down(event): global W2E2 if W2E2 > 0: W2E2 -= 1 self.enemy2num.config(text=str(W2E2)) def W2E3Down(event): global W2E3 if W2E3 > 0: W2E3 -= 1 self.enemy3num.config(text=str(W2E3)) def W2E4Down(event): global W2E4 if W2E4 > 0: W2E4 -= 1 self.enemy4num.config(text=str(W2E4)) def W2E5Down(event): global W2E5 if W2E5 > 0: W2E5 -= 1 self.enemy5num.config(text=str(W2E5)) def W2E6Down(event): global W2E6 if W2E6 > 0: W2E6 -= 1 self.enemy6num.config(text=str(W2E6)) def W3E1Up(event): global W3E1 W3E1 += 1 self.enemy1num.config(text=str(W3E1)) def W3E2Up(event): global W3E2 W3E2 += 1 self.enemy2num.config(text=str(W3E2)) def W3E3Up(event): global W3E3 W3E3 += 1 self.enemy3num.config(text=str(W3E3)) def W3E4Up(event): global W3E4 W3E4 += 1 self.enemy4num.config(text=str(W3E4)) def W3E5Up(event): global W3E5 W3E5 += 1 self.enemy5num.config(text=str(W3E5)) def W3E6Up(event): global W3E6 W3E6 += 1 self.enemy6num.config(text=str(W3E6)) def W3E1Down(event): global W3E1 if W3E1 > 0: W3E1 -= 1 self.enemy1num.config(text=str(W3E1)) def W3E2Down(event): global W3E2 if W3E2 > 0: W3E2 -= 1 self.enemy2num.config(text=str(W3E2)) def W3E3Down(event): global W3E3 if W3E3 > 0: W3E3 -= 1 self.enemy3num.config(text=str(W3E3)) def W3E4Down(event): global W3E4 if W3E4 > 0: W3E4 -= 1 self.enemy4num.config(text=str(W3E4)) def W3E5Down(event): global W3E5 if W3E5 > 0: W3E5 -= 1 self.enemy5num.config(text=str(W3E5)) def W3E6Down(event): global W3E6 if W3E6 > 0: W3E6 -= 1 self.enemy6num.config(text=str(W3E6)) def W4E1Up(event): global W4E1 W4E1 += 1 self.enemy1num.config(text=str(W4E1)) def W4E2Up(event): global W4E2 W4E2 += 1 self.enemy2num.config(text=str(W4E2)) def W4E3Up(event): global W4E3 W4E3 += 1 self.enemy3num.config(text=str(W4E3)) def W4E4Up(event): global W4E4 W4E4 += 1 self.enemy4num.config(text=str(W4E4)) def W4E5Up(event): global W4E5 W4E5 += 1 self.enemy5num.config(text=str(W4E5)) def W4E6Up(event): global W4E6 W4E6 += 1 self.enemy6num.config(text=str(W4E6)) def W4E1Down(event): global W4E1 if W4E1 > 0: W4E1 -= 1 self.enemy1num.config(text=str(W4E1)) def W4E2Down(event): global W4E2 if W4E2 > 0: W4E2 -= 1 self.enemy2num.config(text=str(W4E2)) def W4E3Down(event): global W4E3 if W4E3 > 0: W4E3 -= 1 self.enemy3num.config(text=str(W4E3)) def W4E4Down(event): global W4E4 if W4E4 > 0: W4E4 -= 1 self.enemy4num.config(text=str(W4E4)) def W4E5Down(event): global W4E5 if W4E5 > 0: W4E5 -= 1 self.enemy5num.config(text=str(W4E5)) def W4E6Down(event): global W4E6 if W4E6 > 0: W4E6 -= 1 self.enemy6num.config(text=str(W4E6)) def W5E1Up(event): global W5E1 W5E1 += 1 self.enemy1num.config(text=str(W5E1)) def W5E2Up(event): global W5E2 W5E2 += 1 self.enemy2num.config(text=str(W5E2)) def W5E3Up(event): global W5E3 W5E3 += 1 self.enemy3num.config(text=str(W5E3)) def W5E4Up(event): global W5E4 W5E4 += 1 self.enemy4num.config(text=str(W5E4)) def W5E5Up(event): global W5E5 W5E5 += 1 self.enemy5num.config(text=str(W5E5)) def W5E6Up(event): global W5E6 W5E6 += 1 self.enemy6num.config(text=str(W5E6)) def W5E1Down(event): global W5E1 if W5E1 > 0: W5E1 -= 1 self.enemy1num.config(text=str(W5E1)) def W5E2Down(event): global W5E2 if W5E2 > 0: W5E2 -= 1 self.enemy2num.config(text=str(W5E2)) def W5E3Down(event): global W5E3 if W5E3 > 0: W5E3 -= 1 self.enemy3num.config(text=str(W5E3)) def W5E4Down(event): global W5E4 if W5E4 > 0: W5E4 -= 1 self.enemy4num.config(text=str(W5E4)) def W5E5Down(event): global W5E5 if W5E5 > 0: W5E5 -= 1 self.enemy5num.config(text=str(W5E5)) def W5E6Down(event): global W5E6 if W5E6 > 0: W5E6 -= 1 self.enemy6num.config(text=str(W5E6)) def W6E1Up(event): global W6E1 W6E1 += 1 self.enemy1num.config(text=str(W6E1)) def W6E2Up(event): global W6E2 W6E2 += 1 self.enemy2num.config(text=str(W6E2)) def W6E3Up(event): global W6E3 W6E3 += 1 self.enemy3num.config(text=str(W6E3)) def W6E4Up(event): global W6E4 W6E4 += 1 self.enemy4num.config(text=str(W6E4)) def W6E5Up(event): global W6E5 W6E5 += 1 self.enemy5num.config(text=str(W6E5)) def W6E6Up(event): global W6E6 W6E6 += 1 self.enemy6num.config(text=str(W6E6)) def W6E1Down(event): global W6E1 if W6E1 > 0: W6E1 -= 1 self.enemy1num.config(text=str(W6E1)) def W6E2Down(event): global W6E2 if W6E2 > 0: W6E2 -= 1 self.enemy2num.config(text=str(W6E2)) def W6E3Down(event): global W6E3 if W6E3 > 0: W6E3 -= 1 self.enemy3num.config(text=str(W6E3)) def W6E4Down(event): global W6E4 if W6E4 > 0: W6E4 -= 1 self.enemy4num.config(text=str(W6E4)) def W6E5Down(event): global W6E5 if W6E5 > 0: W6E5 -= 1 self.enemy5num.config(text=str(W6E5)) def W6E6Down(event): global W6E6 if W6E6 > 0: W6E6 -= 1 self.enemy6num.config(text=str(W6E6)) def W7E1Up(event): global W7E1 W7E1 += 1 self.enemy1num.config(text=str(W7E1)) def W7E2Up(event): global W7E2 W7E2 += 1 self.enemy2num.config(text=str(W7E2)) def W7E3Up(event): global W7E3 W7E3 += 1 self.enemy3num.config(text=str(W7E3)) def W7E4Up(event): global W7E4 W7E4 += 1 self.enemy4num.config(text=str(W7E4)) def W7E5Up(event): global W7E5 W7E5 += 1 self.enemy5num.config(text=str(W7E5)) def W7E6Up(event): global W7E6 W7E6 += 1 self.enemy6num.config(text=str(W7E6)) def W7E1Down(event): global W7E1 if W7E1 > 0: W7E1 -= 1 self.enemy1num.config(text=str(W7E1)) def W7E2Down(event): global W7E2 if W7E2 > 0: W7E2 -= 1 self.enemy2num.config(text=str(W7E2)) def W7E3Down(event): global W7E3 if W7E3 > 0: W7E3 -= 1 self.enemy3num.config(text=str(W7E3)) def W7E4Down(event): global W7E4 if W7E4 > 0: W7E4 -= 1 self.enemy4num.config(text=str(W7E4)) def W7E5Down(event): global W7E5 if W7E5 > 0: W7E5 -= 1 self.enemy5num.config(text=str(W7E5)) def W7E6Down(event): global W7E6 if W7E6 > 0: W7E6 -= 1 self.enemy6num.config(text=str(W7E6)) def W8E1Up(event): global W8E1 W8E1 += 1 self.enemy1num.config(text=str(W8E1)) def W8E2Up(event): global W8E2 W8E2 += 1 self.enemy2num.config(text=str(W8E2)) def W8E3Up(event): global W8E3 W8E3 += 1 self.enemy3num.config(text=str(W8E3)) def W8E4Up(event): global W8E4 W8E4 += 1 self.enemy4num.config(text=str(W8E4)) def W8E5Up(event): global W8E5 W8E5 += 1 self.enemy5num.config(text=str(W8E5)) def W8E6Up(event): global W8E6 W8E6 += 1 self.enemy6num.config(text=str(W8E6)) def W8E1Down(event): global W8E1 if W8E1 > 0: W8E1 -= 1 self.enemy1num.config(text=str(W8E1)) def W8E2Down(event): global W8E2 if W8E2 > 0: W8E2 -= 1 self.enemy2num.config(text=str(W8E2)) def W8E3Down(event): global W8E3 if W8E3 > 0: W8E3 -= 1 self.enemy3num.config(text=str(W8E3)) def W8E4Down(event): global W8E4 if W8E4 > 0: W8E4 -= 1 self.enemy4num.config(text=str(W8E4)) def W8E5Down(event): global W8E5 if W8E5 > 0: W8E5 -= 1 self.enemy5num.config(text=str(W8E5)) def W8E6Down(event): global W8E6 if W8E6 > 0: W8E6 -= 1 self.enemy6num.config(text=str(W8E6)) def W9E1Up(event): global W9E1 W9E1 += 1 self.enemy1num.config(text=str(W9E1)) def W9E2Up(event): global W9E2 W9E2 += 1 self.enemy2num.config(text=str(W9E2)) def W9E3Up(event): global W9E3 W9E3 += 1 self.enemy3num.config(text=str(W9E3)) def W9E4Up(event): global W9E4 W9E4 += 1 self.enemy4num.config(text=str(W9E4)) def W9E5Up(event): global W9E5 W9E5 += 1 self.enemy5num.config(text=str(W9E5)) def W9E6Up(event): global W9E6 W9E6 += 1 self.enemy6num.config(text=str(W9E6)) def W9E1Down(event): global W9E1 if W9E1 > 0: W9E1 -= 1 self.enemy1num.config(text=str(W9E1)) def W9E2Down(event): global W9E2 if W9E2 > 0: W9E2 -= 1 self.enemy2num.config(text=str(W9E2)) def W9E3Down(event): global W9E3 if W9E3 > 0: W9E3 -= 1 self.enemy3num.config(text=str(W9E3)) def W9E4Down(event): global W9E4 if W9E4 > 0: W9E4 -= 1 self.enemy4num.config(text=str(W9E4)) def W9E5Down(event): global W9E5 if W9E5 > 0: W9E5 -= 1 self.enemy5num.config(text=str(W9E5)) def W9E6Down(event): global W9E6 if W9E6 > 0: W9E6 -= 1 self.enemy6num.config(text=str(W9E6)) def W10E1Up(event): global W10E1 W10E1 += 1 self.enemy1num.config(text=str(W10E1)) def W10E2Up(event): global W10E2 W10E2 += 1 self.enemy2num.config(text=str(W10E2)) def W10E3Up(event): global W10E3 W10E3 += 1 self.enemy3num.config(text=str(W10E3)) def W10E4Up(event): global W10E4 W10E4 += 1 self.enemy4num.config(text=str(W10E4)) def W10E5Up(event): global W10E5 W10E5 += 1 self.enemy5num.config(text=str(W10E5)) def W10E6Up(event): global W10E6 W10E6 += 1 self.enemy6num.config(text=str(W10E6)) def W10E1Down(event): global W10E1 if W10E1 > 0: W10E1 -= 1 self.enemy1num.config(text=str(W10E1)) def W10E2Down(event): global W10E2 if W10E2 > 0: W10E2 -= 1 self.enemy2num.config(text=str(W10E2)) def W10E3Down(event): global W10E3 if W10E3 > 0: W10E3 -= 1 self.enemy3num.config(text=str(W10E3)) def W10E4Down(event): global W10E4 if W10E4 > 0: W10E4 -= 1 self.enemy4num.config(text=str(W10E4)) def W10E5Down(event): global W10E5 if W10E5 > 0: W10E5 -= 1 self.enemy5num.config(text=str(W10E5)) def W10E6Down(event): global W10E6 if W10E6 > 0: W10E6 -= 1 self.enemy6num.config(text=str(W10E6)) def Exit(event): self.destroy() #Bind self.btnMainMenu.bind('<Button>',StartMainMenu) self.lbWave1.bind('<Button>',Wave1) self.lbWave2.bind('<Button>',Wave2) self.lbWave3.bind('<Button>',Wave3) self.lbWave4.bind('<Button>',Wave4) self.lbWave5.bind('<Button>',Wave5) self.lbWave6.bind('<Button>',Wave6) self.lbWave7.bind('<Button>',Wave7) self.lbWave8.bind('<Button>',Wave8) self.lbWave9.bind('<Button>',Wave9) self.lbWave10.bind('<Button>',Wave10) self.btnPlaySinglePlayer.bind('<Button>',StartTenWaveChallengeSinglePlayer) self.bind('<Escape>',Exit) #Frame settings self.geometry("830x700") self.title("Space Assault") self.configure(bg="black") Wave1() def TenWaveChallengeSinglePlayer(): self = Tk() #Variables global wave global Damage global Damage3 global Damage5 global Damage6 global Xpos global Ypos 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 start global created global created2 global created3 global created4 global created5 global destroy global generated1 global generated2 global generated3 global generated4 global pause wave = 0 Damage = 0 Damage3 = 0 Damage5 = 0 Damage6 = 0 Xpos = 425 Ypos = 350 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" start = 0 created = 0 created2 = 0 created3 = 0 created4 = 0 created5 = 0 destroy = 0 generated1 = 1000 generated2 = 1250 generated3 = 1500 generated4 = 1750 pause = 0 global W1E1 global W1E2 global W1E3 global W1E4 global W1E5 global W1E6 global W2E1 global W2E2 global W2E3 global W2E4 global W2E5 global W2E6 global W3E1 global W3E2 global W3E3 global W3E4 global W3E5 global W3E6 global W4E1 global W4E2 global W4E3 global W4E4 global W4E5 global W4E6 global W5E1 global W5E2 global W5E3 global W5E4 global W5E5 global W5E6 global W6E1 global W6E2 global W6E3 global W6E4 global W6E5 global W6E6 global W7E1 global W7E2 global W7E3 global W7E4 global W7E5 global W7E6 global W8E1 global W8E2 global W8E3 global W8E4 global W8E5 global W8E6 global W9E1 global W9E2 global W9E3 global W9E4 global W9E5 global W9E6 global W10E1 global W10E2 global W10E3 global W10E4 global W10E5 global W10E6 #Lists 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)+" 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") #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 Xpos > 0: Xpos -= 25 self.player.place(x=Xpos,y=Ypos) direction = "W" cycle = 0 for enemy in Enemies: if Xpos == EnemiesXpos[cycle] and Ypos == EnemiesYpos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy2 in Enemies2: if Xpos == Enemies2Xpos[cycle] and Ypos == Enemies2Ypos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy3 in Enemies3: if Xpos == Enemies3Xpos[cycle] and Ypos == Enemies3Ypos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy4 in Enemies4: if Xpos == Enemies4Xpos[cycle] and Ypos == Enemies4Ypos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy5 in Enemies5: if Xpos == Enemies5Xpos[cycle] and Ypos == Enemies5Ypos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy6 in Enemies6: if Xpos == Enemies6Xpos[cycle] and Ypos == 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 Xpos < 800: Xpos += 25 self.player.place(x=Xpos,y=Ypos) direction = "E" cycle = 0 for enemy in Enemies: if Xpos == EnemiesXpos[cycle] and Ypos == EnemiesYpos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy2 in Enemies2: if Xpos == Enemies2Xpos[cycle] and Ypos == Enemies2Ypos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy3 in Enemies3: if Xpos == Enemies3Xpos[cycle] and Ypos == Enemies3Ypos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy4 in Enemies4: if Xpos == Enemies4Xpos[cycle] and Ypos == Enemies4Ypos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy5 in Enemies5: if Xpos == Enemies5Xpos[cycle] and Ypos == Enemies5Ypos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy6 in Enemies6: if Xpos == Enemies6Xpos[cycle] and Ypos == 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 Ypos > 0: Ypos -= 25 self.player.place(x=Xpos,y=Ypos) direction = "N" cycle = 0 for enemy in Enemies: if Xpos == EnemiesXpos[cycle] and Ypos == EnemiesYpos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy2 in Enemies2: if Xpos == Enemies2Xpos[cycle] and Ypos == Enemies2Ypos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy3 in Enemies3: if Xpos == Enemies3Xpos[cycle] and Ypos == Enemies3Ypos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy4 in Enemies4: if Xpos == Enemies4Xpos[cycle] and Ypos == Enemies4Ypos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy5 in Enemies5: if Xpos == Enemies5Xpos[cycle] and Ypos == Enemies5Ypos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy6 in Enemies6: if Xpos == Enemies6Xpos[cycle] and Ypos == 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 Ypos < 650: Ypos += 25 self.player.place(x=Xpos,y=Ypos) direction = "S" cycle = 0 for enemy in Enemies: if Xpos == EnemiesXpos[cycle] and Ypos == EnemiesYpos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy2 in Enemies2: if Xpos == Enemies2Xpos[cycle] and Ypos == Enemies2Ypos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy3 in Enemies3: if Xpos == Enemies3Xpos[cycle] and Ypos == Enemies3Ypos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy4 in Enemies4: if Xpos == Enemies4Xpos[cycle] and Ypos == Enemies4Ypos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy5 in Enemies5: if Xpos == Enemies5Xpos[cycle] and Ypos == Enemies5Ypos[cycle]: GameOver() cycle += 1 cycle = 0 for enemy6 in Enemies6: if Xpos == Enemies6Xpos[cycle] and Ypos == 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(Xpos - enXpos) <= 75 and abs(Ypos - 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(Xpos - en2Xpos) <= 75 and abs(Ypos - 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(Xpos - en3Xpos) <= 75 and abs(Ypos - 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(Xpos - en4Xpos) <= 150 and abs(Ypos - 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(Xpos - en5Xpos) <= 75 and abs(Ypos - 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(Xpos - en6Xpos) <= 75 and abs(Ypos - 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 Xpos < EnemiesXpos[cycle] and Ypos < 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 Xpos < EnemiesXpos[cycle] and Ypos > 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 Xpos > EnemiesXpos[cycle] and Ypos < 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 Xpos > EnemiesXpos[cycle] and Ypos > 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 Xpos < EnemiesXpos[cycle] and Ypos == 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 Xpos > EnemiesXpos[cycle] and Ypos == 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 Xpos == EnemiesXpos[cycle] and Ypos < 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 Xpos == EnemiesXpos[cycle] and Ypos > 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]) if Xpos == EnemiesXpos[cycle] and Ypos == 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 Xpos < Enemies2Xpos[cycle] and Ypos < 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 Xpos < Enemies2Xpos[cycle] and Ypos > 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 Xpos > Enemies2Xpos[cycle] and Ypos < 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 Xpos > Enemies2Xpos[cycle] and Ypos > 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 Xpos < Enemies2Xpos[cycle] and Ypos == 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 Xpos > Enemies2Xpos[cycle] and Ypos == 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 Xpos == Enemies2Xpos[cycle] and Ypos < 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 Xpos == Enemies2Xpos[cycle] and Ypos > 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]) if Xpos == Enemies2Xpos[cycle] and Ypos == 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 Xpos < Enemies3Xpos[cycle] and Ypos < 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 Xpos < Enemies3Xpos[cycle] and Ypos > 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 Xpos > Enemies3Xpos[cycle] and Ypos < 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 Xpos > Enemies3Xpos[cycle] and Ypos > 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 Xpos < Enemies3Xpos[cycle] and Ypos == 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 Xpos > Enemies3Xpos[cycle] and Ypos == 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 Xpos == Enemies3Xpos[cycle] and Ypos < 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 Xpos == Enemies3Xpos[cycle] and Ypos > 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]) if Xpos == Enemies3Xpos[cycle] and Ypos == 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 Xpos < Enemies4Xpos[cycle] and Ypos < 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 Xpos < Enemies4Xpos[cycle] and Ypos > 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 Xpos > Enemies4Xpos[cycle] and Ypos < 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 Xpos > Enemies4Xpos[cycle] and Ypos > 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 Xpos < Enemies4Xpos[cycle] and Ypos == 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 Xpos > Enemies4Xpos[cycle] and Ypos == 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 Xpos == Enemies4Xpos[cycle] and Ypos < 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 Xpos == Enemies4Xpos[cycle] and Ypos > 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]) if Xpos == Enemies4Xpos[cycle] and Ypos == 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 (Enemies5Wall[cycle] == "E" or Enemies5Wall[cycle] == "W") and Ypos < Enemies5Ypos[cycle]: Enemies5Ypos[cycle] -= 25 elif (Enemies5Wall[cycle] == "E" or Enemies5Wall[cycle] == "W") and Ypos > Enemies5Ypos[cycle]: Enemies5Ypos[cycle] += 25 elif Xpos < Enemies5Xpos[cycle] and (Enemies5Wall[cycle] == "N" or Enemies5Wall[cycle] == "S"): Enemies5Xpos[cycle] -= 25 elif Xpos > Enemies5Xpos[cycle] and (Enemies5Wall[cycle] == "N" or Enemies5Wall[cycle] == "S"): Enemies5Xpos[cycle] += 25 self.enemy5.place(x=Enemies5Xpos[cycle],y=Enemies5Ypos[cycle]) if Xpos == Enemies5Xpos[cycle] and Ypos == Enemies5Ypos[cycle]: GameOver() if Enemies5Wall[cycle] == "E" or Enemies5Wall[cycle] == "W": if Enemies5Ypos[cycle] == Ypos: enShoot() else: if Enemies5Xpos[cycle] == Xpos: 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 direction == "N": shotXpos = Xpos + 10 shotYpos = Ypos - 10 elif direction == "E": shotXpos = Xpos + 30 shotYpos = Ypos + 10 elif direction == "S": shotXpos = Xpos + 10 shotYpos = Ypos + 30 elif direction == "W": shotXpos = Xpos - 10 shotYpos = Ypos + 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(direction) 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": 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: 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 if Xpos + 30 >= enShotsXpos[cycle] >= Xpos - 10 and Ypos + 30 >= enShotsYpos[cycle] >= Ypos - 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 time = 0 wave += 1 #Wave 1 if wave == 1: E = 0 while E < W1E1: self.after(time,CreateEnemy) E += 1 time += 250 E = 0 while E < W1E2: self.after(time,CreateEnemy2) E += 1 time += 250 E = 0 while E < W1E3: self.after(time,CreateEnemy3) E += 1 time += 250 E = 0 while E < W1E4: self.after(time,CreateEnemy4) E += 1 time += 250 E = 0 while E < W1E5: self.after(time,CreateEnemy5) E += 1 time += 250 E = 0 while E < W1E6: self.after(time,CreateEnemy6) E += 1 time += 250 #Wave 2 if wave == 2: E = 0 while E < W2E1: self.after(time,CreateEnemy) E += 1 time += 250 E = 0 while E < W2E2: self.after(time,CreateEnemy2) E += 1 time += 250 E = 0 while E < W2E3: self.after(time,CreateEnemy3) E += 1 time += 250 E = 0 while E < W2E4: self.after(time,CreateEnemy4) E += 1 time += 250 E = 0 while E < W2E5: self.after(time,CreateEnemy5) E += 1 time += 250 E = 0 while E < W2E6: self.after(time,CreateEnemy6) E += 1 time += 250 #Wave 3 if wave == 3: E = 0 while E < W3E1: self.after(time,CreateEnemy) E += 1 time += 250 E = 0 while E < W3E2: self.after(time,CreateEnemy2) E += 1 time += 250 E = 0 while E < W3E3: self.after(time,CreateEnemy3) E += 1 time += 250 E = 0 while E < W3E4: self.after(time,CreateEnemy4) E += 1 time += 250 E = 0 while E < W3E5: self.after(time,CreateEnemy5) E += 1 time += 250 E = 0 while E < W3E6: self.after(time,CreateEnemy6) E += 1 time += 250 #Wave 4 if wave == 4: E = 0 while E < W4E1: self.after(time,CreateEnemy) E += 1 time += 250 E = 0 while E < W4E2: self.after(time,CreateEnemy2) E += 1 time += 250 E = 0 while E < W4E3: self.after(time,CreateEnemy3) E += 1 time += 250 E = 0 while E < W4E4: self.after(time,CreateEnemy4) E += 1 time += 250 E = 0 while E < W4E5: self.after(time,CreateEnemy5) E += 1 time += 250 E = 0 while E < W4E6: self.after(time,CreateEnemy6) E += 1 time += 250 #Wave 5 if wave == 5: E = 0 while E < W5E1: self.after(time,CreateEnemy) E += 1 time += 250 E = 0 while E < W5E2: self.after(time,CreateEnemy2) E += 1 time += 250 E = 0 while E < W5E3: self.after(time,CreateEnemy3) E += 1 time += 250 E = 0 while E < W5E4: self.after(time,CreateEnemy4) E += 1 time += 250 E = 0 while E < W5E5: self.after(time,CreateEnemy5) E += 1 time += 250 E = 0 while E < W5E6: self.after(time,CreateEnemy6) E += 1 time += 250 #Wave 6 if wave == 6: E = 0 while E < W6E1: self.after(time,CreateEnemy) E += 1 time += 250 E = 0 while E < W6E2: self.after(time,CreateEnemy2) E += 1 time += 250 E = 0 while E < W6E3: self.after(time,CreateEnemy3) E += 1 time += 250 E = 0 while E < W6E4: self.after(time,CreateEnemy4) E += 1 time += 250 E = 0 while E < W6E5: self.after(time,CreateEnemy5) E += 1 time += 250 E = 0 while E < W6E6: self.after(time,CreateEnemy6) E += 1 time += 250 #Wave 7 if wave == 7: E = 0 while E < W7E1: self.after(time,CreateEnemy) E += 1 time += 250 E = 0 while E < W7E2: self.after(time,CreateEnemy2) E += 1 time += 250 E = 0 while E < W7E3: self.after(time,CreateEnemy3) E += 1 time += 250 E = 0 while E < W7E4: self.after(time,CreateEnemy4) E += 1 time += 250 E = 0 while E < W7E5: self.after(time,CreateEnemy5) E += 1 time += 250 E = 0 while E < W7E6: self.after(time,CreateEnemy6) E += 1 time += 250 #Wave 8 if wave == 8: E = 0 while E < W8E1: self.after(time,CreateEnemy) E += 1 time += 250 E = 0 while E < W8E2: self.after(time,CreateEnemy2) E += 1 time += 250 E = 0 while E < W8E3: self.after(time,CreateEnemy3) E += 1 time += 250 E = 0 while E < W8E4: self.after(time,CreateEnemy4) E += 1 time += 250 E = 0 while E < W8E5: self.after(time,CreateEnemy5) E += 1 time += 250 E = 0 while E < W8E6: self.after(time,CreateEnemy6) E += 1 time += 250 #Wave 9 if wave == 9: E = 0 while E < W9E1: self.after(time,CreateEnemy) E += 1 time += 250 E = 0 while E < W9E2: self.after(time,CreateEnemy2) E += 1 time += 250 E = 0 while E < W9E3: self.after(time,CreateEnemy3) E += 1 time += 250 E = 0 while E < W9E4: self.after(time,CreateEnemy4) E += 1 time += 250 E = 0 while E < W9E5: self.after(time,CreateEnemy5) E += 1 time += 250 E = 0 while E < W9E6: self.after(time,CreateEnemy6) E += 1 time += 250 #Wave 10 if wave == 10: E = 0 while E < W10E1: self.after(time,CreateEnemy) E += 1 time += 250 E = 0 while E < W10E2: self.after(time,CreateEnemy2) E += 1 time += 250 E = 0 while E < W10E3: self.after(time,CreateEnemy3) E += 1 time += 250 E = 0 while E < W10E4: self.after(time,CreateEnemy4) E += 1 time += 250 E = 0 while E < W10E5: self.after(time,CreateEnemy5) E += 1 time += 250 E = 0 while E < W10E6: self.after(time,CreateEnemy6) E += 1 time += 250 #Win if wave == 11: Winner() def NextWave(): global wave global gameover if gameover == 0: self.after(10,NextWave) if not Enemies and not Enemies2 and not Enemies3 and not Enemies4 and not Enemies5 and not Enemies6: Summon() if wave != 11: self.lbScore.config(text="Wave: "+str(wave)+" Press 'p' to pause") def Winner(): global gameover if gameover == 0: gameover = 1 self.unbind('<Left>') self.unbind('<Right>') self.unbind('<Up>') self.unbind('<Down>') self.unbind('<space>') 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.lbWinner = Label(text="You Win!!!",bg="black",fg="white") self.lbWinner.pack(fill=BOTH,expand=1) self.btnMainMenu = Button(text="Main Menu") self.btnMainMenu.pack(side=LEFT) self.btnMainMenu.bind('<Button>',StartMainMenu) def GameOver(): global gameover global wave if gameover == 0: gameover = 1 self.unbind('<Left>') self.unbind('<Right>') self.unbind('<Up>') self.unbind('<Down>') self.unbind('<space>') 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('<Button>',Restart) self.btnMainMenu = Button(text="Main Menu") self.btnMainMenu.pack(side=LEFT) self.btnMainMenu.bind('<Button>',StartMainMenu) def Restart(event): self.destroy() TenWaveChallengeSinglePlayer() def Pause(event): global pause global gameover if pause == 0: gameover = 1 pause = 1 self.unbind('<Left>') self.unbind('<Right>') self.unbind('<Up>') self.unbind('<Down>') self.unbind('<space>') 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.lbPause = Label(text="Paused"+"\n"+"Press 'p' to Unpause",bg="black",fg="white") self.lbPause.pack(fill=BOTH,expand=1) self.btnMainMenu = Button(text="Main Menu") self.btnMainMenu.pack(side=LEFT) self.btnMainMenu.bind('<Button>',StartMainMenu) elif pause == 1: gameover = 0 pause = 0 self.bind('<Left>',LeftKey) self.bind('<Right>',RightKey) self.bind('<Up>',UpKey) self.bind('<Down>',DownKey) self.bind('<space>',Shoot) EnemyMove() Enemy2Move() Enemy3Move() Enemy4Move() Enemy5Move() Generate() ShotMove() enShotMove() self.lbScore = Label(text="Wave: "+str(wave)+" Press 'p' to pause",bg="black",fg="white") self.lbScore.place(x=165,y=680,width=500,height=20) NextWave() self.lbPause.destroy() self.btnMainMenu.unbind('<Button>') self.btnMainMenu.destroy() def Exit(event): self.destroy() def StartMainMenu(event): self.destroy() MainMenu() #Bindings self.bind('<Left>',LeftKey) self.bind('<Right>',RightKey) self.bind('<Up>',UpKey) self.bind('<Down>',DownKey) self.bind('<Escape>',Exit) self.bind('<space>',Shoot) self.bind('<p>',Pause) EnemyMove() Enemy2Move() Enemy3Move() Enemy4Move() Enemy5Move() Generate() ShotMove() enShotMove() #Frame settings self.geometry("830x700") self.title("Space Assault") self.configure(bg="black") def TenWaveChallengeMultiPlayerChooseEnemies(): self = Tk() #Variables global W1E1 global W1E2 global W1E3 global W1E4 global W1E5 global W1E6 global W2E1 global W2E2 global W2E3 global W2E4 global W2E5 global W2E6 global W3E1 global W3E2 global W3E3 global W3E4 global W3E5 global W3E6 global W4E1 global W4E2 global W4E3 global W4E4 global W4E5 global W4E6 global W5E1 global W5E2 global W5E3 global W5E4 global W5E5 global W5E6 global W6E1 global W6E2 global W6E3 global W6E4 global W6E5 global W6E6 global W7E1 global W7E2 global W7E3 global W7E4 global W7E5 global W7E6 global W8E1 global W8E2 global W8E3 global W8E4 global W8E5 global W8E6 global W9E1 global W9E2 global W9E3 global W9E4 global W9E5 global W9E6 global W10E1 global W10E2 global W10E3 global W10E4 global W10E5 global W10E6 W1E1 = 0 W1E2 = 0 W1E3 = 0 W1E4 = 0 W1E5 = 0 W1E6 = 0 W2E1 = 0 W2E2 = 0 W2E3 = 0 W2E4 = 0 W2E5 = 0 W2E6 = 0 W3E1 = 0 W3E2 = 0 W3E3 = 0 W3E4 = 0 W3E5 = 0 W3E6 = 0 W4E1 = 0 W4E2 = 0 W4E3 = 0 W4E4 = 0 W4E5 = 0 W4E6 = 0 W5E1 = 0 W5E2 = 0 W5E3 = 0 W5E4 = 0 W5E5 = 0 W5E6 = 0 W6E1 = 0 W6E2 = 0 W6E3 = 0 W6E4 = 0 W6E5 = 0 W6E6 = 0 W7E1 = 0 W7E2 = 0 W7E3 = 0 W7E4 = 0 W7E5 = 0 W7E6 = 0 W8E1 = 0 W8E2 = 0 W8E3 = 0 W8E4 = 0 W8E5 = 0 W8E6 = 0 W9E1 = 0 W9E2 = 0 W9E3 = 0 W9E4 = 0 W9E5 = 0 W9E6 = 0 W10E1 = 0 W10E2 = 0 W10E3 = 0 W10E4 = 0 W10E5 = 0 W10E6 = 0 #Objects self.lbDirections = Label(text="Choose what enemies are in each wave",bg="black",fg="white") self.lbDirections.pack() self.btnMainMenu = Button(text="Main Menu") self.btnMainMenu.place(x=0,y=680,width=100,height=20) self.lbWave1 = Label(text="Wave 1",bg="black",fg="white") self.lbWave1.place(x=115,y=680,width=60,height=20) self.lbWave2 = Label(text="Wave 2",bg="black",fg="white") self.lbWave2.place(x=175,y=680,width=60,height=20) self.lbWave3 = Label(text="Wave 3",bg="black",fg="white") self.lbWave3.place(x=235,y=680,width=60,height=20) self.lbWave4 = Label(text="Wave 4",bg="black",fg="white") self.lbWave4.place(x=295,y=680,width=60,height=20) self.lbWave5 = Label(text="Wave 5",bg="black",fg="white") self.lbWave5.place(x=355,y=680,width=60,height=20) self.lbWave6 = Label(text="Wave 6",bg="black",fg="white") self.lbWave6.place(x=415,y=680,width=60,height=20) self.lbWave7 = Label(text="Wave 7",bg="black",fg="white") self.lbWave7.place(x=475,y=680,width=60,height=20) self.lbWave8 = Label(text="Wave 8",bg="black",fg="white") self.lbWave8.place(x=535,y=680,width=60,height=20) self.lbWave9 = Label(text="Wave 9",bg="black",fg="white") self.lbWave9.place(x=595,y=680,width=60,height=20) self.lbWave10 = Label(text="Wave 10",bg="black",fg="white") self.lbWave10.place(x=655,y=680,width=60,height=20) self.btnPlayMultiPlayer = Button(text="Play") self.btnPlayMultiPlayer.place(x=730,y=680,width=100,height=20) self.enemy1Up = Canvas(bg="black",highlightthickness=0) self.enemy1Up.place(x=90,y=300,width=30,height=30) self.enemy1Up.create_polygon(15,0,30,30,15,15,0,30,15,0,fill="darkviolet") self.enemy1num = Label(text="0",bg="black",fg="white") self.enemy1num.place(x=90,y=330,width=30,height=20) self.enemy1Down = Canvas(bg="black",highlightthickness=0) self.enemy1Down.place(x=90,y=350,width=30,height=30) self.enemy1Down.create_polygon(15,30,30,0,15,15,0,0,15,30,fill="darkviolet") self.enemy2Up = Canvas(bg="black",highlightthickness=0) self.enemy2Up.place(x=210,y=300,width=30,height=30) self.enemy2Up.create_polygon(15,0,30,30,15,15,0,30,15,0,fill="red") self.enemy2num = Label(text="0",bg="black",fg="white") self.enemy2num.place(x=210,y=330,width=30,height=20) self.enemy2Down = Canvas(bg="black",highlightthickness=0) self.enemy2Down.place(x=210,y=350,width=30,height=30) self.enemy2Down.create_polygon(15,30,30,0,15,15,0,0,15,30,fill="red") self.enemy3Up = Canvas(bg="black",highlightthickness=0) self.enemy3Up.place(x=330,y=300,width=30,height=30) self.enemy3Up.create_polygon(10,0,0,0,0,30,30,30,30,0,20,0,20,10,10,10,fill="navy") self.enemy3num = Label(text="0",bg="black",fg="white") self.enemy3num.place(x=330,y=330,width=30,height=20) self.enemy3Down = Canvas(bg="black",highlightthickness=0) self.enemy3Down.place(x=330,y=350,width=30,height=30) self.enemy3Down.create_polygon(20,30,30,30,30,0,0,0,0,30,10,30,10,20,20,20,fill="navy") self.enemy4Up = Canvas(bg="black",highlightthickness=0) self.enemy4Up.place(x=450,y=300,width=30,height=30) self.enemy4Up.create_polygon(15,0,5,15,12,15,5,30,25,30,17,15,25,15,fill="darkgreen") self.enemy4num = Label(text="0",bg="black",fg="white") self.enemy4num.place(x=450,y=330,width=30,height=20) self.enemy4Down = Canvas(bg="black",highlightthickness=0) self.enemy4Down.place(x=450,y=350,width=30,height=30) self.enemy4Down.create_polygon(15,30,25,15,17,15,25,0,5,0,13,15,5,15,fill="darkgreen") self.enemy5Up = Canvas(bg="black",highlightthickness=0) self.enemy5Up.place(x=570,y=300,width=30,height=30) self.enemy5Up.create_polygon(30,30,20,15,20,0,10,0,10,15,0,30,fill="darkorange2") self.enemy5num = Label(text="0",bg="black",fg="white") self.enemy5num.place(x=570,y=330,width=30,height=20) self.enemy5Down = Canvas(bg="black",highlightthickness=0) self.enemy5Down.place(x=570,y=350,width=30,height=30) self.enemy5Down.create_polygon(0,0,10,15,10,30,20,30,20,15,30,0,fill="darkorange2") self.enemy6Up = Canvas(bg="black",highlightthickness=0) self.enemy6Up.place(x=690,y=300,width=30,height=30) self.enemy6Up.create_oval(0,0,30,30,fill="gray20") self.enemy6num = Label(text="0",bg="black",fg="white") self.enemy6num.place(x=690,y=330,width=30,height=20) self.enemy6Down = Canvas(bg="black",highlightthickness=0) self.enemy6Down.place(x=690,y=350,width=30,height=30) self.enemy6Down.create_oval(0,0,30,30,fill="gray20") #Functions def StartMainMenu(event): self.destroy() MainMenu() def Wave1(*args): global W1E1 global W1E2 global W1E3 global W1E4 global W1E5 global W1E6 self.lbWave1.config(bg="darkblue") self.lbWave2.config(bg="black") self.lbWave3.config(bg="black") self.lbWave4.config(bg="black") self.lbWave5.config(bg="black") self.lbWave6.config(bg="black") self.lbWave7.config(bg="black") self.lbWave8.config(bg="black") self.lbWave9.config(bg="black") self.lbWave10.config(bg="black") self.enemy1Up.unbind('<Button>') self.enemy2Up.unbind('<Button>') self.enemy3Up.unbind('<Button>') self.enemy4Up.unbind('<Button>') self.enemy5Up.unbind('<Button>') self.enemy6Up.unbind('<Button>') self.enemy1Down.unbind('<Button>') self.enemy2Down.unbind('<Button>') self.enemy3Down.unbind('<Button>') self.enemy4Down.unbind('<Button>') self.enemy5Down.unbind('<Button>') self.enemy6Down.unbind('<Button>') self.enemy1Up.bind('<Button>',W1E1Up) self.enemy2Up.bind('<Button>',W1E2Up) self.enemy3Up.bind('<Button>',W1E3Up) self.enemy4Up.bind('<Button>',W1E4Up) self.enemy5Up.bind('<Button>',W1E5Up) self.enemy6Up.bind('<Button>',W1E6Up) self.enemy1Down.bind('<Button>',W1E1Down) self.enemy2Down.bind('<Button>',W1E2Down) self.enemy3Down.bind('<Button>',W1E3Down) self.enemy4Down.bind('<Button>',W1E4Down) self.enemy5Down.bind('<Button>',W1E5Down) self.enemy6Down.bind('<Button>',W1E6Down) self.enemy1num.config(text=str(W1E1)) self.enemy2num.config(text=str(W1E2)) self.enemy3num.config(text=str(W1E3)) self.enemy4num.config(text=str(W1E4)) self.enemy5num.config(text=str(W1E5)) self.enemy6num.config(text=str(W1E6)) def Wave2(event): global W2E1 global W2E2 global W2E3 global W2E4 global W2E5 global W2E6 self.lbWave1.config(bg="black") self.lbWave2.config(bg="darkblue") self.lbWave3.config(bg="black") self.lbWave4.config(bg="black") self.lbWave5.config(bg="black") self.lbWave6.config(bg="black") self.lbWave7.config(bg="black") self.lbWave8.config(bg="black") self.lbWave9.config(bg="black") self.lbWave10.config(bg="black") self.enemy1Up.unbind('<Button>') self.enemy2Up.unbind('<Button>') self.enemy3Up.unbind('<Button>') self.enemy4Up.unbind('<Button>') self.enemy5Up.unbind('<Button>') self.enemy6Up.unbind('<Button>') self.enemy1Down.unbind('<Button>') self.enemy2Down.unbind('<Button>') self.enemy3Down.unbind('<Button>') self.enemy4Down.unbind('<Button>') self.enemy5Down.unbind('<Button>') self.enemy6Down.unbind('<Button>') self.enemy1Up.bind('<Button>',W2E1Up) self.enemy2Up.bind('<Button>',W2E2Up) self.enemy3Up.bind('<Button>',W2E3Up) self.enemy4Up.bind('<Button>',W2E4Up) self.enemy5Up.bind('<Button>',W2E5Up) self.enemy6Up.bind('<Button>',W2E6Up) self.enemy1Down.bind('<Button>',W2E1Down) self.enemy2Down.bind('<Button>',W2E2Down) self.enemy3Down.bind('<Button>',W2E3Down) self.enemy4Down.bind('<Button>',W2E4Down) self.enemy5Down.bind('<Button>',W2E5Down) self.enemy6Down.bind('<Button>',W2E6Down) self.enemy1num.config(text=str(W2E1)) self.enemy2num.config(text=str(W2E2)) self.enemy3num.config(text=str(W2E3)) self.enemy4num.config(text=str(W2E4)) self.enemy5num.config(text=str(W2E5)) self.enemy6num.config(text=str(W2E6)) def Wave3(event): global W3E1 global W3E2 global W3E3 global W3E4 global W3E5 global W3E6 self.lbWave1.config(bg="black") self.lbWave2.config(bg="black") self.lbWave3.config(bg="darkblue") self.lbWave4.config(bg="black") self.lbWave5.config(bg="black") self.lbWave6.config(bg="black") self.lbWave7.config(bg="black") self.lbWave8.config(bg="black") self.lbWave9.config(bg="black") self.lbWave10.config(bg="black") self.enemy1Up.unbind('<Button>') self.enemy2Up.unbind('<Button>') self.enemy3Up.unbind('<Button>') self.enemy4Up.unbind('<Button>') self.enemy5Up.unbind('<Button>') self.enemy6Up.unbind('<Button>') self.enemy1Down.unbind('<Button>') self.enemy2Down.unbind('<Button>') self.enemy3Down.unbind('<Button>') self.enemy4Down.unbind('<Button>') self.enemy5Down.unbind('<Button>') self.enemy6Down.unbind('<Button>') self.enemy1Up.bind('<Button>',W3E1Up) self.enemy2Up.bind('<Button>',W3E2Up) self.enemy3Up.bind('<Button>',W3E3Up) self.enemy4Up.bind('<Button>',W3E4Up) self.enemy5Up.bind('<Button>',W3E5Up) self.enemy6Up.bind('<Button>',W3E6Up) self.enemy1Down.bind('<Button>',W3E1Down) self.enemy2Down.bind('<Button>',W3E2Down) self.enemy3Down.bind('<Button>',W3E3Down) self.enemy4Down.bind('<Button>',W3E4Down) self.enemy5Down.bind('<Button>',W3E5Down) self.enemy6Down.bind('<Button>',W3E6Down) self.enemy1num.config(text=str(W3E1)) self.enemy2num.config(text=str(W3E2)) self.enemy3num.config(text=str(W3E3)) self.enemy4num.config(text=str(W3E4)) self.enemy5num.config(text=str(W3E5)) self.enemy6num.config(text=str(W3E6)) def Wave4(event): global W4E1 global W4E2 global W4E3 global W4E4 global W4E5 global W4E6 self.lbWave1.config(bg="black") self.lbWave2.config(bg="black") self.lbWave3.config(bg="black") self.lbWave4.config(bg="darkblue") self.lbWave5.config(bg="black") self.lbWave6.config(bg="black") self.lbWave7.config(bg="black") self.lbWave8.config(bg="black") self.lbWave9.config(bg="black") self.lbWave10.config(bg="black") self.enemy1Up.unbind('<Button>') self.enemy2Up.unbind('<Button>') self.enemy3Up.unbind('<Button>') self.enemy4Up.unbind('<Button>') self.enemy5Up.unbind('<Button>') self.enemy6Up.unbind('<Button>') self.enemy1Down.unbind('<Button>') self.enemy2Down.unbind('<Button>') self.enemy3Down.unbind('<Button>') self.enemy4Down.unbind('<Button>') self.enemy5Down.unbind('<Button>') self.enemy6Down.unbind('<Button>') self.enemy1Up.bind('<Button>',W4E1Up) self.enemy2Up.bind('<Button>',W4E2Up) self.enemy3Up.bind('<Button>',W4E3Up) self.enemy4Up.bind('<Button>',W4E4Up) self.enemy5Up.bind('<Button>',W4E5Up) self.enemy6Up.bind('<Button>',W4E6Up) self.enemy1Down.bind('<Button>',W4E1Down) self.enemy2Down.bind('<Button>',W4E2Down) self.enemy3Down.bind('<Button>',W4E3Down) self.enemy4Down.bind('<Button>',W4E4Down) self.enemy5Down.bind('<Button>',W4E5Down) self.enemy6Down.bind('<Button>',W4E6Down) self.enemy1num.config(text=str(W4E1)) self.enemy2num.config(text=str(W4E2)) self.enemy3num.config(text=str(W4E3)) self.enemy4num.config(text=str(W4E4)) self.enemy5num.config(text=str(W4E5)) self.enemy6num.config(text=str(W4E6)) def Wave5(event): global W5E1 global W5E2 global W5E3 global W5E4 global W5E5 global W5E6 self.lbWave1.config(bg="black") self.lbWave2.config(bg="black") self.lbWave3.config(bg="black") self.lbWave4.config(bg="black") self.lbWave5.config(bg="darkblue") self.lbWave6.config(bg="black") self.lbWave7.config(bg="black") self.lbWave8.config(bg="black") self.lbWave9.config(bg="black") self.lbWave10.config(bg="black") self.enemy1Up.unbind('<Button>') self.enemy2Up.unbind('<Button>') self.enemy3Up.unbind('<Button>') self.enemy4Up.unbind('<Button>') self.enemy5Up.unbind('<Button>') self.enemy6Up.unbind('<Button>') self.enemy1Down.unbind('<Button>') self.enemy2Down.unbind('<Button>') self.enemy3Down.unbind('<Button>') self.enemy4Down.unbind('<Button>') self.enemy5Down.unbind('<Button>') self.enemy6Down.unbind('<Button>') self.enemy1Up.bind('<Button>',W5E1Up) self.enemy2Up.bind('<Button>',W5E2Up) self.enemy3Up.bind('<Button>',W5E3Up) self.enemy4Up.bind('<Button>',W5E4Up) self.enemy5Up.bind('<Button>',W5E5Up) self.enemy6Up.bind('<Button>',W5E6Up) self.enemy1Down.bind('<Button>',W5E1Down) self.enemy2Down.bind('<Button>',W5E2Down) self.enemy3Down.bind('<Button>',W5E3Down) self.enemy4Down.bind('<Button>',W5E4Down) self.enemy5Down.bind('<Button>',W5E5Down) self.enemy6Down.bind('<Button>',W5E6Down) self.enemy1num.config(text=str(W5E1)) self.enemy2num.config(text=str(W5E2)) self.enemy3num.config(text=str(W5E3)) self.enemy4num.config(text=str(W5E4)) self.enemy5num.config(text=str(W5E5)) self.enemy6num.config(text=str(W5E6)) def Wave6(event): global W6E1 global W6E2 global W6E3 global W6E4 global W6E5 global W6E6 self.lbWave1.config(bg="black") self.lbWave2.config(bg="black") self.lbWave3.config(bg="black") self.lbWave4.config(bg="black") self.lbWave5.config(bg="black") self.lbWave6.config(bg="darkblue") self.lbWave7.config(bg="black") self.lbWave8.config(bg="black") self.lbWave9.config(bg="black") self.lbWave10.config(bg="black") self.enemy1Up.unbind('<Button>') self.enemy2Up.unbind('<Button>') self.enemy3Up.unbind('<Button>') self.enemy4Up.unbind('<Button>') self.enemy5Up.unbind('<Button>') self.enemy6Up.unbind('<Button>') self.enemy1Down.unbind('<Button>') self.enemy2Down.unbind('<Button>') self.enemy3Down.unbind('<Button>') self.enemy4Down.unbind('<Button>') self.enemy5Down.unbind('<Button>') self.enemy6Down.unbind('<Button>') self.enemy1Up.bind('<Button>',W6E1Up) self.enemy2Up.bind('<Button>',W6E2Up) self.enemy3Up.bind('<Button>',W6E3Up) self.enemy4Up.bind('<Button>',W6E4Up) self.enemy5Up.bind('<Button>',W6E5Up) self.enemy6Up.bind('<Button>',W6E6Up) self.enemy1Down.bind('<Button>',W6E1Down) self.enemy2Down.bind('<Button>',W6E2Down) self.enemy3Down.bind('<Button>',W6E3Down) self.enemy4Down.bind('<Button>',W6E4Down) self.enemy5Down.bind('<Button>',W6E5Down) self.enemy6Down.bind('<Button>',W6E6Down) self.enemy1num.config(text=str(W6E1)) self.enemy2num.config(text=str(W6E2)) self.enemy3num.config(text=str(W6E3)) self.enemy4num.config(text=str(W6E4)) self.enemy5num.config(text=str(W6E5)) self.enemy6num.config(text=str(W6E6)) def Wave7(event): global W7E1 global W7E2 global W7E3 global W7E4 global W7E5 global W7E6 self.lbWave1.config(bg="black") self.lbWave2.config(bg="black") self.lbWave3.config(bg="black") self.lbWave4.config(bg="black") self.lbWave5.config(bg="black") self.lbWave6.config(bg="black") self.lbWave7.config(bg="darkblue") self.lbWave8.config(bg="black") self.lbWave9.config(bg="black") self.lbWave10.config(bg="black") self.enemy1Up.unbind('<Button>') self.enemy2Up.unbind('<Button>') self.enemy3Up.unbind('<Button>') self.enemy4Up.unbind('<Button>') self.enemy5Up.unbind('<Button>') self.enemy6Up.unbind('<Button>') self.enemy1Down.unbind('<Button>') self.enemy2Down.unbind('<Button>') self.enemy3Down.unbind('<Button>') self.enemy4Down.unbind('<Button>') self.enemy5Down.unbind('<Button>') self.enemy6Down.unbind('<Button>') self.enemy1Up.bind('<Button>',W7E1Up) self.enemy2Up.bind('<Button>',W7E2Up) self.enemy3Up.bind('<Button>',W7E3Up) self.enemy4Up.bind('<Button>',W7E4Up) self.enemy5Up.bind('<Button>',W7E5Up) self.enemy6Up.bind('<Button>',W7E6Up) self.enemy1Down.bind('<Button>',W7E1Down) self.enemy2Down.bind('<Button>',W7E2Down) self.enemy3Down.bind('<Button>',W7E3Down) self.enemy4Down.bind('<Button>',W7E4Down) self.enemy5Down.bind('<Button>',W7E5Down) self.enemy6Down.bind('<Button>',W7E6Down) self.enemy1num.config(text=str(W7E1)) self.enemy2num.config(text=str(W7E2)) self.enemy3num.config(text=str(W7E3)) self.enemy4num.config(text=str(W7E4)) self.enemy5num.config(text=str(W7E5)) self.enemy6num.config(text=str(W7E6)) def Wave8(event): global W8E1 global W8E2 global W8E3 global W8E4 global W8E5 global W8E6 self.lbWave1.config(bg="black") self.lbWave2.config(bg="black") self.lbWave3.config(bg="black") self.lbWave4.config(bg="black") self.lbWave5.config(bg="black") self.lbWave6.config(bg="black") self.lbWave7.config(bg="black") self.lbWave8.config(bg="darkblue") self.lbWave9.config(bg="black") self.lbWave10.config(bg="black") self.enemy1Up.unbind('<Button>') self.enemy2Up.unbind('<Button>') self.enemy3Up.unbind('<Button>') self.enemy4Up.unbind('<Button>') self.enemy5Up.unbind('<Button>') self.enemy6Up.unbind('<Button>') self.enemy1Down.unbind('<Button>') self.enemy2Down.unbind('<Button>') self.enemy3Down.unbind('<Button>') self.enemy4Down.unbind('<Button>') self.enemy5Down.unbind('<Button>') self.enemy6Down.unbind('<Button>') self.enemy1Up.bind('<Button>',W8E1Up) self.enemy2Up.bind('<Button>',W8E2Up) self.enemy3Up.bind('<Button>',W8E3Up) self.enemy4Up.bind('<Button>',W8E4Up) self.enemy5Up.bind('<Button>',W8E5Up) self.enemy6Up.bind('<Button>',W8E6Up) self.enemy1Down.bind('<Button>',W8E1Down) self.enemy2Down.bind('<Button>',W8E2Down) self.enemy3Down.bind('<Button>',W8E3Down) self.enemy4Down.bind('<Button>',W8E4Down) self.enemy5Down.bind('<Button>',W8E5Down) self.enemy6Down.bind('<Button>',W8E6Down) self.enemy1num.config(text=str(W8E1)) self.enemy2num.config(text=str(W8E2)) self.enemy3num.config(text=str(W8E3)) self.enemy4num.config(text=str(W8E4)) self.enemy5num.config(text=str(W8E5)) self.enemy6num.config(text=str(W8E6)) def Wave9(event): global W9E1 global W9E2 global W9E3 global W9E4 global W9E5 global W9E6 self.lbWave1.config(bg="black") self.lbWave2.config(bg="black") self.lbWave3.config(bg="black") self.lbWave4.config(bg="black") self.lbWave5.config(bg="black") self.lbWave6.config(bg="black") self.lbWave7.config(bg="black") self.lbWave8.config(bg="black") self.lbWave9.config(bg="darkblue") self.lbWave10.config(bg="black") self.enemy1Up.unbind('<Button>') self.enemy2Up.unbind('<Button>') self.enemy3Up.unbind('<Button>') self.enemy4Up.unbind('<Button>') self.enemy5Up.unbind('<Button>') self.enemy6Up.unbind('<Button>') self.enemy1Down.unbind('<Button>') self.enemy2Down.unbind('<Button>') self.enemy3Down.unbind('<Button>') self.enemy4Down.unbind('<Button>') self.enemy5Down.unbind('<Button>') self.enemy6Down.unbind('<Button>') self.enemy1Up.bind('<Button>',W9E1Up) self.enemy2Up.bind('<Button>',W9E2Up) self.enemy3Up.bind('<Button>',W9E3Up) self.enemy4Up.bind('<Button>',W9E4Up) self.enemy5Up.bind('<Button>',W9E5Up) self.enemy6Up.bind('<Button>',W9E6Up) self.enemy1Down.bind('<Button>',W9E1Down) self.enemy2Down.bind('<Button>',W9E2Down) self.enemy3Down.bind('<Button>',W9E3Down) self.enemy4Down.bind('<Button>',W9E4Down) self.enemy5Down.bind('<Button>',W9E5Down) self.enemy6Down.bind('<Button>',W9E6Down) self.enemy1num.config(text=str(W9E1)) self.enemy2num.config(text=str(W9E2)) self.enemy3num.config(text=str(W9E3)) self.enemy4num.config(text=str(W9E4)) self.enemy5num.config(text=str(W9E5)) self.enemy6num.config(text=str(W9E6)) def Wave10(event): global W10E1 global W10E2 global W10E3 global W10E4 global W10E5 global W10E6 self.lbWave1.config(bg="black") self.lbWave2.config(bg="black") self.lbWave3.config(bg="black") self.lbWave4.config(bg="black") self.lbWave5.config(bg="black") self.lbWave6.config(bg="black") self.lbWave7.config(bg="black") self.lbWave8.config(bg="black") self.lbWave9.config(bg="black") self.lbWave10.config(bg="darkblue") self.enemy1Up.unbind('<Button>') self.enemy2Up.unbind('<Button>') self.enemy3Up.unbind('<Button>') self.enemy4Up.unbind('<Button>') self.enemy5Up.unbind('<Button>') self.enemy6Up.unbind('<Button>') self.enemy1Down.unbind('<Button>') self.enemy2Down.unbind('<Button>') self.enemy3Down.unbind('<Button>') self.enemy4Down.unbind('<Button>') self.enemy5Down.unbind('<Button>') self.enemy6Down.unbind('<Button>') self.enemy1Up.bind('<Button>',W10E1Up) self.enemy2Up.bind('<Button>',W10E2Up) self.enemy3Up.bind('<Button>',W10E3Up) self.enemy4Up.bind('<Button>',W10E4Up) self.enemy5Up.bind('<Button>',W10E5Up) self.enemy6Up.bind('<Button>',W10E6Up) self.enemy1Down.bind('<Button>',W10E1Down) self.enemy2Down.bind('<Button>',W10E2Down) self.enemy3Down.bind('<Button>',W10E3Down) self.enemy4Down.bind('<Button>',W10E4Down) self.enemy5Down.bind('<Button>',W10E5Down) self.enemy6Down.bind('<Button>',W10E6Down) self.enemy1num.config(text=str(W10E1)) self.enemy2num.config(text=str(W10E2)) self.enemy3num.config(text=str(W10E3)) self.enemy4num.config(text=str(W10E4)) self.enemy5num.config(text=str(W10E5)) self.enemy6num.config(text=str(W10E6)) def StartTenWaveChallengeMultiPlayer(event): self.destroy() TenWaveChallengeMultiPlayer() def W1E1Up(event): global W1E1 W1E1 += 1 self.enemy1num.config(text=str(W1E1)) def W1E2Up(event): global W1E2 W1E2 += 1 self.enemy2num.config(text=str(W1E2)) def W1E3Up(event): global W1E3 W1E3 += 1 self.enemy3num.config(text=str(W1E3)) def W1E4Up(event): global W1E4 W1E4 += 1 self.enemy4num.config(text=str(W1E4)) def W1E5Up(event): global W1E5 W1E5 += 1 self.enemy5num.config(text=str(W1E5)) def W1E6Up(event): global W1E6 W1E6 += 1 self.enemy6num.config(text=str(W1E6)) def W1E1Down(event): global W1E1 if W1E1 > 0: W1E1 -= 1 self.enemy1num.config(text=str(W1E1)) def W1E2Down(event): global W1E2 if W1E2 > 0: W1E2 -= 1 self.enemy2num.config(text=str(W1E2)) def W1E3Down(event): global W1E3 if W1E3 > 0: W1E3 -= 1 self.enemy3num.config(text=str(W1E3)) def W1E4Down(event): global W1E4 if W1E4 > 0: W1E4 -= 1 self.enemy4num.config(text=str(W1E4)) def W1E5Down(event): global W1E5 if W1E5 > 0: W1E5 -= 1 self.enemy5num.config(text=str(W1E5)) def W1E6Down(event): global W1E6 if W1E6 > 0: W1E6 -= 1 self.enemy6num.config(text=str(W1E6)) def W2E1Up(event): global W2E1 W2E1 += 1 self.enemy1num.config(text=str(W2E1)) def W2E2Up(event): global W2E2 W2E2 += 1 self.enemy2num.config(text=str(W2E2)) def W2E3Up(event): global W2E3 W2E3 += 1 self.enemy3num.config(text=str(W2E3)) def W2E4Up(event): global W2E4 W2E4 += 1 self.enemy4num.config(text=str(W2E4)) def W2E5Up(event): global W2E5 W2E5 += 1 self.enemy5num.config(text=str(W2E5)) def W2E6Up(event): global W2E6 W2E6 += 1 self.enemy6num.config(text=str(W2E6)) def W2E1Down(event): global W2E1 if W2E1 > 0: W2E1 -= 1 self.enemy1num.config(text=str(W2E1)) def W2E2Down(event): global W2E2 if W2E2 > 0: W2E2 -= 1 self.enemy2num.config(text=str(W2E2)) def W2E3Down(event): global W2E3 if W2E3 > 0: W2E3 -= 1 self.enemy3num.config(text=str(W2E3)) def W2E4Down(event): global W2E4 if W2E4 > 0: W2E4 -= 1 self.enemy4num.config(text=str(W2E4)) def W2E5Down(event): global W2E5 if W2E5 > 0: W2E5 -= 1 self.enemy5num.config(text=str(W2E5)) def W2E6Down(event): global W2E6 if W2E6 > 0: W2E6 -= 1 self.enemy6num.config(text=str(W2E6)) def W3E1Up(event): global W3E1 W3E1 += 1 self.enemy1num.config(text=str(W3E1)) def W3E2Up(event): global W3E2 W3E2 += 1 self.enemy2num.config(text=str(W3E2)) def W3E3Up(event): global W3E3 W3E3 += 1 self.enemy3num.config(text=str(W3E3)) def W3E4Up(event): global W3E4 W3E4 += 1 self.enemy4num.config(text=str(W3E4)) def W3E5Up(event): global W3E5 W3E5 += 1 self.enemy5num.config(text=str(W3E5)) def W3E6Up(event): global W3E6 W3E6 += 1 self.enemy6num.config(text=str(W3E6)) def W3E1Down(event): global W3E1 if W3E1 > 0: W3E1 -= 1 self.enemy1num.config(text=str(W3E1)) def W3E2Down(event): global W3E2 if W3E2 > 0: W3E2 -= 1 self.enemy2num.config(text=str(W3E2)) def W3E3Down(event): global W3E3 if W3E3 > 0: W3E3 -= 1 self.enemy3num.config(text=str(W3E3)) def W3E4Down(event): global W3E4 if W3E4 > 0: W3E4 -= 1 self.enemy4num.config(text=str(W3E4)) def W3E5Down(event): global W3E5 if W3E5 > 0: W3E5 -= 1 self.enemy5num.config(text=str(W3E5)) def W3E6Down(event): global W3E6 if W3E6 > 0: W3E6 -= 1 self.enemy6num.config(text=str(W3E6)) def W4E1Up(event): global W4E1 W4E1 += 1 self.enemy1num.config(text=str(W4E1)) def W4E2Up(event): global W4E2 W4E2 += 1 self.enemy2num.config(text=str(W4E2)) def W4E3Up(event): global W4E3 W4E3 += 1 self.enemy3num.config(text=str(W4E3)) def W4E4Up(event): global W4E4 W4E4 += 1 self.enemy4num.config(text=str(W4E4)) def W4E5Up(event): global W4E5 W4E5 += 1 self.enemy5num.config(text=str(W4E5)) def W4E6Up(event): global W4E6 W4E6 += 1 self.enemy6num.config(text=str(W4E6)) def W4E1Down(event): global W4E1 if W4E1 > 0: W4E1 -= 1 self.enemy1num.config(text=str(W4E1)) def W4E2Down(event): global W4E2 if W4E2 > 0: W4E2 -= 1 self.enemy2num.config(text=str(W4E2)) def W4E3Down(event): global W4E3 if W4E3 > 0: W4E3 -= 1 self.enemy3num.config(text=str(W4E3)) def W4E4Down(event): global W4E4 if W4E4 > 0: W4E4 -= 1 self.enemy4num.config(text=str(W4E4)) def W4E5Down(event): global W4E5 if W4E5 > 0: W4E5 -= 1 self.enemy5num.config(text=str(W4E5)) def W4E6Down(event): global W4E6 if W4E6 > 0: W4E6 -= 1 self.enemy6num.config(text=str(W4E6)) def W5E1Up(event): global W5E1 W5E1 += 1 self.enemy1num.config(text=str(W5E1)) def W5E2Up(event): global W5E2 W5E2 += 1 self.enemy2num.config(text=str(W5E2)) def W5E3Up(event): global W5E3 W5E3 += 1 self.enemy3num.config(text=str(W5E3)) def W5E4Up(event): global W5E4 W5E4 += 1 self.enemy4num.config(text=str(W5E4)) def W5E5Up(event): global W5E5 W5E5 += 1 self.enemy5num.config(text=str(W5E5)) def W5E6Up(event): global W5E6 W5E6 += 1 self.enemy6num.config(text=str(W5E6)) def W5E1Down(event): global W5E1 if W5E1 > 0: W5E1 -= 1 self.enemy1num.config(text=str(W5E1)) def W5E2Down(event): global W5E2 if W5E2 > 0: W5E2 -= 1 self.enemy2num.config(text=str(W5E2)) def W5E3Down(event): global W5E3 if W5E3 > 0: W5E3 -= 1 self.enemy3num.config(text=str(W5E3)) def W5E4Down(event): global W5E4 if W5E4 > 0: W5E4 -= 1 self.enemy4num.config(text=str(W5E4)) def W5E5Down(event): global W5E5 if W5E5 > 0: W5E5 -= 1 self.enemy5num.config(text=str(W5E5)) def W5E6Down(event): global W5E6 if W5E6 > 0: W5E6 -= 1 self.enemy6num.config(text=str(W5E6)) def W6E1Up(event): global W6E1 W6E1 += 1 self.enemy1num.config(text=str(W6E1)) def W6E2Up(event): global W6E2 W6E2 += 1 self.enemy2num.config(text=str(W6E2)) def W6E3Up(event): global W6E3 W6E3 += 1 self.enemy3num.config(text=str(W6E3)) def W6E4Up(event): global W6E4 W6E4 += 1 self.enemy4num.config(text=str(W6E4)) def W6E5Up(event): global W6E5 W6E5 += 1 self.enemy5num.config(text=str(W6E5)) def W6E6Up(event): global W6E6 W6E6 += 1 self.enemy6num.config(text=str(W6E6)) def W6E1Down(event): global W6E1 if W6E1 > 0: W6E1 -= 1 self.enemy1num.config(text=str(W6E1)) def W6E2Down(event): global W6E2 if W6E2 > 0: W6E2 -= 1 self.enemy2num.config(text=str(W6E2)) def W6E3Down(event): global W6E3 if W6E3 > 0: W6E3 -= 1 self.enemy3num.config(text=str(W6E3)) def W6E4Down(event): global W6E4 if W6E4 > 0: W6E4 -= 1 self.enemy4num.config(text=str(W6E4)) def W6E5Down(event): global W6E5 if W6E5 > 0: W6E5 -= 1 self.enemy5num.config(text=str(W6E5)) def W6E6Down(event): global W6E6 if W6E6 > 0: W6E6 -= 1 self.enemy6num.config(text=str(W6E6)) def W7E1Up(event): global W7E1 W7E1 += 1 self.enemy1num.config(text=str(W7E1)) def W7E2Up(event): global W7E2 W7E2 += 1 self.enemy2num.config(text=str(W7E2)) def W7E3Up(event): global W7E3 W7E3 += 1 self.enemy3num.config(text=str(W7E3)) def W7E4Up(event): global W7E4 W7E4 += 1 self.enemy4num.config(text=str(W7E4)) def W7E5Up(event): global W7E5 W7E5 += 1 self.enemy5num.config(text=str(W7E5)) def W7E6Up(event): global W7E6 W7E6 += 1 self.enemy6num.config(text=str(W7E6)) def W7E1Down(event): global W7E1 if W7E1 > 0: W7E1 -= 1 self.enemy1num.config(text=str(W7E1)) def W7E2Down(event): global W7E2 if W7E2 > 0: W7E2 -= 1 self.enemy2num.config(text=str(W7E2)) def W7E3Down(event): global W7E3 if W7E3 > 0: W7E3 -= 1 self.enemy3num.config(text=str(W7E3)) def W7E4Down(event): global W7E4 if W7E4 > 0: W7E4 -= 1 self.enemy4num.config(text=str(W7E4)) def W7E5Down(event): global W7E5 if W7E5 > 0: W7E5 -= 1 self.enemy5num.config(text=str(W7E5)) def W7E6Down(event): global W7E6 if W7E6 > 0: W7E6 -= 1 self.enemy6num.config(text=str(W7E6)) def W8E1Up(event): global W8E1 W8E1 += 1 self.enemy1num.config(text=str(W8E1)) def W8E2Up(event): global W8E2 W8E2 += 1 self.enemy2num.config(text=str(W8E2)) def W8E3Up(event): global W8E3 W8E3 += 1 self.enemy3num.config(text=str(W8E3)) def W8E4Up(event): global W8E4 W8E4 += 1 self.enemy4num.config(text=str(W8E4)) def W8E5Up(event): global W8E5 W8E5 += 1 self.enemy5num.config(text=str(W8E5)) def W8E6Up(event): global W8E6 W8E6 += 1 self.enemy6num.config(text=str(W8E6)) def W8E1Down(event): global W8E1 if W8E1 > 0: W8E1 -= 1 self.enemy1num.config(text=str(W8E1)) def W8E2Down(event): global W8E2 if W8E2 > 0: W8E2 -= 1 self.enemy2num.config(text=str(W8E2)) def W8E3Down(event): global W8E3 if W8E3 > 0: W8E3 -= 1 self.enemy3num.config(text=str(W8E3)) def W8E4Down(event): global W8E4 if W8E4 > 0: W8E4 -= 1 self.enemy4num.config(text=str(W8E4)) def W8E5Down(event): global W8E5 if W8E5 > 0: W8E5 -= 1 self.enemy5num.config(text=str(W8E5)) def W8E6Down(event): global W8E6 if W8E6 > 0: W8E6 -= 1 self.enemy6num.config(text=str(W8E6)) def W9E1Up(event): global W9E1 W9E1 += 1 self.enemy1num.config(text=str(W9E1)) def W9E2Up(event): global W9E2 W9E2 += 1 self.enemy2num.config(text=str(W9E2)) def W9E3Up(event): global W9E3 W9E3 += 1 self.enemy3num.config(text=str(W9E3)) def W9E4Up(event): global W9E4 W9E4 += 1 self.enemy4num.config(text=str(W9E4)) def W9E5Up(event): global W9E5 W9E5 += 1 self.enemy5num.config(text=str(W9E5)) def W9E6Up(event): global W9E6 W9E6 += 1 self.enemy6num.config(text=str(W9E6)) def W9E1Down(event): global W9E1 if W9E1 > 0: W9E1 -= 1 self.enemy1num.config(text=str(W9E1)) def W9E2Down(event): global W9E2 if W9E2 > 0: W9E2 -= 1 self.enemy2num.config(text=str(W9E2)) def W9E3Down(event): global W9E3 if W9E3 > 0: W9E3 -= 1 self.enemy3num.config(text=str(W9E3)) def W9E4Down(event): global W9E4 if W9E4 > 0: W9E4 -= 1 self.enemy4num.config(text=str(W9E4)) def W9E5Down(event): global W9E5 if W9E5 > 0: W9E5 -= 1 self.enemy5num.config(text=str(W9E5)) def W9E6Down(event): global W9E6 if W9E6 > 0: W9E6 -= 1 self.enemy6num.config(text=str(W9E6)) def W10E1Up(event): global W10E1 W10E1 += 1 self.enemy1num.config(text=str(W10E1)) def W10E2Up(event): global W10E2 W10E2 += 1 self.enemy2num.config(text=str(W10E2)) def W10E3Up(event): global W10E3 W10E3 += 1 self.enemy3num.config(text=str(W10E3)) def W10E4Up(event): global W10E4 W10E4 += 1 self.enemy4num.config(text=str(W10E4)) def W10E5Up(event): global W10E5 W10E5 += 1 self.enemy5num.config(text=str(W10E5)) def W10E6Up(event): global W10E6 W10E6 += 1 self.enemy6num.config(text=str(W10E6)) def W10E1Down(event): global W10E1 if W10E1 > 0: W10E1 -= 1 self.enemy1num.config(text=str(W10E1)) def W10E2Down(event): global W10E2 if W10E2 > 0: W10E2 -= 1 self.enemy2num.config(text=str(W10E2)) def W10E3Down(event): global W10E3 if W10E3 > 0: W10E3 -= 1 self.enemy3num.config(text=str(W10E3)) def W10E4Down(event): global W10E4 if W10E4 > 0: W10E4 -= 1 self.enemy4num.config(text=str(W10E4)) def W10E5Down(event): global W10E5 if W10E5 > 0: W10E5 -= 1 self.enemy5num.config(text=str(W10E5)) def W10E6Down(event): global W10E6 if W10E6 > 0: W10E6 -= 1 self.enemy6num.config(text=str(W10E6)) def Exit(event): self.destroy() #Bind self.btnMainMenu.bind('<Button>',StartMainMenu) self.lbWave1.bind('<Button>',Wave1) self.lbWave2.bind('<Button>',Wave2) self.lbWave3.bind('<Button>',Wave3) self.lbWave4.bind('<Button>',Wave4) self.lbWave5.bind('<Button>',Wave5) self.lbWave6.bind('<Button>',Wave6) self.lbWave7.bind('<Button>',Wave7) self.lbWave8.bind('<Button>',Wave8) self.lbWave9.bind('<Button>',Wave9) self.lbWave10.bind('<Button>',Wave10) self.btnPlayMultiPlayer.bind('<Button>',StartTenWaveChallengeMultiPlayer) self.bind('<Escape>',Exit) #Frame settings self.geometry("830x700") self.title("Space Assault") self.configure(bg="black") Wave1() def TenWaveChallengeMultiPlayer(): 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 generated1 global generated2 global generated3 global generated4 global pause 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 generated1 = 1000 generated2 = 1250 generated3 = 1500 generated4 = 1750 pause = 0 global W1E1 global W1E2 global W1E3 global W1E4 global W1E5 global W1E6 global W2E1 global W2E2 global W2E3 global W2E4 global W2E5 global W2E6 global W3E1 global W3E2 global W3E3 global W3E4 global W3E5 global W3E6 global W4E1 global W4E2 global W4E3 global W4E4 global W4E5 global W4E6 global W5E1 global W5E2 global W5E3 global W5E4 global W5E5 global W5E6 global W6E1 global W6E2 global W6E3 global W6E4 global W6E5 global W6E6 global W7E1 global W7E2 global W7E3 global W7E4 global W7E5 global W7E6 global W8E1 global W8E2 global W8E3 global W8E4 global W8E5 global W8E6 global W9E1 global W9E2 global W9E3 global W9E4 global W9E5 global W9E6 global W10E1 global W10E2 global W10E3 global W10E4 global W10E5 global W10E6 #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)+" 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] == PlayersYpos[Pcycle]: 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] == PlayersXpos[Pcycle]: 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 time = 0 wave += 1 #Wave 1 if wave == 1: E = 0 while E < W1E1: self.after(time,CreateEnemy) E += 1 time += 250 E = 0 while E < W1E2: self.after(time,CreateEnemy2) E += 1 time += 250 E = 0 while E < W1E3: self.after(time,CreateEnemy3) E += 1 time += 250 E = 0 while E < W1E4: self.after(time,CreateEnemy4) E += 1 time += 250 E = 0 while E < W1E5: self.after(time,CreateEnemy5) E += 1 time += 250 E = 0 while E < W1E6: self.after(time,CreateEnemy6) E += 1 time += 250 #Wave 2 if wave == 2: E = 0 while E < W2E1: self.after(time,CreateEnemy) E += 1 time += 250 E = 0 while E < W2E2: self.after(time,CreateEnemy2) E += 1 time += 250 E = 0 while E < W2E3: self.after(time,CreateEnemy3) E += 1 time += 250 E = 0 while E < W2E4: self.after(time,CreateEnemy4) E += 1 time += 250 E = 0 while E < W2E5: self.after(time,CreateEnemy5) E += 1 time += 250 E = 0 while E < W2E6: self.after(time,CreateEnemy6) E += 1 time += 250 #Wave 3 if wave == 3: E = 0 while E < W3E1: self.after(time,CreateEnemy) E += 1 time += 250 E = 0 while E < W3E2: self.after(time,CreateEnemy2) E += 1 time += 250 E = 0 while E < W3E3: self.after(time,CreateEnemy3) E += 1 time += 250 E = 0 while E < W3E4: self.after(time,CreateEnemy4) E += 1 time += 250 E = 0 while E < W3E5: self.after(time,CreateEnemy5) E += 1 time += 250 E = 0 while E < W3E6: self.after(time,CreateEnemy6) E += 1 time += 250 #Wave 4 if wave == 4: E = 0 while E < W4E1: self.after(time,CreateEnemy) E += 1 time += 250 E = 0 while E < W4E2: self.after(time,CreateEnemy2) E += 1 time += 250 E = 0 while E < W4E3: self.after(time,CreateEnemy3) E += 1 time += 250 E = 0 while E < W4E4: self.after(time,CreateEnemy4) E += 1 time += 250 E = 0 while E < W4E5: self.after(time,CreateEnemy5) E += 1 time += 250 E = 0 while E < W4E6: self.after(time,CreateEnemy6) E += 1 time += 250 #Wave 5 if wave == 5: E = 0 while E < W5E1: self.after(time,CreateEnemy) E += 1 time += 250 E = 0 while E < W5E2: self.after(time,CreateEnemy2) E += 1 time += 250 E = 0 while E < W5E3: self.after(time,CreateEnemy3) E += 1 time += 250 E = 0 while E < W5E4: self.after(time,CreateEnemy4) E += 1 time += 250 E = 0 while E < W5E5: self.after(time,CreateEnemy5) E += 1 time += 250 E = 0 while E < W5E6: self.after(time,CreateEnemy6) E += 1 time += 250 #Wave 6 if wave == 6: E = 0 while E < W6E1: self.after(time,CreateEnemy) E += 1 time += 250 E = 0 while E < W6E2: self.after(time,CreateEnemy2) E += 1 time += 250 E = 0 while E < W6E3: self.after(time,CreateEnemy3) E += 1 time += 250 E = 0 while E < W6E4: self.after(time,CreateEnemy4) E += 1 time += 250 E = 0 while E < W6E5: self.after(time,CreateEnemy5) E += 1 time += 250 E = 0 while E < W6E6: self.after(time,CreateEnemy6) E += 1 time += 250 #Wave 7 if wave == 7: E = 0 while E < W7E1: self.after(time,CreateEnemy) E += 1 time += 250 E = 0 while E < W7E2: self.after(time,CreateEnemy2) E += 1 time += 250 E = 0 while E < W7E3: self.after(time,CreateEnemy3) E += 1 time += 250 E = 0 while E < W7E4: self.after(time,CreateEnemy4) E += 1 time += 250 E = 0 while E < W7E5: self.after(time,CreateEnemy5) E += 1 time += 250 E = 0 while E < W7E6: self.after(time,CreateEnemy6) E += 1 time += 250 #Wave 8 if wave == 8: E = 0 while E < W8E1: self.after(time,CreateEnemy) E += 1 time += 250 E = 0 while E < W8E2: self.after(time,CreateEnemy2) E += 1 time += 250 E = 0 while E < W8E3: self.after(time,CreateEnemy3) E += 1 time += 250 E = 0 while E < W8E4: self.after(time,CreateEnemy4) E += 1 time += 250 E = 0 while E < W8E5: self.after(time,CreateEnemy5) E += 1 time += 250 E = 0 while E < W8E6: self.after(time,CreateEnemy6) E += 1 time += 250 #Wave 9 if wave == 9: E = 0 while E < W9E1: self.after(time,CreateEnemy) E += 1 time += 250 E = 0 while E < W9E2: self.after(time,CreateEnemy2) E += 1 time += 250 E = 0 while E < W9E3: self.after(time,CreateEnemy3) E += 1 time += 250 E = 0 while E < W9E4: self.after(time,CreateEnemy4) E += 1 time += 250 E = 0 while E < W9E5: self.after(time,CreateEnemy5) E += 1 time += 250 E = 0 while E < W9E6: self.after(time,CreateEnemy6) E += 1 time += 250 #Wave 10 if wave == 10: E = 0 while E < W10E1: self.after(time,CreateEnemy) E += 1 time += 250 E = 0 while E < W10E2: self.after(time,CreateEnemy2) E += 1 time += 250 E = 0 while E < W10E3: self.after(time,CreateEnemy3) E += 1 time += 250 E = 0 while E < W10E4: self.after(time,CreateEnemy4) E += 1 time += 250 E = 0 while E < W10E5: self.after(time,CreateEnemy5) E += 1 time += 250 E = 0 while E < W10E6: self.after(time,CreateEnemy6) E += 1 time += 250 #Win if wave == 11: Winner() def NextWave(): global wave global gameover if gameover == 0: self.after(10,NextWave) if not Enemies and not Enemies2 and not Enemies3 and not Enemies4 and not Enemies5 and not Enemies6: Summon() if wave != 11: self.lbScore.config(text="Wave: "+str(wave)+" Press 'p' to pause") def Winner(): global gameover if gameover == 0: gameover = 1 self.unbind('<Left>') self.unbind('<Right>') self.unbind('<Up>') self.unbind('<Down>') self.unbind('<space>') 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.lbWinner = Label(text="You Win!!!",bg="black",fg="white") self.lbWinner.pack(fill=BOTH,expand=1) self.btnMainMenu = Button(text="Main Menu") self.btnMainMenu.pack(side=LEFT) self.btnMainMenu.bind('<Button>',StartMainMenu) def GameOver(): global gameover global wave if gameover == 0: gameover = 1 self.unbind('<Left>') self.unbind('<Right>') self.unbind('<Up>') self.unbind('<Down>') self.unbind('<space>') 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('<Button>',Restart) self.btnMainMenu = Button(text="Main Menu") self.btnMainMenu.pack(side=LEFT) self.btnMainMenu.bind('<Button>',StartMainMenu) def Restart(event): self.destroy() TenWaveChallengeMultiPlayer() def Pause(event): global pause global gameover if pause == 0: gameover = 1 pause = 1 self.unbind('<Left>') self.unbind('<Right>') self.unbind('<Up>') self.unbind('<Down>') self.unbind('<space>') 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.lbPause = Label(text="Paused"+"\n"+"Press 'p' to Unpause",bg="black",fg="white") self.lbPause.pack(fill=BOTH,expand=1) self.btnMainMenu = Button(text="Main Menu") self.btnMainMenu.pack(side=LEFT) self.btnMainMenu.bind('<Button>',StartMainMenu) elif pause == 1: gameover = 0 pause = 0 self.bind('<Left>',LeftKey) self.bind('<Right>',RightKey) self.bind('<Up>',UpKey) self.bind('<Down>',DownKey) self.bind('<space>',Shoot) EnemyMove() Enemy2Move() Enemy3Move() Enemy4Move() Enemy5Move() Generate() ShotMove() enShotMove() self.lbScore = Label(text="Wave: "+str(wave)+" Press 'p' to pause",bg="black",fg="white") self.lbScore.place(x=165,y=680,width=500,height=20) NextWave() self.lbPause.destroy() self.btnMainMenu.unbind('<Button>') self.btnMainMenu.destroy() def Exit(event): self.destroy() def StartMainMenu(event): self.destroy() MainMenu() #Bindings self.bind('<Left>',LeftKey) self.bind('<Right>',RightKey) self.bind('<Up>',UpKey) self.bind('<Down>',DownKey) self.bind('<a>',AKey) self.bind('<d>',DKey) self.bind('<w>',WKey) self.bind('<s>',SKey) self.bind('<Escape>',Exit) self.bind('<space>',Shoot) self.bind('<Tab>',Shoot2) self.bind('<p>',Pause) EnemyMove() Enemy2Move() Enemy3Move() Enemy4Move() Enemy5Move() Generate() ShotMove() enShotMove() #Frame settings self.geometry("830x700") self.title("Space Assault") self.configure(bg="black") MainMenu()