コード例 #1
0
    def show(self, surface, updated = None):
        """Rysowanie powierzchni na ekranie. Gdy updated jest None rysuje całą powierzchnię, w przeciwnym przypadku rysuje tylko określone prostokąty."""

        if updated:
            for rect in updated:
                self.screen.blit(surface, rect, rect)
                if self.options['debug']:
                    pygame.draw.rect(self._debug, (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)), rect)

            if self.options['debug']:
                pygame.draw.rect(self._debug, (255, 255, 255), (0, 0, 50, 20))
                updated.append(utils.drawText(self._debug, "FPS: %d" % (self.clock.get_fps()), 12, (0, 0, 0), (10, 10)))
                self.screen.blit(self._debug, (0, 0))

            pygame.display.update(updated)
            return True

        self.screen.blit(surface, (0, 0))
        if self.options['debug']:
            pygame.draw.rect(self._debug, (255, 255, 255), (0, 0, 50, 20))
            utils.drawText(self._debug, "FPS: %d" % (self.clock.get_fps()), 12, (0, 0, 0), (10, 10))
            self.screen.blit(self._debug, (0, 0))

        pygame.display.update()
        return True
コード例 #2
0
ファイル: inventory.py プロジェクト: Neverous/ii-python11
	def mouseEvent(self, _event, _pos = None):
		"""Obsługa zdarzeń myszy."""

		if not _pos:
			return

		if _event.type == MOUSEMOTION: # aktualizuje opisy przedmiotów
			pygame.draw.rect(self.surface, (0, 0, 0), (120, 4, 64, 64))
			self._updated.append((120, 4, 64, 64))
			for cell in self._cells:
				if cell.rect.collidepoint(_pos):
					_item = cell.getItem()
					if _item:
						utils.drawText(self.surface, _item.getDescription(), 8, (255, 255, 255), (152, 36))

					break

		for cell in self._cells:
			if cell.rect.collidepoint(_pos):
				cell.mouseEvent(_event)

		if _event.type == MOUSEBUTTONDOWN and _event.button == 3: # Używanie mikstur prawym przyciskiem myszy
			for cell in self._cells:
				if cell.rect.collidepoint(_pos):
					_item = cell.getItem()
					if isinstance(_item, Potion):
						_item.use(self._hero)
	
					break
コード例 #3
0
ファイル: engine.py プロジェクト: Neverous/ii-tieto12-python
    def show(self, surface, updated = None):
        """Rysowanie powierzchni na ekranie. Gdy updated jest None rysuje całą powierzchnię, w przeciwnym przypadku rysuje tylko określone prostokąty."""

        if updated:
            for rect in updated:
                self.screen.blit(surface, rect, rect)
                if self.options['debug']:
                    pygame.draw.rect(self._debug, (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)), rect)

            if self.options['debug']:
                pygame.draw.rect(self._debug, (255, 255, 255), (0, 0, 50, 20))
                updated.append(utils.drawText(self._debug, "FPS: %d" % (self.clock.get_fps()), 12, (0, 0, 0), (10, 10)))
                self.screen.blit(self._debug, (0, 0))

            pygame.display.update(updated)
            return True

        self.screen.blit(surface, (0, 0))
        if self.options['debug']:
            pygame.draw.rect(self._debug, (255, 255, 255), (0, 0, 50, 20))
            utils.drawText(self._debug, "FPS: %d" % (self.clock.get_fps()), 12, (0, 0, 0), (10, 10))
            self.screen.blit(self._debug, (0, 0))

        pygame.display.update()
        return True
コード例 #4
0
    def draw(self, sm, screen):
        # background
        screen.fill(globals.DARK_GREY)
        utils.drawText(screen, 'Player Select', 50, 50, globals.WHITE, 255)

        self.esc.draw(screen)
        self.enter.draw(screen)

        # draw active players

        if globals.player1 in globals.players:
            screen.blit(utils.playing, (100,100))
        else:
            screen.blit(utils.not_playing, (100,100))
        
        if globals.player2 in globals.players:
            screen.blit(utils.playing, (150,100))
        else:
            screen.blit(utils.not_playing, (150,100))

        if globals.player3 in globals.players:
            screen.blit(utils.playing, (200,100))
        else:
            screen.blit(utils.not_playing, (200,100))

        if globals.player4 in globals.players:
            screen.blit(utils.playing, (250,100))
        else:
            screen.blit(utils.not_playing, (250,100))
コード例 #5
0
ファイル: scene.py プロジェクト: Neverous/ii-tieto12-python
    def _countdown(self, countdown):
        if not self._map and countdown.number == 1:
            self._loadMap(countdown.mapSize.x, countdown.mapSize.y)

        if self._playerID == None:
            self._playerID = countdown.playerId

        self.surface = self._background.copy()
        utils.drawText(self.surface, 'Gracz %d. >%d<' % (countdown.playerId, countdown.number), 30, (255, 255, 255), (self._resx / 2, self._resy / 2))
コード例 #6
0
ファイル: scene.py プロジェクト: Neverous/ii-tieto12-python
    def _countdown(self, countdown):
        if not self._map and countdown.number == 1:
            self._loadMap(countdown.mapSize.x, countdown.mapSize.y)

        if self._playerID == None:
            self._playerID = countdown.playerId

        self.surface = self._background.copy()
        utils.drawText(self.surface, 'Gracz %d. >%d<' % (countdown.playerId, countdown.number), 30, (255, 255, 255), (self._resx / 2, self._resy / 2))
コード例 #7
0
 def draw(self, sm, screen):
     # background y color
     screen.fill(globals.GRIS)
     utils.drawText(screen, "level select", 50, 50,globals.BLANCO, 255)
     self.b1.draw(screen)
     self.b2.draw(screen)
     self.b3.draw(screen)
     self.b4.draw(screen)
     self.b5.draw(screen)
     self.esc.draw(screen)
コード例 #8
0
ファイル: ui.py プロジェクト: bredwizard/TA_09
 def draw(self, screen, alpha=255):
     # si esta encendido el boton
     if self.on:
         # su color es verde
         colour = globals.VERDE
     else:
         # y si no su color es blanco
         colour = globals.BLANCO
     # dibujar boton
     utils.drawText(screen, self.text, self.x, self.y, colour, alpha)
コード例 #9
0
 def draw(self, sm, screen):
     # background y color
     screen.fill(globals.GRIS)
     utils.drawText(screen, "CREDITOS", 50, 50,globals.BLANCO, 255)
     self.cr1.draw(screen)
     self.cr2.draw(screen)
     self.cr3.draw(screen)
     self.cr1_1.draw(screen)
     self.cr2_1.draw(screen)
     self.cr3_1.draw(screen)
コード例 #10
0
 def draw(self, sm, screen):
     # background y color
     screen.fill(globals.GRIS)
     utils.drawText(screen, "MENU PRINICIPAL", 50, 50,globals.BLANCO, 255)
     # dibujar  al entrar enter
     self.enter.draw(screen)
     # dibujar dibujar al salir con escape
     self.esc.draw(screen)
     # dibujar creditos
     self.c.draw(screen)
コード例 #11
0
    def draw(self, sm, screen):
        if len(sm.scenes) > 1:
            sm.scenes[-2].draw(sm, screen)

        # draw a transparent bg
        bgSurf = pygame.Surface((830,830))
        bgSurf.fill((globals.BLACK))
        utils.blit_alpha(screen, bgSurf, (0,0), self.alpha * 0.7)

        utils.drawText(screen, 'You lose!', 150, 150, globals.WHITE, self.alpha)
        self.esc.draw(screen, alpha=self.alpha)
コード例 #12
0
    def draw(self, sm, screen):
        if len(sm.scenes) > 1:
            sm.scenes[-2].draw(sm, screen)

        # DIBUJAR UN Bacground opaco
        bgSurf = pygame.Surface((1000, 560))
        bgSurf.fill((globals.NEGRO))
        utils.blit_alpha(screen, bgSurf, (0,0), self.alpha * 0.7)

        utils.drawText(screen, "PERDISTE", 250, 250, globals.BLANCO, self.alpha)
        self.esc.draw(screen, alpha = self.alpha)
コード例 #13
0
    def draw(self, sm, screen):
        # background
        screen.fill(globals.DARK_GREY)
        utils.drawText(screen, 'Level Select', 50, 50, globals.WHITE, 255)
        self.esc.draw(screen)

        # draw level select menu
        for levelNumber in range(1, globals.maxLevel+1):
            c = globals.WHITE
            if levelNumber == globals.curentLevel:
                c = globals.GREEN
            a = 255
            if levelNumber > globals.lastCompletedLevel:
                a = 100
            utils.drawText(screen, str(levelNumber), levelNumber*100, 100, c, a)
