예제 #1
0
    def __init__(self, screen):
        # Game variables
        self.level = 1
        self.time = 200 * constants.TICK_RATE
        self.score = 0
        self.level_score = 0

        # Canvas-related variables
        self.screen = screen
        self.screen_buffor = pygame.Surface(
            (constants.FIELD_WIDTH, constants.FIELD_HEIGHT)).convert()

        # In-game objects variables
        self.player = pygame.sprite.GroupSingle(characters.Player(0, 0))
        self.player_copy = None
        # Hardblocks (every "#" in gamemap), which remain the same through all levels
        self.hard_blocks = pygame.sprite.Group([
            characters.HardBlock((x, y))
            for (x, y, cell) in assets.Assets.get_tiles() if cell == "#"
        ])
        self.soft_blocks = pygame.sprite.Group()
        self.bombs = pygame.sprite.Group()
        self.blasts = pygame.sprite.Group()
        self.bonuses = pygame.sprite.Group()
        self.monsters = pygame.sprite.Group()
        self.events = pygame.event.get()
예제 #2
0
 def __init__(self, row, col):
     self.pTurn = True  #True if it is the Player's turn, false otherwise
     self.gameRunning = True  #True if the Game is running, false it has reached a state where it should stop.
     self.player = characters.Player()  #The user's avatar in the game.
     self.player.add_observer(self)  #The Game observes the Player.
     self.neighborhood = world.Neighborhood(
         row, col)  #The world where the game takes place.
     self.neighborhood.add_observer(
         self)  #The Game observes the Neighborhood.
     for house in self.neighborhood.getHouseList():
         house.add_observer(self)
예제 #3
0
    def load(self):
        super().load()

        blockWidth = blocks.Block.width
        blockHeight = blocks.Block.height
        self.gameArea = Rect(Game.curGame.width - blockWidth,
                             Game.curGame.height - Hud.height, 0, 0)

        playerStartX = blockWidth
        playerStartY = blockHeight

        # If there are playerSpawn blocks
        if (self.hasAny(blocks.PlayerSpawn)):
            # Get the location of the block
            playerSpawn = self.getGameObjectsByType(blocks.PlayerSpawn)
            # Create a player if there is not one already
            if not (self.player):
                self.player = characters.Player(playerStartX, playerStartY)
            # Spawn the player on the block
            self.player.x = playerSpawn[0].x
            self.player.y = playerSpawn[0].y
            self.removeGameObjectsByType(blocks.PlayerSpawn)
            self.addGameObject(self.player)
        # If there are not Player Objects create one
        elif (not self.hasAny(characters.Player)):
            if not (self.player):
                self.player = characters.Player(0, 0)
            self.player.x = playerStartX
            self.player.y = playerStartY
            self.addGameObject(self.player)
        # If there are Player Objects
        elif (self.hasAny(characters.Player)):
            self.player = self.getGameObjectsByType(characters.Player)[0]

        self.addGameObject(Hud(blockWidth, self.gameArea.height + blockHeight))

        self.originalGos = self.gameObjects
예제 #4
0
def newgame():
    """Get player name and create new world"""
    global worldmap
    global player
    print "\n"
    while True:
        playername = raw_input("Enter your name: ")
        if len(playername) < 2:
            print "Name must be at least two characters long."
        else:
            player = characters.Player(playername)
            break
    worldmap = world.Map()
    print "Prepare to begin your journey..."
    raw_input("Press \"Enter\" to continue...")
