diff --git a/.idea/CNSA-266-FP.iml b/.idea/CNSA-266-FP.iml index bf0924d..673a12b 100644 --- a/.idea/CNSA-266-FP.iml +++ b/.idea/CNSA-266-FP.iml @@ -5,7 +5,7 @@ - + \ No newline at end of file diff --git a/Alien.py b/Alien.py index 2255391..8fac5c6 100644 --- a/Alien.py +++ b/Alien.py @@ -68,7 +68,7 @@ class Alien(arcade.Sprite): if movedown: self.center_y -= 8 * self.scScale if x: - self.center_x += 2*self.scScale*sign + self.center_x += 2 * self.scScale * sign self.alien_sprite.center_x = self.center_x self.alien_sprite.center_y = self.center_y diff --git a/Main.py b/Main.py index 3595d06..c9fdd2a 100644 --- a/Main.py +++ b/Main.py @@ -7,7 +7,7 @@ from Score import Score from Bullet import Bullet from Alien import Alien -DEBUG = True +DEBUG = False SLOW = False SLOW_SPEED = 0.01 @@ -21,7 +21,7 @@ SCREEN_TITLE = "Space Invaders" PLAYER_SPEED = 1 PLAYER_BOUNDS = 32 -ALIEN_BOUNDS = 16 +ALIEN_BOUNDS = 32 @@ -47,14 +47,16 @@ class MyGame(arcade.Window): [Alien, Alien, Alien, Alien, Alien, Alien, Alien, Alien, Alien, Alien, Alien], [Alien, Alien, Alien, Alien, Alien, Alien, Alien, Alien, Alien, Alien, Alien]] + self.lives = 3 self.alienCounterY = 4 self.alienCounterX = 0 self.alienChangeDir = 0 self.alienCurrentDir = -1 self.movedown = False - self.current_player_texture_index = 0 + self.current_texture_index = 0 self.player_sprite = None + self.level = 0 self.movePlayer = 0 if DEBUG: @@ -65,6 +67,12 @@ class MyGame(arcade.Window): self.i = 0 def setup(self): + + self.aliens = [[Alien, Alien, Alien, Alien, Alien, Alien, Alien, Alien, Alien, Alien, Alien], + [Alien, Alien, Alien, Alien, Alien, Alien, Alien, Alien, Alien, Alien, Alien], + [Alien, Alien, Alien, Alien, Alien, Alien, Alien, Alien, Alien, Alien, Alien], + [Alien, Alien, Alien, Alien, Alien, Alien, Alien, Alien, Alien, Alien, Alien], + [Alien, Alien, Alien, Alien, Alien, Alien, Alien, Alien, Alien, Alien, Alien]] """start / restart game""" self.scene = arcade.Scene() @@ -75,8 +83,6 @@ class MyGame(arcade.Window): self.player_list = arcade.SpriteList() self.wall_list = arcade.SpriteList(use_spatial_hash=True) self.rend = 0 - self.lives = 3 - self.level = 0 self.score = None # self.overlay_color = (0,255,0,128) self.player_sprite_death = None @@ -90,6 +96,7 @@ class MyGame(arcade.Window): self.player_sprite.center_y = (32 + 4) * SCREEN_SCALE self.player_list.append(self.player_sprite) + self.level += 1 # Create Left Boundry if DEBUG == True: @@ -162,19 +169,19 @@ class MyGame(arcade.Window): elif key == arcade.key.RIGHT and self.movePlayer == PLAYER_SPEED * SCREEN_SCALE: self.movePlayer = 0 - def load_death_animation(self): - self.death_textures = [] - for i in range(0,5): - - texture = arcade.load_texture("assets/Sprites/Player/PlayerDeath1.png") - self.death_textures.append(texture) - texture = arcade.load_texture("assets/Sprites/Player/PlayerDeath2.png") - self.death_textures.append(texture) - - def play_death_animation(self): - if self.current_player_texture_index < len(self.death_textures): - self.player_sprite.set_texture(self.current_player_texture_index) - self.current_player_texture_index += 1 + # def load_death_animation(self): + # self.death_textures = [] + # for i in range(0,5): + # + # texture = arcade.load_texture("assets/Sprites/Player/PlayerDeath1.png") + # self.death_textures.append(texture) + # texture = arcade.load_texture("assets/Sprites/Player/PlayerDeath2.png") + # self.death_textures.append(texture) + # + # def play_death_animation(self): + # if self.current_texture_index < len(self.death_textures): + # self.player_sprite.set_texture(self.current_texture_index) + # self.current_texture_index += 1 def on_draw(self): self.clear() @@ -184,15 +191,7 @@ class MyGame(arcade.Window): # except Exception as e: # pass - # Render player bullet if it exists - try: - self.bullet.bullet_sprite.draw(pixelated=True) - except Exception as e: - if DEBUG: - self.rend += 1 - if self.rend >= 20: - print(e) - self.rend = 0 + # Render alien bullets if they exist and render aliens try: @@ -206,7 +205,15 @@ class MyGame(arcade.Window): except Exception as e: pass - + # Render player bullet if it exists + try: + self.bullet.bullet_sprite.draw(pixelated=True) + except Exception as e: + if DEBUG: + self.rend += 1 + if self.rend >= 20: + print(e) + self.rend = 0 self.player_list.draw(pixelated=True) self.wall_list.draw(pixelated=True) @@ -217,30 +224,41 @@ class MyGame(arcade.Window): self.activeBullet = False def respawn(self): - # for alienRow in self.aliens: - # for alien in alienRow: - # alien.bullet = None + for alienRow in self.aliens: + for alien in alienRow: + alien.bullet = None self.player_sprite.center_x = 32*SCREEN_SCALE time.sleep(2) def death(self): if self.lives > 0: self.somethingalsi = False - self.load_death_animation() - self.play_death_animation() + # self.load_death_animation() + # self.play_death_animation() self.respawn() else: if DEBUG: - print(str(self.Score)) + print("\n" * 100) + print("You scored: " + str(self.Score)) + print("You died on level: " + str(self.level)) sys.exit() def update(self, delta_time): - if self.somethingalsi: - # Picking numbers to possibly spawn an alien bullet - testx = random.randint(0, 5 + 100 - self.level) - testy = random.randint(0, 11 + 100 - self.level) + if True: + # Picking numbers to possibly spawn an alien bullet + testx = random.randint(0, 5 + 100 - self.level * 5) + testy = random.randint(0, 11 + 100 - self.level * 5) + + testx = 500 + testy = 500 + + if self.alienCounterY < 0: + # Reset the X and Y counter variables + self.alienCounterY = len(self.aliens) - 1 + + self.alienCounterX = 0 # Checking if player bullet is off-screen, if so, set bullet to None, else, update bullet try: @@ -258,6 +276,9 @@ class MyGame(arcade.Window): for alienx in self.aliens: for alien in alienx: try: + if alien.getY() - 8 * SCREEN_SCALE < self.player_sprite.center_y: + self.lives = 0 + self.death() alien.bullet.update() except Exception as e: pass @@ -271,21 +292,21 @@ class MyGame(arcade.Window): for index, alien in enumerate(alienx): try: alien.checkBullet() - if indexx == testx and index == testy: + if indexx == testx and index == testy and alien.bullet == None: alien.spawnBullet() except Exception as e: pass except Exception as e: pass - if self.alienCounterY < 0: - # Reset the X and Y counter variables - self.alienCounterY = len(self.aliens) - 1 - self.alienCounterX = 0 # Alien Movement if self.Won == False: #Left - Right Movement - + try: + if self.alienCounterX <= len(self.aliens[self.alienCounterY]) - 1: + pass + except Exception as e: + self.setup() if self.alienCounterX <= len(self.aliens[self.alienCounterY]) - 1: x = self.aliens[self.alienCounterY][self.alienCounterX].getX() @@ -344,7 +365,7 @@ class MyGame(arcade.Window): self.alienChangeDir = 0 # if DEBUG: # print(e) - if len(self.aliens) == 0: + if len(self.aliens) < 1 : self.Won = True # except Exception as e: # if DEBUG: @@ -353,8 +374,9 @@ class MyGame(arcade.Window): print("You Won!") sys.exit() # Check to see if any aliens are colliding with a player's bullet - for alienRow in self.aliens: - if alienRow == []: + for index, alienRow in enumerate(self.aliens): + length = len(self.aliens) + if alienRow == [] and index == length - 1 and length > 0: self.aliens.remove(alienRow) for alien in alienRow: try: diff --git a/Score.py b/Score.py index 0f8e4ae..d6dffc0 100644 --- a/Score.py +++ b/Score.py @@ -2,7 +2,7 @@ import sys import arcade -LEFT_OFFSET = 8 +LEFT_OFFSET = 16 class Score(arcade.Sprite): def __init__(self, SCREEN_SCALE, DEBUG): @@ -28,11 +28,29 @@ class Score(arcade.Sprite): def update(self, score): self.sprites.clear() - self.sprites.append(arcade.Sprite("assets/Sprites/Letters/s.png", self.scScale)) # add x and y coords - self.sprites.append(arcade.Sprite("assets/Sprites/Letters/c.png", self.scScale)) # add x and y coords - self.sprites.append(arcade.Sprite("assets/Sprites/Letters/o.png", self.scScale)) # add x and y coords - self.sprites.append(arcade.Sprite("assets/Sprites/Letters/r.png", self.scScale)) # add x and y coords - self.sprites.append(arcade.Sprite("assets/Sprites/Letters/e.png", self.scScale)) # add x and y coords + s = arcade.Sprite("assets/Sprites/Letters/s.png", self.scScale) + c = arcade.Sprite("assets/Sprites/Letters/c.png", self.scScale) + o = arcade.Sprite("assets/Sprites/Letters/o.png", self.scScale) + r = arcade.Sprite("assets/Sprites/Letters/r.png", self.scScale) + e = arcade.Sprite("assets/Sprites/Letters/e.png", self.scScale) + + s.center_y = self.scScale * 243 + c.center_y = self.scScale * 243 + o.center_y = self.scScale * 243 + r.center_y = self.scScale * 243 + e.center_y = self.scScale * 243 + + s.center_x = self.scScale * 8 + LEFT_OFFSET * self.scScale + c.center_x = self.scScale * 8 * 2 + LEFT_OFFSET * self.scScale + o.center_x = self.scScale * 8 * 3 + LEFT_OFFSET * self.scScale + r.center_x = self.scScale * 8 * 4 + LEFT_OFFSET * self.scScale + e.center_x = self.scScale * 8 * 5 + LEFT_OFFSET * self.scScale + + self.sprites.append(s) + self.sprites.append(c) + self.sprites.append(o) + self.sprites.append(r) + self.sprites.append(e) self.value = score @@ -47,71 +65,72 @@ class Score(arcade.Sprite): for index, val in enumerate(valArr): if val == "0": addSprite = arcade.Sprite("assets/Sprites/Numbers/0.png", self.scScale) - addSprite.center_y = self.scScale * 250 + addSprite.center_y = self.scScale * 230 addSprite.center_x = self.scScale * (index*8) + (self.scScale * LEFT_OFFSET) self.sprites.append(addSprite) if self.deBuggin: print(addSprite.center_x) elif val == "1": addSprite = arcade.Sprite("assets/Sprites/Numbers/1.png", self.scScale) - addSprite.center_y = self.scScale * 250 + addSprite.center_y = self.scScale * 230 addSprite.center_x = self.scScale * (index*8) + (self.scScale * LEFT_OFFSET) self.sprites.append(addSprite) if self.deBuggin: print(addSprite.center_x) elif val == "2": addSprite = arcade.Sprite("assets/Sprites/Numbers/2.png", self.scScale) - addSprite.center_y = self.scScale * 250 + addSprite.center_y = self.scScale * 230 addSprite.center_x = self.scScale * (index*8) + (self.scScale * LEFT_OFFSET) self.sprites.append(addSprite) if self.deBuggin: print(addSprite.center_x) elif val == "3": addSprite = arcade.Sprite("assets/Sprites/Numbers/3.png", self.scScale) - addSprite.center_y = self.scScale * 250 + addSprite.center_y = self.scScale * 230 addSprite.center_x = self.scScale * (index*8) + (self.scScale * LEFT_OFFSET) self.sprites.append(addSprite) if self.deBuggin: print(addSprite.center_x) elif val == "4": addSprite = arcade.Sprite("assets/Sprites/Numbers/4.png", self.scScale) - addSprite.center_y = self.scScale * 250 + addSprite.center_y = self.scScale * 230 addSprite.center_x = self.scScale * (index*8) + (self.scScale * LEFT_OFFSET) self.sprites.append(addSprite) if self.deBuggin: print(addSprite.center_x) elif val == "5": addSprite = arcade.Sprite("assets/Sprites/Numbers/5.png", self.scScale) - addSprite.center_y = self.scScale * 250 + addSprite.center_y = self.scScale * 230 addSprite.center_x = self.scScale * (index*8) + (self.scScale * LEFT_OFFSET) self.sprites.append(addSprite) if self.deBuggin: print(addSprite.center_x) elif val == "6": addSprite = arcade.Sprite("assets/Sprites/Numbers/6.png", self.scScale) - addSprite.center_y = self.scScale * 250 + addSprite.center_y = self.scScale * 230 addSprite.center_x = self.scScale * (index*8) + (self.scScale * LEFT_OFFSET) self.sprites.append(addSprite) if self.deBuggin: print(addSprite.center_x) elif val == "7": addSprite = arcade.Sprite("assets/Sprites/Numbers/7.png", self.scScale) - addSprite.center_y = self.scScale * 250 + addSprite.center_y = self.scScale * 230 addSprite.center_x = self.scScale * (index*8) + (self.scScale * LEFT_OFFSET) self.sprites.append(addSprite) if self.deBuggin: print(addSprite.center_x) elif val == "8": addSprite = arcade.Sprite("assets/Sprites/Numbers/8.png", self.scScale) - addSprite.center_y = self.scScale * 250 + addSprite.center_y = self.scScale * 230 addSprite.center_x = self.scScale * (index*8) + (self.scScale * LEFT_OFFSET) self.sprites.append(addSprite) if self.deBuggin: print(addSprite.center_x) elif val == "9": addSprite = arcade.Sprite("assets/Sprites/Numbers/9.png", self.scScale) - addSprite.center_y = self.scScale * 250 + addSprite.center_y = self.scScale * 230 addSprite.center_x = self.scScale * (index*8) + (self.scScale * LEFT_OFFSET) self.sprites.append(addSprite) if self.deBuggin: print(addSprite.center_x) +