コード例 #14
0
 def drawScore(self, window):
   if hasattr(self,'scoreText'):
     self.scoreText.string = str(self.score)
   else:
     self.scoreText = utils.drawText(window, size=25,
                        font=self.params.font, string=str(self.score))
   window.draw(self.scoreText)
コード例 #15
0
 def endGame(self):
   gameOverText = utils.drawText(self.board.window, string="Game Over", font=self.params.font,
                  size=60, position='center', color=sf.Color.RED)
   
   oldScore = self.scoreKeeper.checkScore(self.params.playerName, self.params.getDifficulty())
   scoreTextYPosition = gameOverText.position[1]+gameOverText.local_bounds.height+10
   scoreText = None
   if self.score > oldScore:
     # display a "New Highscore" screen
     self.scoreKeeper.setScore(self.params.playerName, self.score, self.params.getDifficulty())
     
     utils.drawText(self.board.window, string="New High Score! {}".format(self.score),
                    font=self.params.font, size=30, position='center', yposition=scoreTextYPosition, color=sf.Color.GREEN)
   else:
     # Display the old highscore
     utils.drawText(self.board.window, string="High Score: {}".format(oldScore),
                    font=self.params.font, size=30, position='center', yposition=scoreTextYPosition, color=sf.Color.WHITE)
   
   utils.drawText(self.board.window, string="Press ENTER to Relplay",
                  font=self.params.font, size=15, position='center', yposition=self.board.window.height - 20, color=sf.Color.WHITE)
   
   self.board.window.display()
   while(True):
     for event in self.board.window.events:
       if (type(event) is sf.CloseEvent or
          (type(event) is sf.KeyEvent and event.code is sf.Keyboard.ESCAPE)):
         exit()  
       if (type(event) is sf.KeyEvent and event.code is sf.Keyboard.RETURN):
         # Reset
         self.snake = None
         self.setup(self.board.window, self.params.getPlayerName())
コード例 #16
0
ファイル: scene.py プロジェクト: Neverous/ii-python11
	def draw(self, surface):
		"""Rysuje minimapę na powierzchni."""

		surface.blit(self.images['background'], self._pos)
		pygame.draw.rect(surface, (0, 255, 0), (self._pos[0] + 2, self._pos[1] + 1, max(0, int(62 * self._before[0][0])), 14))
		utils.drawText(surface, "%d/%d" % self._before[0][1:3], 10, (0, 0, 0), (self._pos[0] + 32, self._pos[1] + 8))
		pygame.draw.rect(surface, (0, 0, 255), (self._pos[0] + 66, self._pos[1], max(0, int(62 * self._before[1][0])), 14))
		utils.drawText(surface, "%d/%d" % self._before[1][1:3], 10, (0, 0, 0), (self._pos[0] + 96, self._pos[1] + 8))
		surface.blit(self.images['mask'], self._pos)

		surface.blit(self.images['fire' + (self._spell == hero.MAGIC_FIRE and 'on' or 'off')], (self._pos[0] + 136, self._pos[1]))
		utils.drawText(surface, "1", 10, (0, 0, 0), (self._pos[0] + 144, self._pos[1] + 8))

		surface.blit(self.images['ice' + (self._spell == hero.MAGIC_ICE and 'on' or 'off')], (self._pos[0] + 152, self._pos[1]))
		utils.drawText(surface, "2", 10, (0, 0, 0), (self._pos[0] + 160, self._pos[1] + 8))

		surface.blit(self.images['heal' + (self._spell == hero.MAGIC_HEAL and 'on' or 'off')], (self._pos[0] + 168, self._pos[1]))
		utils.drawText(surface, "3", 10, (0, 0, 0), (self._pos[0] + 176, self._pos[1] + 8))
コード例 #17
0
 def debugDraw(self, track, frameIndex):
     if self.debug:
         self.context.createOverlayCanvas()
         #TODO Also tell how many keys reference missing bones
         text = "%s (%s) Speed: %.1f, Frame %s / %i" % (self.tag, track.info.name,
             track.info.speed, frameIndex, len(track.animation.frames) - 1)
         pos = (10, self.debugY)
         color = (0, 0, 0)
         self.debugY += utils.drawText(self.context.overlayCanvas, text, pos, color)[1]
コード例 #18
0
  def setup(self, startWindow=None, playerName=None):
    
    self.score = 0
    self.scoreKeeper = ScoreKeeper()
    self.scoreKeeper.setFile('snakeScore.txt')
 
    self.params = GameParams() # To be filled by user input

    width = 800
    height = 600
    font = sf.Font.from_file("rust.ttf")

    if startWindow is None:
      # startWindow is None unless this is a restart
      startWindow = sf.RenderWindow(sf.VideoMode(width, height), "Snake")
      startWindow.framerate_limit = 60
      startWindow.clear(sf.Color.BLACK) 
 
      #Display Welcome
      welcomeText = utils.drawText(startWindow, string="Snake", size=60, font=font, position='center')
      startWindow.display()

        
    while(True):
      setup = False
      for event in startWindow.events: 
        if type(event) is sf.CloseEvent: 
          exit()
        elif (type(event) is sf.MouseButtonEvent or
              type(event) is sf.KeyEvent):
            setup = True 
      if setup:
        break

    #TODO Choose PlayerName
    if playerName is None:
      playerName = utils.textInput(startWindow, "Enter Name:", font, maxLength=10)
    self.params.setPlayerName(playerName) 
    #Choose Difficulty
    difficulty = utils.selectOptions(startWindow, ["Easy", "Medium", "Hard"], [0, 1, 2], font)
    frameRates = [20, 25, 30]
    self.params.setDifficulty(difficulty)
    self.params.setFrameRate(frameRates[difficulty])
    #Choose Board Size
    boardSize = utils.selectOptions(startWindow, ["Small", "Medium", "Large"], [(40,30), (50,40), (60,50)], font)
    self.params.setBoardSize(boardSize)
    self.params.setSquareSize(15)
    
    self.params.setFont(font) 
    self.snake = Snake(5, self.params.squareSize, sf.Vector2(10,10))
    self.board = Board(width=self.params.boardWidth, height=self.params.boardHeight,
                       squareSize=self.params.squareSize, frameRate=self.params.frameRate)
    
    self.board.initSnake(self.snake)
    startWindow.close()
    self.playGame() 
コード例 #19
0
ファイル: monster.py プロジェクト: Neverous/ii-python11
		def update(self):
			"""Aktualizuje obrazek."""

			if not self.getLogic().getLife():
				self.kill()
				return []

			_destination = self._logic.getDestination()
			_attack = self._logic.getTarget()
			if _attack and self._state != 'attack':
				self._state = 'attack'
				self._frame = 0

			if _destination and self._state != 'walk':
				self._state = 'walk'
				self._frame = 0

			if self._state == 'walk' and not _destination:
				self._frame = 0

			if self._logic.update() or self._refresh:
				if self._layer:
					self._layer.clear(self._id)

				self.image = self.getImage()
				self.rect.center = self._logic.getPos()

				self._refresh = False
				return [tuple(self.rect)]

			self._cnt += 1
			if self._cnt == 90:
				self._cnt = 0
				self.damage.fill((0, 0, 0, 0))

			_dmg = self._logic.getDamage()
			if _dmg:
				self.damage.fill((0, 0, 0, 0))
				utils.drawText(self.damage, "%d" % _dmg, 10, (255, 120, 120), (16, 8))
				return [tuple(self.rect)]

			return []
コード例 #20
0
ファイル: chestitems.py プロジェクト: Neverous/ii-python11
	def mouseEvent(self, _event, _pos = None):
		"""Obsługa zdarzeń myszy."""

		if not _pos:
			return

		if _event.type == MOUSEMOTION: # Rysowanie opisu przedmiotu
			pygame.draw.rect(self.surface, (0, 0, 0), (120, 20, 64, 64))
			self._updated.append((120, 20, 64, 64))
			for cell in self._cells:
				if cell.rect.collidepoint(_pos):
					_item = cell.getItem()
					if _item:
						utils.drawText(self.surface, _item.getDescription(), 8, (255, 255, 255), (152, 52))

					break

		for cell in self._cells:
			if cell.rect.collidepoint(_pos):
				cell.mouseEvent(_event)
コード例 #21
0
    def mouseEvent(self, _event, _pos=None):
        """Obsługa zdarzeń myszy."""

        if not _pos:
            return

        if _event.type == MOUSEMOTION:  # Rysowanie opisu przedmiotu
            pygame.draw.rect(self.surface, (0, 0, 0), (120, 20, 64, 64))
            self._updated.append((120, 20, 64, 64))
            for cell in self._cells:
                if cell.rect.collidepoint(_pos):
                    _item = cell.getItem()
                    if _item:
                        utils.drawText(self.surface, _item.getDescription(), 8,
                                       (255, 255, 255), (152, 52))

                    break

        for cell in self._cells:
            if cell.rect.collidepoint(_pos):
                cell.mouseEvent(_event)