예제 #5
0
    def __init__(self,
                 game_map,
                 boss_room_key,
                 enemies=None,
                 castle_items=None):

        # Set attributes
        self._map = game_map
        self._boss_room_key = boss_room_key  # Store key of boss room
        self._parent = None  # Stores tkinter parent object
        self._gui = None  # Stores GUI object
        self._player_name = tk.StringVar()
        self._player_age = tk.IntVar()
        self._player = characters.Player("Player",
                                         game_map)  # Initialise the player
        self._control_state = True  # Stores the state of the controls

        # Set boss room key callback
        self._boss_room_key.set_callback(self.unlock_boss_room)

        # Default values for player name/age
        self._player_name.set("Player")
        self._player_age.set(18)

        # Add boss room key to items
        castle_items.append(self._boss_room_key)

        # For every item
        for item in castle_items:
            # Randomly select a room and add the item
            row = random.choice(self._map.grid())
            room = random.choice(row)
            room.inventory().add_item(item)

        # For every enemy
        for enemy in enemies:
            # Randomly select a room and add the enemy
            row = random.choice(self._map.grid())
            room = random.choice(row)
            room.add_enemy(enemy)
예제 #6
0
파일: game.py 프로젝트: najbardziej/pacman
 def initialize_level(self, next_level):
     """Initializing level after player death or to advance to new level"""
     player_x, player_y = self.MAP.get_coordinates('s')
     blinky_x, blinky_y = self.MAP.get_coordinates('b')
     pinky_x, pinky_y = self.MAP.get_coordinates('p')
     inky_x, inky_y = self.MAP.get_coordinates('i')
     clyde_x, clyde_y = self.MAP.get_coordinates('c')
     self.player = characters.Player(player_x, player_y)
     self.ghosts = {
         "blinky": characters.Blinky(blinky_x, blinky_y),
         "pinky": characters.Pinky(pinky_x, pinky_y),
         "inky": characters.Inky(inky_x, inky_y),
         "clyde": characters.Clyde(clyde_x, clyde_y),
     }
     self.combo = 1
     self.fruit = 0
     self.update_caption()
     self.wait = 1
     if next_level:
         self.pellets = list(self.MAP.get_pellets())
         self.draw_walls()
         self.draw_pellets()
         self.level += 1
         self.tick = 0
     else:
         for ghost in self.ghosts.values():
             ghost.state = self.previous_ghosts_state
         self.lives -= 1
         if self.lives == 0:
             drawhelper.draw_text("GAME OVER!")
             pygame.display.update()
             while True:
                 events = pygame.event.get()
                 for event in events:
                     if event.type == pygame.KEYDOWN:
                         return
예제 #7
0
	white = (255,255,255)
	black = (0,0,0)
	red = (255, 0, 0)

	text = pygame.font.SysFont("Comic Sans MS", 60)
	textsurface = text.render("GAME OVER", False, white)
	gameover = False

	# initialize graph that that the characters and bullets use
	# to keep track of their coordinates
	vset, elist = graph.create_grid()
	graph = graph.Graph(vset, elist)

	# initialize the player class that will keep track of the player's
	# coordinates
	player = characters.Player((7,7))
	playerXCoord = 7
	playerYCoord = 7

	#initialize zombie list
	zombielist = []

	while not gameover:
		# game runs at 30 ticks per second
		clock.tick(30)
		screen.fill(black)

		#draw triangle onto screen
		screen.blit(triangle,(triangle_left,triangle_top))

		# if there are no more zombies that exist in the game, respawn the 4 zombies
예제 #8
0
black = (0, 0, 0)
white = (255, 255, 255)
green = (100, 200, 100)
red = (200, 0, 0)
hoverred = (220, 0, 0)
yellow = (180, 180, 0)
hoveryellow = (200, 200, 0)
display_width, display_height = 2000, 1000

# initializing pygame modules
clock = pygame.time.Clock()
gameDisplay = pygame.display.set_mode((display_width, display_height))

# creating sprite groups
all_sprites = pygame.sprite.Group()
player = characters.Player()
all_sprites.add(player)
tutorialGroup = pygame.sprite.Group()
tutorialPlayer = characters.tutorialGuy()
tutorialGroup.add(tutorialPlayer)
bulletGroup = pygame.sprite.Group()