コード例 #22
0
ファイル: creature.py プロジェクト: Neverous/ii-python11
		def update(self):
			"""Aktualizuje obrazek."""

			if not self.getLogic().getLife(): # jeśli nie żyje to trzeba go wyrzucić z puli
				self.kill()
				return []

			_destination = self._logic.getDestination()
			if _destination and self._state != 'walk':
				self._state = 'walk'
				self._frame = 0

			if self._state == 'walk' and not _destination:
				self._frame = 0

			if self._logic.update() or self._refresh:
				if self._layer:
					self._layer.clear(self._id)

				self.image = self.getImage()
				self.rect.center = self._logic.getPos()

				self._refresh = False
				return [list(self.rect)]

			self._cnt += 1
			if self._cnt == 90:
				self._cnt = 0
				self.damage.fill((0, 0, 0, 0))

			_dmg = self._logic.getDamage()
			if _dmg:
				self.damage.fill((0, 0, 0, 0))
				utils.drawText(self.damage, "%d" % _dmg, 10, (255, 120, 120), (16, 8))
				return [tuple(self.rect)]

			return []
コード例 #23
0
    def draw(self, surface):
        """Rysuje minimapę na powierzchni."""

        surface.blit(self.images['background'], self._pos)
        pygame.draw.rect(surface, (0, 255, 0),
                         (self._pos[0] + 2, self._pos[1] + 1,
                          max(0, int(62 * self._before[0][0])), 14))
        utils.drawText(surface, "%d/%d" % self._before[0][1:3], 10, (0, 0, 0),
                       (self._pos[0] + 32, self._pos[1] + 8))
        pygame.draw.rect(surface, (0, 0, 255),
                         (self._pos[0] + 66, self._pos[1],
                          max(0, int(62 * self._before[1][0])), 14))
        utils.drawText(surface, "%d/%d" % self._before[1][1:3], 10, (0, 0, 0),
                       (self._pos[0] + 96, self._pos[1] + 8))
        surface.blit(self.images['mask'], self._pos)

        surface.blit(
            self.images['fire' +
                        (self._spell == hero.MAGIC_FIRE and 'on' or 'off')],
            (self._pos[0] + 136, self._pos[1]))
        utils.drawText(surface, "1", 10, (0, 0, 0),
                       (self._pos[0] + 144, self._pos[1] + 8))

        surface.blit(
            self.images['ice' +
                        (self._spell == hero.MAGIC_ICE and 'on' or 'off')],
            (self._pos[0] + 152, self._pos[1]))
        utils.drawText(surface, "2", 10, (0, 0, 0),
                       (self._pos[0] + 160, self._pos[1] + 8))

        surface.blit(
            self.images['heal' +
                        (self._spell == hero.MAGIC_HEAL and 'on' or 'off')],
            (self._pos[0] + 168, self._pos[1]))
        utils.drawText(surface, "3", 10, (0, 0, 0),
                       (self._pos[0] + 176, self._pos[1] + 8))
コード例 #24
0
ファイル: scene.py プロジェクト: Neverous/ii-tieto12-python
    def _finish(self, result):
        self.surface = self._background.copy()
        utils.drawText(self.surface, 'Gra zakonczona!', 40, (255, 255, 255), (self._resx / 2, self._resy / 2))
        if len(result.winners) == 1:
            utils.drawText(self.surface, 'Wygral gracz %d!' % result.winners[0], 40, (255, 255, 255), (self._resx / 2, self._resy / 2 + 40))

        elif len(result.winners):
            utils.drawText(self.surface, 'Wygrali gracze %s!' % (', '.join([str(i) for i in result.winners])), 40, (255, 255, 255), (self._resx / 2, self._resy / 2 + 40))

        self._play = False
        self._engine.show(self.surface)
コード例 #25
0
ファイル: scene.py プロジェクト: Neverous/ii-tieto12-python
    def _finish(self, result):
        self.surface = self._background.copy()
        utils.drawText(self.surface, 'Gra zakonczona!', 40, (255, 255, 255), (self._resx / 2, self._resy / 2))
        if len(result.winners) == 1:
            utils.drawText(self.surface, 'Wygral gracz %d!' % result.winners[0], 40, (255, 255, 255), (self._resx / 2, self._resy / 2 + 40))

        elif len(result.winners):
            utils.drawText(self.surface, 'Wygrali gracze %s!' % (', '.join([str(i) for i in result.winners])), 40, (255, 255, 255), (self._resx / 2, self._resy / 2 + 40))

        self._play = False
        self._engine.show(self.surface)
コード例 #26
0
ファイル: menu.py プロジェクト: Neverous/ii-python11
    def show(self):
        """Wyświetlanie menu."""

        try:
            while self._engine.tick():
                for button in self._buttons:
                    button.update()

                for event in self._engine.events():
                    if event.type == QUIT:
                        raise engine.EngineQuit()

                    if event.type == KEYUP:
                        if event.key == K_ESCAPE:
                            self._engine.previousModule()
                            raise MenuQuit()

                        if event.key in (K_UP, K_DOWN):
                            _step = event.key == K_UP and -1 or 1
                            self._focus = (self._focus + _step) % len(
                                self._buttons)
                            while not self._buttons[self._focus].active:
                                self._focus = (self._focus + _step) % len(
                                    self._buttons)

                        elif event.key == K_RETURN:
                            self._buttons[self._focus].callback()

                self.surface = self._background.copy()
                _shift = 300
                for n, button in enumerate(self._buttons):
                    button.update()
                    x, y, width, height = utils.drawText(
                        self.surface, button.text, 14,
                        (self._focus == n and (255, 0, 0))
                        or (button.active and (255, 255, 255))
                        or (128, 128, 128), (self._resx / 2, _shift))
                    _shift += height + 15
                    self._updated.append((x, y, width, height))

                self._engine.show(self.surface, self._updated)
                self._before = self._focus
                self._updated = []

        except MenuQuit:
            pass
コード例 #27
0
ファイル: menu.py プロジェクト: Neverous/ii-tieto12-python
    def show(self):
        """Wyświetlanie menu."""

        try:
            while self._engine.tick():
                for button in self._buttons:
                    button.update()

                for event in self._engine.events():
                    if event.type == QUIT:
                        raise engine.EngineQuit()

                    if event.type == KEYUP:
                        if event.key == K_ESCAPE:
                            self._engine.previousModule()
                            raise MenuQuit()

                        if event.key in (K_UP, K_DOWN):
                            _step = event.key == K_UP and -1 or 1
                            self._focus = (self._focus + _step) % len(self._buttons)
                            while not self._buttons[self._focus].active:
                                self._focus = (self._focus + _step) % len(self._buttons)

                        elif event.key == K_RETURN:
                            self._buttons[self._focus].callback()

                self.surface = self._background.copy()
                _shift = 300
                for n, button in enumerate(self._buttons):
                    button.update()
                    x, y, width, height = utils.drawText(self.surface, button.text, 14, (self._focus == n and (255, 0, 0)) or (button.active and (255, 255, 255)) or (128, 128, 128), (self._resx/2, _shift))
                    _shift += height + 15
                    self._updated.append((x, y, width, height))

                self._engine.show(self.surface, self._updated)
                self._before = self._focus
                self._updated = []

        except MenuQuit:
            pass
コード例 #28
0
ファイル: inventory.py プロジェクト: Neverous/ii-python11
	def __init__(self, _grid, _hero):
		super(IntelligenceCell, self).__init__(_grid)
		self.image = utils.loadImage('data/gfx/intelligencecell.png', alpha = True)
		self._hero = _hero
		self._before = 0
		utils.drawText(self.image, "Inteligencja", 9, (0, 0, 0), (16, 6))
コード例 #29
0
ファイル: scene.py プロジェクト: Neverous/ii-tieto12-python
    def show(self):
        if not self._play:
            self._engine.previousModule()
            return

        try:
            self._last = time.time()
            while self._engine.tick():
                _upd = self._client.update(.5/self._engine.options['fps'])
                if self._play and _upd != True:
                    utils.drawText(self.surface, _upd, 20, (255, 255, 255), (self._resx / 2, self._resy / 2))
                    self._play = False
                    self._engine.show(self.surface)
                    time.sleep(5)
                    self._engine.previousModule()
                    raise SceneQuit()

                if self._client.countdown:
                    if not self._map:
                        self._loadMap(self._client.countdown.mapSize.x, self._client.countdown.mapSize.y)

                    if self._playerID == None:
                        self._playerID = self._client.countdown.playerId

                    self.surface = self._background.copy()
                    utils.drawText(self.surface, 'Gracz %d. >%d<' % (self._client.countdown.playerId, self._client.countdown.number), 30, (255, 255, 255), (self._resx / 2, self._resy / 2))
                    self._engine.show(self.surface)
                    continue

                if self._client.result:
                    utils.drawText(self.surface, 'Gra zakonczona!', 40, (255, 255, 255), (self._resx / 2, self._resy / 2))
                    if len(self._client.result.winners) == 1:
                        utils.drawText(self.surface, 'Wygral gracz %d!' % self._client.result.winners[0], 40, (255, 255, 255), (self._resx / 2, self._resy / 2 + 40))

                    elif len(self._client.result.winners):
                        utils.drawText(self.surface, 'Wygrali gracze %s!' % (', '.join([str(i) for i in self._client.result.winners])), 40, (255, 255, 255), (self._resx / 2, self._resy / 2 + 40))

                    self._play = False
                    self._engine.show(self.surface)
                    time.sleep(10)
                    self._engine.previousModule()
                    raise SceneQuit()

                if self._client.map:
                    if not self._map:
                        self._engine.previousModule()
                        self._play = False
                        raise SceneQuit()

                    for mine in self._client.map.mines:
                        _id = mine.position.x, mine.position.y
                        if not self._mineLayer.get(_id):
                            _mine = ObjectsLayer.Sprite(utils.loadImage('data/gfx/bomb.png', alpha = True))
                            self._mineLayer.add(_id, _mine)
                            self._mineLayer.move(_id, _id)

                    for _id, player in enumerate(self._client.map.playersPositions):
                        if not self._heroLayer.get(_id):
                            self._heroLayer.add(_id, ObjectsLayer.Sprite(utils.loadImage('data/gfx/hero/n.png', alpha = True)))

                        _hero = self._heroLayer.get(_id)
                        _pos = _hero.getPos()
                        self._heroLayer.move(_id, (player.x, player.y))
                        _newpos = _hero.getPos()
                        if _pos[0] > _newpos[0]:
                            _hero.changeImage(utils.loadImage('data/gfx/hero/w.png', alpha = True))

                        if _pos[0] < _newpos[0]:
                            _hero.changeImage(utils.loadImage('data/gfx/hero/e.png', alpha = True))

                        if _pos[1] > _newpos[1]:
                            _hero.changeImage(utils.loadImage('data/gfx/hero/n.png', alpha = True))

                        if _pos[1] < _newpos[1]:
                            _hero.changeImage(utils.loadImage('data/gfx/hero/s.png', alpha = True))

                        if _id == self._playerID:
                            _, _, w, h = self._map.getRectangle()
                            self._map.setShift((w / 2 - _newpos[0], h / 2 - _newpos[1]))

                for event in self._engine.events():
                    if event.type == QUIT:
                        raise engine.EngineQuit()

                    if event.type == KEYDOWN:
                        if event.key == K_ESCAPE:
                            self._engine.previousModule()
                            raise SceneQuit()

                        if event.key in (K_w, K_UP):
                            self._client.sendAction('u')
                            self._last = time.time()

                        elif event.key in (K_s, K_DOWN):
                            self._client.sendAction('d')
                            self._last = time.time()

                        elif event.key in (K_a, K_LEFT):
                            self._client.sendAction('l')
                            self._last = time.time()

                        elif event.key in (K_d, K_RIGHT):
                            self._client.sendAction('r')
                            self._last = time.time()

                        elif event.key in (K_RETURN, K_RCTRL, K_LCTRL):
                            self._client.sendAction('c')
                            self._last = time.time()

                        elif event.key == K_q:
                            self._client.sendAction('e')
                            self._last = time.time()

                if self._last + 1./self._engine.options['fps'] < time.time():
                    self._client.sendAction('m')
                    self._last = time.time()

                self.surface = self._background.copy()
                if not self._map:
                    utils.drawText(self.surface, 'Oczekiwanie na graczy!', 20, (255, 255, 255), (self._resx / 2, self._resy / 2))

                updated = []
                for submodule in self._submodules:
                    updated.extend(submodule.update())
                    submodule.draw(self.surface)

                if self._refresh:
                    self._engine.show(self.surface)
                    self._refresh = False

                else:
                    self._engine.show(self.surface, updated)

        except SceneQuit:
            pass
コード例 #30
0
ファイル: scene.py プロジェクト: Neverous/ii-tieto12-python
    def _render(self):
        self._engine.tick()
        for event in self._engine.events():
            if event.type == QUIT:
                self._play = False

            elif event.type == KEYDOWN:
                if event.key == K_ESCAPE:
                    self._engine.runLoop = False
                    from twisted.internet import reactor
                    reactor.stop()
                    return

                if self._map:
                    if event.key in (K_w, K_UP):
                        self._client.sendAction('u')
                        self._last = time.time()

                    elif event.key in (K_s, K_DOWN):
                        self._client.sendAction('d')
                        self._last = time.time()

                    elif event.key in (K_a, K_LEFT):
                        self._client.sendAction('l')
                        self._last = time.time()

                    elif event.key in (K_d, K_RIGHT):
                        self._client.sendAction('r')
                        self._last = time.time()

                    elif event.key in (K_RETURN, K_RCTRL, K_LCTRL):
                        self._client.sendAction('c')
                        self._last = time.time()

                    elif event.key == K_q:
                        self._client.sendAction('e')
                        self._last = time.time()

        if self._map and self._last + 1./self._engine.options['fps'] < time.time():
            self._client.sendAction('m')
            self._last = time.time()

        if not self._map and self._playerID == None:
            self.surface = self._background.copy()
            utils.drawText(self.surface, 'Oczekiwanie na graczy!', 20, (255, 255, 255), (self._resx / 2, self._resy / 2))

        updated = []
        if self._play:
            for submodule in self._submodules:
                updated.extend(submodule.update())
                submodule.draw(self.surface)

        if self._refresh:
            self._engine.show(self.surface)
            self._refresh = False

        else:
            self._engine.show(self.surface, updated)

        if not self._play:
            time.sleep(5)
            self._engine.runLoop = False
            from twisted.internet import reactor
            reactor.stop()
            return
コード例 #31
0
 def draw(self, sm, screen):
     # background
     screen.fill(globals.DARK_GREY)
     utils.drawText(screen, 'Main Menu', 50, 50, globals.WHITE, 255)
     self.enter.draw(screen)
     self.esc.draw(screen)