# importing and rescaling images
background = pygame.image.load('../images/game_background.jpg')
background = pygame.transform.scale(background, (2000, 1000))
# arrow keys found from:
# https://www.google.ca/url?sa=i&source=images&cd=&cad=rja&uact=8&ved=2ahUKEwiW2srr2ozfAhWZ14MKHScGAB8Qj
# Rx6BAgBEAU&url=https%3A%2F%2Ffr.m.wikipedia.org%2Fwiki%2FFichier%3ACursor-key-arrangements-according-to
# -isoiec-9995-5.png&psig=AOvVaw2cPzXvj-MVtkDN-L8rudkL&ust=1544237414005703
left_key = pygame.image.load('../images/left_key.png')
left_key = pygame.transform.scale(left_key, (125, 125))
예제 #9
0
    def __init__(self):

        # -- INITIALIZATION --
        pygame.init()

        # -- COLORS --
        self.black = (0, 0, 0)
        self.green = (0, 255, 0)

        # -- TIME --
        self.g_clock = pygame.time.Clock()
        self.delta_time = 0

        # -- DISPLAY --
        # screen
        self.scr_w = 1024
        self.scr_h = 768
        self.screen = pygame.display.set_mode((self.scr_w, self.scr_h))
        pygame.display.set_caption("Smol Game / Lab 5 / ETGG1802 / Prof: Jason / Team: Lane - Tanim - Evan | FPS: "
                                   + str(int(self.g_clock.get_fps())))
        img1 = pygame.image.load("Sprites\\BATS.png")
        img2 = pygame.image.load("Sprites\\Asteroid Brown.png")
        # background
        self.background = pygame.Surface(self.screen.get_size())
        self.background.fill(self.black)
        self.background.convert()

        # -- IMAGES / SPRITES --

        # -- TEXT FONTS --
        self.font_type = pygame.font.get_default_font()

        # -- CLASS INSTANCES --
        # camera class instance
        self.camera = Camera(self.scr_w, self.scr_h, self)
        # player class instance
        self.player = characters.Player(300, 300, ((self.scr_w / 2) - 32), ((self.scr_h / 2) - 32), 50, 32, img1, self.camera.x, self.camera.y, 1, 0)
        # enemy class instance
        self.enemy = characters.Enemy(800, 800, 0, 0, 10, 160, img2, self.camera.x, self.camera.y, 0, 0)
        # map class instance
        self.map = Map("smol_map1.tmx")


        # -- GAME LOOP --
        self.run = True
        while self.run:

            # - UPDATES
            # Time in seconds since the last update
            self.delta_time = self.g_clock.tick(100) / 1000
            self.enemy.update(self.delta_time)
            self.player.update(self.delta_time)
            self.enemy.hit_detection(self.player.x, self.player.y, self.player.sprite, self.delta_time)

            # - USER INPUT
            # event handling
            self.evt = pygame.event.poll()
            if self.evt.type == pygame.QUIT:
                self.run = False
            elif self.evt.type == pygame.KEYDOWN:
                if self.evt.key == pygame.K_ESCAPE:
                    self.run = False

            # - DRAW
            self.player.draw(self.background, self.map.getMapSize()[0], self.map.getMapSize()[1], self.camera.x, self.camera.y)
            self.enemy.draw(self.background, self.map.getMapSize()[0], self.map.getMapSize()[1], self.camera.x, self.camera.y)
            # screen
            self.screen.blit(self.background, (0, 0))
            self.map.render(self.background, (self.camera.x,self.camera.y), self.scr_w, self.scr_h)
            # game objects

            # text

            # camera

            self.camera.update(self.player, self.player.sprite, self.player.sprite)




            # - UPDATE DISPLAY
            pygame.display.flip()

        # -- EXIT GAME --
        pygame.quit()
예제 #10
0
 def create_player(self):
     self.player = characters.Player(
         backpack=items.Backpack(name='backpack'),
         equipment=items.Equipment())
예제 #11
0
 def __init__(self):
     self.player = characters.Player(0, 10)