コード例 #32
0
    def show(self):
        if not self._play:
            self._engine.previousModule()
            return

        try:
            while self._engine.tick():
                for event in self._engine.events():
                    if event.type == QUIT:
                        raise engine.EngineQuit()

                    if event.type == KEYDOWN:
                        if event.key == K_ESCAPE:
                            self._engine.previousModule()
                            raise SceneQuit()

                        elif event.key in hero.MAGIC_KEYS:
                            self._hero.setSpell(hero.KEY_MAP[event.key])

                    if event.type in (MOUSEMOTION, MOUSEBUTTONDOWN,
                                      MOUSEBUTTONUP):
                        for submodule in self._submodules:
                            if submodule.getRectangle().collidepoint(
                                    event.pos):
                                x, y, _, _ = submodule.getRectangle()
                                _pos = event.pos[0] - x, event.pos[1] - y

                            else:
                                _pos = None

                            submodule.mouseEvent(event, _pos)
                            if submodule == self._map and event.type == MOUSEBUTTONDOWN and _pos:  # obsługa otwierania skrzynki(głównie)
                                _field = self._map.getLayer('Fields').get(
                                    _pos, True)
                                if _field:
                                    _field.getLogic().clicked(self, self._hero)

                            if submodule == self._map and event.type == MOUSEBUTTONUP and event.button == 1 and _pos:  # upuszczanie przedmiotu
                                _field = self._map.getLayer('Fields').get(
                                    _pos, True)
                                if _field:
                                    _field = _field.getLogic()

                                if _field and utils.distance(
                                        _field.getGrid()[:2],
                                        self._hero.getGrid()[:2]) <= 1:
                                    for _obj in self._freeobjects:
                                        if not _obj.attach(_field):
                                            _obj.attach(_obj.getAttached())
                                else:
                                    for _obj in self._freeobjects:
                                        _obj.attach(_obj.getAttached())

                            if submodule == self.inventory and event.type == MOUSEBUTTONUP and event.button == 1 and _pos:  # ↑
                                for _obj in self._freeobjects:
                                    if not _obj.attach(
                                            self.inventory.getCell(_pos)):
                                        _obj.attach(_obj.getAttached())

                            if submodule == self.chestitems and event.type == MOUSEBUTTONUP and event.button == 1 and _pos:  # ↑
                                for _obj in self._freeobjects:
                                    if not self.chestitems.opened or not _obj.attach(
                                            self.chestitems.getCell(_pos)):
                                        _obj.attach(_obj.getAttached())

                        for _obj in self._freeobjects:
                            _obj.mouseEvent(event)

                        if event.type == MOUSEBUTTONDOWN and event.button == 3 and self._map.getRectangle(
                        ).collidepoint(event.pos):  # rzucanie czaru
                            self._hero.castSpell()

                        if event.type == MOUSEBUTTONDOWN and event.button == 1 and self._map.getRectangle(
                        ).collidepoint(event.pos):  # atak
                            self._hero.punch()

                if self._hero.getGrid()[2] != self._map.getStorey(
                ):  # zmiana poziomu lochu
                    self._map.removeLayer('Missiles')
                    self._map.addLayer('Missiles', 3, MissilesLayer(self._map))
                    self._map.switchStorey(self._hero.getGrid()[2] -
                                           self._map.getStorey())
                    self._shadow.clear()
                    for _id, _ in self._actual:
                        self._creatureLayer.remove(_id)

                    self._actual = []
                    _counter = 0
                    _storey = self._map.getStorey()
                    for _name, _monster in self._monsters:
                        if _monster.getGrid()[2] == _storey:
                            self._creatureLayer.add(
                                _name + '_' + str(_counter),
                                _monster.getSprite(self._creatureLayer, _name +
                                                   '_' + str(_counter)))
                            self._actual.append(
                                (_name + '_' + str(_counter), _monster))
                            _monster.move((0, 0, 0))
                            _counter += 1

                else:
                    for key in hero.DIRECTION_KEYS:
                        if pygame.key.get_pressed()[key]:
                            self._hero.move(hero.KEY_MAP[key])

                if self._hero.getDestination(
                ):  # przesuwanie mapy za bohaterem
                    x, y = self._hero.getPos()
                    _, _, w, h = self._map.getRectangle()
                    self._map.setShift((w / 2 - x, h / 2 - y))

                if not self._hero.getLife():  # przegrana
                    utils.drawText(self.surface, "Game Over", 40,
                                   (255, 255, 255),
                                   (self._resx / 2, self._resy / 2))
                    self._play = False
                    self._engine.show(self.surface)
                    time.sleep(3)
                    self._engine.previousModule()
                    raise SceneQuit()

                if not self._monsters:  # wygrana
                    utils.drawText(self.surface, "Win", 50, (255, 255, 255),
                                   (self._resx / 2, self._resy / 2))
                    self._play = False
                    self._engine.show(self.surface)
                    time.sleep(3)
                    self._engine.previousModule()
                    raise SceneQuit()

                _hero = self._hero.getPos()
                _shift = self._map.getShift()
                _hero = _hero[0] + _shift[0], _hero[1] + _shift[1]
                _mouse = pygame.mouse.get_pos()
                _mouse = _mouse[0] - _hero[0], _mouse[1] - _hero[1]
                _angle = utils.vectorAngle((0, 1), _mouse)
                if -45 <= _angle < 45:
                    self._hero.setDirection('s')

                elif -135 <= _angle < -45:
                    self._hero.setDirection('e')

                elif 45 <= _angle < 135:
                    self._hero.setDirection('w')

                else:
                    self._hero.setDirection('n')

                self._shadow.reveal(self._hero.getPos())
                self.surface = self._background.copy()
                updated = []
                for submodule in self._submodules:
                    updated.extend(submodule.update())
                    submodule.draw(self.surface)

                for _obj in self._freeobjects:
                    updated.extend(_obj.update())
                    _obj.draw(self.surface)

                if self._refresh:
                    self._engine.show(self.surface)
                    self._refresh = False

                else:
                    self._engine.show(self.surface, updated)

                _actual = []
                for _id, _monster in self._actual:
                    if _monster.getGrid()[2] != self._map.getStorey():
                        self._creatureLayer.remove(_id)

                    else:
                        _actual.append((_id, _monster))

                self._actual = _actual
                for _id, _monster in self._monsters:  # umierające potwory dodają exp bohaterowi
                    if not _monster.getLife():
                        self._monsters.remove((_id, _monster))
                        self._hero.addExperience(_monster.stats['experience'])

        except SceneQuit:
            pass
コード例 #33
0
ファイル: scene.py プロジェクト: Neverous/ii-python11
	def show(self):
		if not self._play:
			self._engine.previousModule()
			return

		try:
			while self._engine.tick():
				for event in self._engine.events():
					if event.type == QUIT:
						raise engine.EngineQuit()

					if event.type == KEYDOWN:
						if event.key == K_ESCAPE:
							self._engine.previousModule()
							raise SceneQuit()

						elif event.key in hero.MAGIC_KEYS:
							self._hero.setSpell(hero.KEY_MAP[event.key])

					if event.type in (MOUSEMOTION, MOUSEBUTTONDOWN, MOUSEBUTTONUP):
						for submodule in self._submodules:
							if submodule.getRectangle().collidepoint(event.pos):
								x, y, _, _ = submodule.getRectangle()
								_pos = event.pos[0] - x, event.pos[1] - y

							else:
								_pos = None

							submodule.mouseEvent(event, _pos)
							if submodule == self._map and event.type == MOUSEBUTTONDOWN and _pos: # obsługa otwierania skrzynki(głównie)
								_field = self._map.getLayer('Fields').get(_pos, True)
								if _field:
									_field.getLogic().clicked(self, self._hero)

							if submodule == self._map and event.type == MOUSEBUTTONUP and event.button == 1 and _pos: # upuszczanie przedmiotu
								_field = self._map.getLayer('Fields').get(_pos, True)
								if _field:
									_field = _field.getLogic()

								if _field and utils.distance(_field.getGrid()[:2], self._hero.getGrid()[:2]) <= 1:
									for _obj in self._freeobjects:
										if not _obj.attach(_field):
											_obj.attach(_obj.getAttached())
								else:
									for _obj in self._freeobjects:
										_obj.attach(_obj.getAttached())

							if submodule == self.inventory and event.type == MOUSEBUTTONUP and event.button == 1 and _pos: # ↑
								for _obj in self._freeobjects:
									if not _obj.attach(self.inventory.getCell(_pos)):
										_obj.attach(_obj.getAttached())

							if submodule == self.chestitems and event.type == MOUSEBUTTONUP and event.button == 1 and _pos: # ↑
								for _obj in self._freeobjects:
									if not self.chestitems.opened or not _obj.attach(self.chestitems.getCell(_pos)):
										_obj.attach(_obj.getAttached())

						for _obj in self._freeobjects:
							_obj.mouseEvent(event)

						if event.type == MOUSEBUTTONDOWN and event.button == 3 and self._map.getRectangle().collidepoint(event.pos): # rzucanie czaru
							self._hero.castSpell()

						if event.type == MOUSEBUTTONDOWN and event.button == 1 and self._map.getRectangle().collidepoint(event.pos): # atak
							self._hero.punch()

				if self._hero.getGrid()[2] != self._map.getStorey(): # zmiana poziomu lochu
					self._map.removeLayer('Missiles')
					self._map.addLayer('Missiles', 3, MissilesLayer(self._map))
					self._map.switchStorey(self._hero.getGrid()[2] - self._map.getStorey())
					self._shadow.clear()
					for _id, _ in self._actual:
						self._creatureLayer.remove(_id)

					self._actual = []
					_counter = 0
					_storey = self._map.getStorey()
					for _name, _monster in self._monsters:
						if _monster.getGrid()[2] == _storey:
							self._creatureLayer.add(_name + '_' + str(_counter), _monster.getSprite(self._creatureLayer, _name + '_' + str(_counter)))
							self._actual.append((_name + '_' + str(_counter), _monster))
							_monster.move((0, 0, 0))
							_counter += 1

				else:
					for key in hero.DIRECTION_KEYS:
						if pygame.key.get_pressed()[key]:
							self._hero.move(hero.KEY_MAP[key])

				if self._hero.getDestination(): # przesuwanie mapy za bohaterem
					x, y = self._hero.getPos()
					_, _, w, h = self._map.getRectangle()
					self._map.setShift((w / 2 - x, h / 2 - y))

				if not self._hero.getLife(): # przegrana
					utils.drawText(self.surface, "Game Over", 40, (255, 255, 255), (self._resx / 2, self._resy / 2))
					self._play = False
					self._engine.show(self.surface)
					time.sleep(3)
					self._engine.previousModule()
					raise SceneQuit()

				if not self._monsters: # wygrana
					utils.drawText(self.surface, "Win", 50, (255, 255, 255), (self._resx / 2, self._resy / 2))
					self._play = False
					self._engine.show(self.surface)
					time.sleep(3)
					self._engine.previousModule()
					raise SceneQuit()

				_hero = self._hero.getPos()
				_shift = self._map.getShift()
				_hero = _hero[0] + _shift[0], _hero[1] + _shift[1]
				_mouse = pygame.mouse.get_pos()
				_mouse = _mouse[0] - _hero[0], _mouse[1] - _hero[1]
				_angle = utils.vectorAngle((0, 1), _mouse)
				if -45 <= _angle < 45:
					self._hero.setDirection('s')

				elif -135 <= _angle < -45:
					self._hero.setDirection('e')

				elif 45 <= _angle < 135:
					self._hero.setDirection('w')

				else:
					self._hero.setDirection('n')

				self._shadow.reveal(self._hero.getPos())
				self.surface = self._background.copy()
				updated = []
				for submodule in self._submodules:
					updated.extend(submodule.update())
					submodule.draw(self.surface)

				for _obj in self._freeobjects:
					updated.extend(_obj.update())
					_obj.draw(self.surface)

				if self._refresh:
					self._engine.show(self.surface)
					self._refresh = False

				else:
					self._engine.show(self.surface, updated)

				_actual = []
				for _id, _monster in self._actual:
					if _monster.getGrid()[2] != self._map.getStorey():
						self._creatureLayer.remove(_id)

					else:
						_actual.append((_id, _monster))

				self._actual = _actual
				for _id, _monster in self._monsters: # umierające potwory dodają exp bohaterowi
					if not _monster.getLife():
						self._monsters.remove((_id, _monster))
						self._hero.addExperience(_monster.stats['experience'])

		except SceneQuit:
			pass
コード例 #34
0
 def draw(self, screen, alpha=255):
     if self.on:
         colour = globals.GREEN
     else:
         colour = globals.WHITE
     utils.drawText(screen, self.text, self.x, self.y, colour, alpha)
コード例 #35
0
def blink(source, video_path, output, fps, frame_size):
    """
    在视频流中实时检测和计数眨眼次数
    """
    # click.echo(click.get_current_context().params)
    device_info = getDeviceInfo()  # type: dai.DeviceInfo
    with dai.Device(create_pipeline(source), device_info) as device:
        fps_handler = FPSHandler()
        if source:
            cap = cv2.VideoCapture(video_path)
            frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
            frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
            frame_shape = [frame_height, frame_width]
            print("CAP_PROP_FRAME_SHAPE: %s" % frame_shape)
            cap_fps = int(cap.get(cv2.CAP_PROP_FPS))
            print("CAP_PROP_FPS: %d" % cap_fps)

            mesh_in = device.getInputQueue("mesh_in")
        else:
            cam_out = device.getOutputQueue("rgb")

        mesh_nn = device.getOutputQueue("mesh_nn")

        eye_in = device.getInputQueue("eye_in")
        eye_nn = device.getOutputQueue("eye_nn")
        left_eye_blink = []
        right_eye_blink = []

        left_number_of_blinks = 0
        right_number_of_blinks = 0

        def should_run():
            if source:
                return cap.isOpened()
            else:
                return True

        def get_frame():
            if source:
                return cap.read()
            else:
                return True, cam_out.get().getCvFrame()

        if output:
            output.parent.mkdir(parents=True, exist_ok=True)
            fourcc = cv2.VideoWriter_fourcc(*"mp4v")
            writer = cv2.VideoWriter(str(output), fourcc, fps, frame_size)

        while should_run():
            read_correctly, frame = get_frame()
            if not read_correctly:
                break
            frame_debug = frame.copy()
            if source:
                run_nn(frame_debug, mesh_in, 192, 192)
            mesh_data = toTensorResult(mesh_nn.get())
            fps_handler.tick("Mesh")

            score = mesh_data.get("conv2d_31").reshape((1, ))
            if score > 0.5:
                mesh = mesh_data.get("conv2d_21").reshape((468, 3))

                wh = np.array(frame_debug.shape[:2])[::-1]
                mesh *= np.array([*wh / 192, 1])

                for v in mesh.astype(int):
                    cv2.circle(frame_debug, v[:2], 1, (191, 255, 0))

                left_eye, left_box = get_mini_box_frame(
                    frame_debug,
                    np.array([mesh[71], mesh[107], mesh[116], mesh[197]]),
                )

                run_nn(left_eye, eye_in, 32, 32)
                left_eye_blink.append(
                    np.argmax(toTensorResult(eye_nn.get()).get("19")))

                if (len(left_eye_blink) > 5
                        and left_eye_blink[-1] not in left_eye_blink[-5:-1]):
                    left_number_of_blinks += 1

                if len(left_eye_blink) > 20:
                    del left_eye_blink[0]

                right_eye, right_box = get_mini_box_frame(
                    frame_debug,
                    np.array([mesh[301], mesh[336], mesh[345], mesh[197]]),
                )

                run_nn(right_eye, eye_in, 32, 32)
                right_eye_blink.append(
                    np.argmax(toTensorResult(eye_nn.get()).get("19")))
                if (len(right_eye_blink) > 5
                        and right_eye_blink[-1] not in right_eye_blink[-5:-1]):
                    right_number_of_blinks += 1

                if len(right_eye_blink) > 20:
                    del right_eye_blink[0]

                cv2.drawContours(frame_debug, [right_box], -1, (0, 139, 0), 2)
                cv2.drawContours(frame_debug, [left_box], -1, (0, 139, 0), 2)
                cv2.imshow("left", left_eye)
                cv2.imshow("right", right_eye)

            drawText(
                frame_debug,
                f"NumberOfBlinksOfRightEye: {right_number_of_blinks}",
                (20, 50),
                color="red",
            )
            drawText(
                frame_debug,
                f"NumberOfBlinksOfLeftEye: {left_number_of_blinks}",
                (20, 80),
                color="red",
            )

            cv2.imshow("", frame_debug)
            if output:
                writer.write(cv2.resize(frame_debug, frame_size))

            key = cv2.waitKey(1)
            if key in [ord("q"), 27]:
                break
            elif key == ord("s"):
                cv2.imwrite(
                    "saved_%s.jpg" %
                    time.strftime("%Y%m%d_%H%M%S", time.localtime()),
                    frame_debug,
                )
        fps_handler.printStatus()
        if source:
            cap.release()
        if output:
            writer.release()
        cv2.destroyAllWindows()
コード例 #36
0
def fire_detection(source, video_path, output, fps, frame_size):
    """
    基于深度学习的烟火检测器
    """
    # click.echo(click.get_current_context().params)
    device_info = getDeviceInfo()  # type: dai.DeviceInfo
    with dai.Device(create_pipeline(source), device_info) as device:
        fps_handler = FPSHandler()
        if source:
            cap = cv2.VideoCapture(video_path)
            frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
            frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
            frame_shape = [frame_height, frame_width]
            print("CAP_PROP_FRAME_SHAPE: %s" % frame_shape)
            cap_fps = int(cap.get(cv2.CAP_PROP_FPS))
            print("CAP_PROP_FPS: %d" % cap_fps)

            fire_in = device.getInputQueue("fire_in")
        else:
            cam_out = device.getOutputQueue("rgb")

        fire_nn = device.getOutputQueue("fire_nn")

        def should_run():
            if source:
                return cap.isOpened()
            else:
                return True

        def get_frame():
            if source:
                return cap.read()
            else:
                return True, cam_out.get().getCvFrame()

        if output:
            output.parent.mkdir(parents=True, exist_ok=True)
            fourcc = cv2.VideoWriter_fourcc(*"mp4v")
            writer = cv2.VideoWriter(str(output), fourcc, fps, frame_size)

        label_map = ["fire", "normal", "smoke"]
        while should_run():
            read_correctly, frame = get_frame()
            if not read_correctly:
                break
            frame_debug = frame.copy()
            if source:
                run_nn(frame_debug, fire_in, 224, 224)
            fire_data = toTensorResult(fire_nn.get()).get("final_result")
            fps_handler.tick("fire")
            conf = np.max(fire_data)
            if conf > 0.5:
                label = label_map[np.argmax(fire_data)]

                drawText(frame_debug, f"{label}", (10, 30), "black")
                drawText(frame_debug, f"{conf:.2%}", (10, 50), "black")
            cv2.imshow("", frame_debug)
            if output:
                writer.write(cv2.resize(frame_debug, frame_size))

            key = cv2.waitKey(1)
            if key in [ord("q"), 27]:
                break
            elif key == ord("s"):
                cv2.imwrite(
                    "saved_%s.jpg" %
                    time.strftime("%Y%m%d_%H%M%S", time.localtime()),
                    frame_debug,
                )
        fps_handler.printStatus()
        if source:
            cap.release()
        if output:
            writer.release()
        cv2.destroyAllWindows()
コード例 #37
0
ファイル: inventory.py プロジェクト: Neverous/ii-python11
	def __init__(self, _grid, _hero):
		super(StrengthCell, self).__init__(_grid)
		self.image = utils.loadImage('data/gfx/strengthcell.png', alpha = True)
		self._hero = _hero
		self._before = 0
		utils.drawText(self.image, "Sila", 9, (0, 0, 0), (16, 6))
コード例 #38
0
    def __init__(self, _engine, _editor, _map):
        """_engine - obiekt silnika, _editor - obiekt edytora, _map - obiekt mapy."""

        super(TilesGrid, self).__init__()
        self.images = {
            'hover': utils.loadImage('data/gfx/hover.png', alpha=True),
            'normal': utils.loadImage('data/gfx/normal.png', alpha=True),
        }

        self._engine = _engine
        self._editor = _editor
        self._map = _map
        self._layer = HoverLayer(_map, True)
        self._map.addLayer('ToolHover', 5, self._layer)
        self._clicked = None
        self._hover = None
        self._updated = []
        self.screenUpdated()
        self.surface = pygame.Surface((192, 312))
        self.surface.fill((1, 5, 4))
        self.surface.set_colorkey((1, 5, 4))
        self._tool = Tool(_editor, _map)
        self._toolHover = HoverLayer.Sprite()
        self._layer.add('tool', self._toolHover)
        _tiles = (  # dostępne kafelki
            field.Field,
            wall.WallTopLeft,
            wall.WallTopRight,
            wall.WallBottomLeft,
            wall.WallBottomRight,
            wall.WallHorizontal,
            wall.WallVertical,
            stairs.StairsUpNorth,
            stairs.StairsDownNorth,
            stairs.StairsUpSouth,
            stairs.StairsDownSouth,
            stairs.StairsUpWest,
            stairs.StairsDownWest,
            stairs.StairsUpEast,
            stairs.StairsDownEast,
            trap.TrapMoveArrow,
            trap.TrapMoveFire,
            trap.TrapMoveIce,
            trap.TrapTouchArrow,
            trap.TrapTouchFire,
            trap.TrapTouchIce,
            chest.ChestNorth,
            chest.ChestSouth,
            chest.ChestWest,
            chest.ChestEast,
        )

        _modifiers = (field.MODIFIER_HERO, field.MODIFIER_SPIDER,
                      field.MODIFIER_SKELETON, field.MODIFIER_MAGE,
                      field.MODIFIER_TROLL)

        # Kafelki
        utils.drawText(self.surface, "Kafelki", 22, (255, 255, 255), (96, 10))
        self._tiles = pygame.sprite.Group()
        for y in xrange(5):
            for x in xrange(5):
                tile = _tiles[y * 5 + x]
                tile = tile.Sprite((x, y), tile)
                tile.rect.center = tile.rect.centerx + x * 8, tile.rect.centery + y * 8 + 20
                self._tiles.add(tile)

        self._tiles.draw(self.surface)
        for tile in self._tiles:
            self.surface.blit(self.images['hover'], tile.rect.topleft)
            self.surface.blit(self.images['normal'], tile.rect.topleft)

        # Modyfikatory
        utils.drawText(self.surface, "Modyfikatory", 22, (255, 255, 255),
                       (96, 225))
        self._modifiers = pygame.sprite.Group()
        for x in xrange(5):
            modifier = field.Modifier((x, 0), _modifiers[x])
            modifier.rect.center = modifier.rect.centerx + x * 8, modifier.rect.centery + 240
            self._modifiers.add(modifier)

        self._modifiers.draw(self.surface)
        for tile in self._modifiers:
            self.surface.blit(self.images['hover'], tile.rect.topleft)
            self.surface.blit(self.images['normal'], tile.rect.topleft)
コード例 #39
0
ファイル: scene.py プロジェクト: Neverous/ii-tieto12-python
    def _render(self):
        self._engine.tick()
        for event in self._engine.events():
            if event.type == QUIT:
                self._play = False

            elif event.type == KEYDOWN:
                if event.key == K_ESCAPE:
                    self._engine.runLoop = False
                    from twisted.internet import reactor
                    reactor.stop()
                    return

                if self._map:
                    if event.key in (K_w, K_UP):
                        self._client.sendAction('u')
                        self._last = time.time()

                    elif event.key in (K_s, K_DOWN):
                        self._client.sendAction('d')
                        self._last = time.time()

                    elif event.key in (K_a, K_LEFT):
                        self._client.sendAction('l')
                        self._last = time.time()

                    elif event.key in (K_d, K_RIGHT):
                        self._client.sendAction('r')
                        self._last = time.time()

                    elif event.key in (K_RETURN, K_RCTRL, K_LCTRL):
                        self._client.sendAction('c')
                        self._last = time.time()

                    elif event.key == K_q:
                        self._client.sendAction('e')
                        self._last = time.time()

        if self._map and self._last + 1./self._engine.options['fps'] < time.time():
            self._client.sendAction('m')
            self._last = time.time()

        if not self._map and self._playerID == None:
            self.surface = self._background.copy()
            utils.drawText(self.surface, 'Oczekiwanie na graczy!', 20, (255, 255, 255), (self._resx / 2, self._resy / 2))

        updated = []
        if self._play:
            for submodule in self._submodules:
                updated.extend(submodule.update())
                submodule.draw(self.surface)

        if self._refresh:
            self._engine.show(self.surface)
            self._refresh = False

        else:
            self._engine.show(self.surface, updated)

        if not self._play:
            time.sleep(5)
            self._engine.runLoop = False
            from twisted.internet import reactor
            reactor.stop()
            return
コード例 #40
0
ファイル: tilesgrid.py プロジェクト: Neverous/ii-python11
	def __init__(self, _engine, _editor, _map):
		"""_engine - obiekt silnika, _editor - obiekt edytora, _map - obiekt mapy."""

		super(TilesGrid, self).__init__()
		self.images = {
			'hover': utils.loadImage('data/gfx/hover.png', alpha = True),
			'normal': utils.loadImage('data/gfx/normal.png', alpha = True),
		}

		self._engine = _engine
		self._editor = _editor
		self._map = _map
		self._layer = HoverLayer(_map, True)
		self._map.addLayer('ToolHover', 5, self._layer)
		self._clicked = None
		self._hover = None
		self._updated = []
		self.screenUpdated()
		self.surface = pygame.Surface((192, 312))
		self.surface.fill((1, 5, 4))
		self.surface.set_colorkey((1, 5, 4))
		self._tool = Tool(_editor, _map)
		self._toolHover = HoverLayer.Sprite()
		self._layer.add('tool', self._toolHover)
		_tiles = ( # dostępne kafelki
			field.Field,
			wall.WallTopLeft, wall.WallTopRight, wall.WallBottomLeft, wall.WallBottomRight, wall.WallHorizontal, wall.WallVertical,
			stairs.StairsUpNorth, stairs.StairsDownNorth, stairs.StairsUpSouth, stairs.StairsDownSouth, stairs.StairsUpWest, stairs.StairsDownWest, stairs.StairsUpEast, stairs.StairsDownEast,
			trap.TrapMoveArrow, trap.TrapMoveFire, trap.TrapMoveIce, trap.TrapTouchArrow, trap.TrapTouchFire, trap.TrapTouchIce,
			chest.ChestNorth, chest.ChestSouth, chest.ChestWest, chest.ChestEast,
		)

		_modifiers = (field.MODIFIER_HERO, field.MODIFIER_SPIDER, field.MODIFIER_SKELETON, field.MODIFIER_MAGE, field.MODIFIER_TROLL)

		# Kafelki
		utils.drawText(self.surface, "Kafelki", 22, (255, 255, 255), (96, 10))
		self._tiles = pygame.sprite.Group()
		for y in xrange(5):
			for x in xrange(5):
				tile = _tiles[y * 5 + x]
				tile = tile.Sprite((x, y), tile)
				tile.rect.center = tile.rect.centerx + x * 8, tile.rect.centery + y * 8 + 20
				self._tiles.add(tile)

		self._tiles.draw(self.surface)
		for tile in self._tiles:
			self.surface.blit(self.images['hover'], tile.rect.topleft)
			self.surface.blit(self.images['normal'], tile.rect.topleft)

		# Modyfikatory
		utils.drawText(self.surface, "Modyfikatory", 22, (255, 255, 255), (96, 225))
		self._modifiers = pygame.sprite.Group()
		for x in xrange(5):
			modifier = field.Modifier((x, 0), _modifiers[x])
			modifier.rect.center = modifier.rect.centerx + x * 8, modifier.rect.centery + 240
			self._modifiers.add(modifier)

		self._modifiers.draw(self.surface)
		for tile in self._modifiers:
			self.surface.blit(self.images['hover'], tile.rect.topleft)
			self.surface.blit(self.images['normal'], tile.rect.topleft)
コード例 #41
0
ファイル: inventory.py プロジェクト: Neverous/ii-python11
	def __init__(self, _grid, _hero):
		super(AgilityCell, self).__init__(_grid)
		self.image = utils.loadImage('data/gfx/agilitycell.png', alpha = True)
		self._hero = _hero
		self._before = 0
		utils.drawText(self.image, "Zrecznosc", 9, (0, 0, 0), (16, 6))
コード例 #42
0
ファイル: inventory.py プロジェクト: Neverous/ii-python11
	def draw(self, surface):
		surface.blit(self.image, self.rect.topleft)
		utils.drawText(surface, str(self._hero.stats['agility']) + '%', 12, (255, 255, 255), (self.rect.centerx, self.rect.centery + 6))
		if self._hero.stats['points']:
			utils.drawText(surface, '+', 14, (255, 0, 0), (self.rect.right - 7, self.rect.bottom - 7))
コード例 #43
0
ファイル: AsteroidsGame.py プロジェクト: Scott8440/Games
    def setup(self, startWindow=None, playerName=None):
        self.params = GameParams()  # To be filled by user input

        # Set up scorekeeping
        self.score = 0
        self.scoreKeeper = ScoreKeeper()
        self.scoreKeeper.setFile('asteroidScore.txt')

        # Set up window
        width = 800
        height = 600
        font = sf.Font.from_file("rust.ttf")
        self.params.setFont(font)

        if startWindow is None:
            # startWindow is None unless this is a restart
            startWindow = sf.RenderWindow(sf.VideoMode(width, height),
                                          "Asteroids")
            startWindow.framerate_limit = 60
            startWindow.clear(sf.Color.BLACK)

            #Display Welcome
            welcomeText = utils.drawText(startWindow,
                                         string="Asteroids",
                                         size=60,
                                         font=font,
                                         position='center')
            startWindow.display()

        # Wait for any input
        while (True):
            setup = False
            for event in startWindow.events:
                if type(event) is sf.CloseEvent:
                    exit()
                elif (type(event) is sf.MouseButtonEvent
                      or type(event) is sf.KeyEvent):
                    setup = True
            if setup:
                break

        # Select Player Name
        if playerName is None:
            playerName = utils.textInput(startWindow,
                                         "Enter Name:",
                                         font,
                                         maxLength=10)
        self.params.setPlayerName(playerName.lower())

        #Choose Difficulty
        difficulty = utils.selectOptions(startWindow,
                                         ["Easy", "Medium", "Hard"], [0, 1, 2],
                                         font)
        makeTimes = [20, 15, 12]
        timeModifiers = [0.98, 0.95, 0.92]
        self.params.setDifficulty(difficulty)
        self.timeToMakeAsteroid = makeTimes[difficulty]
        self.makeTimeModifier = timeModifiers[difficulty]
        self.lastAsteroidTime = time.time() - self.timeToMakeAsteroid

        self.timeToMakePowerup = 20
        self.lastPowerupTime = time.time() - self.timeToMakePowerup
        self.powerupProbability = 1 / 600

        # Set up Board
        self.board = Board(title="Asteroids", width=700, height=700)

        # Set up Ship
        self.ship = Ship(position=(self.board.getBoundary()[0] / 2,
                                   self.board.getBoundary()[1] / 2))
        self.ship.setWrapping(True)
        self.ship.setBoundary(self.board.getBoundary())

        startWindow.close()
コード例 #44
0
    def updateEntity(self, screen, inputStream, entity):

        # hacer rectangulo de camara
        cameraRect = entity.camera.rect
        clipRect = pygame.Rect(cameraRect.x, cameraRect.y, cameraRect.w,
                               cameraRect.h)
        screen.set_clip(clipRect)

        # actualizar camara si esta siguiendo la entidad
        if entity.camera.entityToTrack is not None:

            trackedEntity = entity.camera.entityToTrack

            currentX = entity.camera.worldX
            currentY = entity.camera.worldY

            targetX = trackedEntity.position.rect.x + trackedEntity.position.rect.w / 2
            targetY = trackedEntity.position.rect.y + trackedEntity.position.rect.h / 2
            #velocidad de delay en el seguimiento de la camara
            entity.camera.worldX = (currentX * 0.92) + (targetX * 0.08)
            entity.camera.worldY = (currentY * 0.92) + (targetY * 0.08)

            # calcular bordes de la camara(offsets)
        # borde en x = rectangulo camara en x + la mitad de el ancho del rect de camara - la entidad de la camara en x
        offsetX = cameraRect.x + cameraRect.w / 2 - entity.camera.worldX
        # borde en x = rectangulo camara en y + la mitad de la altura del rect de camara - la entidad de la camara en y
        offsetY = cameraRect.y + cameraRect.h / 2 - entity.camera.worldY

        #color fondo de pantalla camara
        screen.fill(globals.GRIS)

        # renderizar plataformas
        for p in globals.world.platforms:
            newPosRect = pygame.Rect(p.x + offsetX, p.y + offsetY, p.w, p.h)
            screen.blit(platform, (newPosRect))

        #renderizar entidades
        for e in globals.world.entities:
            s = e.state
            a = e.animations.animationList[s]
            a.draw(screen, e.position.rect.x + offsetX,
                   e.position.rect.y + offsetY, e.direction == "right", False)

            #HUD del jugador

            # PUNTAJE
            if entity.score is not None:
                screen.blit(
                    utils.coin1,
                    (entity.camera.rect.x + 10, entity.camera.rect.y + 10))
                utils.drawText(screen, str(entity.score.score),
                               entity.camera.rect.x + 65,
                               entity.camera.rect.y + 35, globals.BLANCO, 255)

            # VIDAS
            if entity.battle is not None:
                for l in range(entity.battle.lives):
                    # poner vidas en pantalla en X + repeticion cuantas vidas hayan, y
                    screen.blit(utils.vida_image,
                                (entity.camera.rect.x + 10 +
                                 (l * 20), entity.camera.rect.y + 65))

        # deshacer rectangulo de camara
        screen.set_clip(None)
コード例 #45
0
ファイル: scene.py プロジェクト: Neverous/ii-tieto12-python
 def _connectionError(self, msg):
     self._play = False
     utils.drawText(self.surface, str(msg), 10, (255, 255, 255), (self._resx / 2, self._resy - 10))
コード例 #46
0
ファイル: scene.py プロジェクト: Neverous/ii-tieto12-python
 def _connectionError(self, msg):
     self._play = False
     utils.drawText(self.surface, str(msg), 10, (255, 255, 255), (self._resx / 2, self._resy - 10))
コード例 #47
0
    def setup(self, startWindow=None, playerName=None):
        self.params = GameParams()  # To be filled by user input

        # Set up scorekeeping
        self.score = 0
        self.scoreKeeper = ScoreKeeper()
        self.scoreKeeper.setFile('breakoutScore.txt')

        # Set up window
        width = 800
        height = 600
        font = sf.Font.from_file("rust.ttf")
        self.params.setFont(font)

        if startWindow is None:
            # startWindow is None unless this is a restart
            startWindow = sf.RenderWindow(sf.VideoMode(width, height),
                                          "Breakout")
            startWindow.framerate_limit = 60
            startWindow.clear(sf.Color.BLACK)

            #Display Welcome
            welcomeText = utils.drawText(startWindow,
                                         string="Breakout",
                                         size=60,
                                         font=font,
                                         position='center')
            startWindow.display()

        # Wait for any input
        while (True):
            setup = False
            for event in startWindow.events:
                if type(event) is sf.CloseEvent:
                    exit()
                elif (type(event) is sf.MouseButtonEvent
                      or type(event) is sf.KeyEvent):
                    setup = True
            if setup:
                break

        # Select Player Name
        if playerName is None:
            playerName = utils.textInput(startWindow,
                                         "Enter Name:",
                                         font,
                                         maxLength=10)
        self.params.setPlayerName(playerName.lower())

        #Choose Difficulty
        #difficulty = utils.selectOptions(startWindow, ["Easy", "Medium", "Hard"], [0, 1, 2], font)
        #self.params.setDifficulty(difficulty)

        # Set up Board
        self.board = Board(title="Breakout", width=1000, height=500)

        # Set up Paddle
        self.paddle = Paddle(boundary=self.board.getBoundary(),
                             width=75,
                             height=15)
        self.paddle.setMoveSpeed(10)

        # Gameplay parameters
        self.maxLayers = 5
        self.level = 1

        startWindow.close()