Beispiel #1
0
    def load(self, songPath):
        # Load projectiles
        self._laser = Laser(self._windowWidth * 1.5)

        # Load player
        self._playerSpawnPos = (self._windowWidth / 2, self._windowHeight / 2)
        self._player = Player(ContentManager.load_image('media/actors/player.png'), self._laser, self._playerSpawnPos)
        self._playerGroup.add(self._player)

        # Load HUD
        fontPath = 'media/fonts/freesansbold.ttf'
        self._font = ContentManager.load_font(fontPath, 36)
        self._scoreSprite = TextSprite(self._font, pygame.Color('white'), (30, 30))
        self._livesSprite = TextSprite(self._font, pygame.Color('white'), (30, 70))
        self._livesSprite.updateText('Lives: ' + str(self._lives))
        self._hudGroup.add(self._scoreSprite, self._livesSprite)

        # Load music configuration
        #songPath = 'media/music/battlefield1942'
        #songPath = 'media/music/test'

        # Load game director
        self._gameDirector = GameDirector(self)
        self._gameDirector.load(self._player, songPath)

        # Load music
        self._musicPlayer = MusicPlayer()
        self._musicPlayer.load(songPath + '.mid')
        self._musicPlayer.play()
Beispiel #2
0
def shoot(event):  #fire a laser at each space bar click
    global lasers, shots, player

    if event.char == ' ':  #if the space bar button is clicked, fire
        lasers[shots] = Laser(canvas, player.getRightSide(),
                              player.getTopSide() + player.getHeight() //
                              2)  #create the laser at the front of the ship
        #######################################laser sound#############################
        lasers[shots].shoot()  #animate the laser forward
        shots += 1
        if shots == 10:  #reset the laser object list index
            shots = 0
Beispiel #3
0
	def updatePlayerData(self, gdInfo):
		# Extract the information about the players
		p1data = gdInfo.p1data
		p2data = gdInfo.p2data
		# Update Player 1
		xpos = p1data.x_pos
		ypos = p1data.y_pos
		angle = p1data.angle
		GS.Player1.curAngle = angle
		GS.Player1.rect.top = ypos
		GS.Player1.rect.left = xpos
		GS.Player1.image = pygame.transform.rotate(GS.Player1.orig_image, angle)
		GS.Player1.rect = GS.Player1.image.get_rect(center = GS.Player1.rect.center)
		if p1data.newLaser != 0:
			Laser1 = Laser()
			Laser1.go(GS.Player1.rect.centerx, GS.Player1.rect.centery, angle, "laser1.png")
			GS.laserList.append(Laser1)
		#Update health of other player
		GS.Player1.health = gdInfo.p1data.health

		# Update Player 2
		xpos = p2data.x_pos
		ypos = p2data.y_pos
		angle = p2data.angle
		GS.Player2.curAngle = angle
		GS.Player2.rect.top = ypos
		GS.Player2.rect.left = xpos
		GS.Player2.image = pygame.transform.rotate(GS.Player2.orig_image, angle)
		GS.Player2.rect = GS.Player2.image.get_rect(center = GS.Player2.rect.center)
		if p2data.newLaser != 0:
			Laser2 = Laser()
			Laser2.go(GS.Player2.rect.centerx, GS.Player2.rect.centery, angle, "laser2.png")
			GS.laserList.append(Laser2)
Beispiel #4
0
    def __init__(self, director, player):
        Level.__init__(self, director, player)
        self.player.rect.x = 224
        self.player.rect.y = 1273

        self.laser0 = Laser(80, 340, 'laser_45.png')
        self.laser1 = Laser(400, 75, 'laser_45.png')
        self.laser2 = Laser(405, 332, 'laser_180.png')
        self.laser3 = Laser(80, 330, 'laser_180.png')
        self.laser4 = Laser(406, 341, 'laser_125.png')
        self.laser5 = Laser(80, 80, 'laser_125.png')
        self.laser6 = Laser(400, 350, 'laser_90.png')
        self.laserArray = [
            self.laser0, self.laser1, self.laser2, self.laser3, self.laser4,
            self.laser5, self.laser6
        ]
        self.laserGroup = EntityGroup([])
        self.laserGroup.add(self.laser0, self.laser1, self.laser2, self.laser3,
                            self.laser4, self.laser5, self.laser6)
        self.groups.append(self.laserGroup)
        self.laser0.active = False
        self.laser1.active = False
        self.activeLG = 1  # Pair of lasers active at a given time
        self.time = 0

        self.page = Page(408, 135, self.player, director)
        self.enemyGroup.add([
            FutureSoldier(141, 1084, self.player, director),
            #                              FutureSoldier(316, 1084, self.player, director),
            #                              FutureSoldier(141, 926, self.player, director),
            FutureSoldier(316, 926, self.player, director),
            FutureSoldier(686, 1260, self.player, director),
            FutureSoldier(508, 988, self.player, director),
            FutureSoldier(537, 1450, self.player, director),
            self.page
        ])

        self.bg = load_image("map_page_img.png", Constants.MAP_DIR)
        self.collisionBg = load_image("map_page_bg.png", Constants.BG_MAP_DIR)

        self.invisibleFloor = InvisibleFloor(
            384, 202, 59, 78)  # Invisible sprite, it functions as a trigger
        self.invisibleFloorG = EntityGroup([])
        self.invisibleFloorG.add(self.invisibleFloor)
        self.groups.append(self.invisibleFloorG)

        load_music("level_four.s3m")
        pygame.mixer.music.set_volume(0.5)
        pygame.mixer.music.play(-1)

        player.setWeapons([WpnBlade("lightsaber.png", -1, pygame.Rect(128, 77, 42, 42), "sthswng1.wav", 0.2), \
                          WpnLaser()])
Beispiel #5
0
def initCaster(wrappedMap,mapInfo):
    offset_x =mapInfo.origin.position.x
    offset_y =mapInfo.origin.position.y
    resolution = mapInfo.resolution

    #Parameters of the laser
    max_range = 50.0
    no_of_beams = 181
    min_angle = -math.pi/2.0
    resolution_angle = math.pi/(no_of_beams-1)
    noise_variance = 0.0#perfect

    map_obj = Map(mapInfo.height, mapInfo.width, offset_x, offset_y, resolution, wrappedMap)
    laser = Laser(max_range, min_angle, resolution_angle, no_of_beams, noise_variance, map_obj)
    return laser
Beispiel #6
0
	def initPeriph(self):
		"""
		Initialise tout les périphériques servant à l'application (Laser, Servos, Manette nunchuk...) et instancie les objets globals.
		"""
		try:
			# GPIOs
			Methods.writeFile("/sys/class/gpio/export", "66", "a")
			Methods.writeFile("/sys/class/gpio/export", "69", "a")
			Methods.writeFile("/sys/class/gpio/export", "45", "a")

			# PWMs
			Methods.writeFile("/sys/devices/bone_capemgr.8/slots", "am33xx_pwm", "a")

			# UART
			Methods.writeFile("/sys/devices/bone_capemgr.8/slots", "BB-UART1", "a")

			sleep(2)

		except IOError:
			print "La configuration des périphériques a déjà été faites"

		# Création du laser
		self.laser = Laser(45)

		# Création de la gestion d'indication des modes
		self.modeObj = Mode(66, 69)

		# Création des servos
		self.verticalServo = Servo("P9_14", "10", False)
		self.horizontalServo = Servo("P9_22", "11", True)

		# Création de l'UART
		self.uart = UART()

		# Création du Nunchuk
		try:
			self.nunchuk = Nunchuk()
			self.nunchukIsConnected = True
		except IOError:
			print "Erreur de connexion avec la manette \"Nunchuk\""
			self.nunchukIsConnected = False
Beispiel #7
0
class GameRound:

    START_LIVES = 3

    def __init__(self, noteWars, windowWidth, windowHeight):
        self._noteWars = noteWars
        self._windowWidth = windowWidth
        self._windowHeight = windowHeight

        self._enemiesGroup = pygame.sprite.Group()
        self._enemyDelaySec = 3.0
        self._enemyElapsedDelaySec = 0.0

        self._playerGroup = pygame.sprite.GroupSingle()
        self._hudGroup = pygame.sprite.Group()

        self._score = 0
        self._lives = self.START_LIVES

    def load(self, songPath):
        # Load projectiles
        self._laser = Laser(self._windowWidth * 1.5)

        # Load player
        self._playerSpawnPos = (self._windowWidth / 2, self._windowHeight / 2)
        self._player = Player(ContentManager.load_image('media/actors/player.png'), self._laser, self._playerSpawnPos)
        self._playerGroup.add(self._player)

        # Load HUD
        fontPath = 'media/fonts/freesansbold.ttf'
        self._font = ContentManager.load_font(fontPath, 36)
        self._scoreSprite = TextSprite(self._font, pygame.Color('white'), (30, 30))
        self._livesSprite = TextSprite(self._font, pygame.Color('white'), (30, 70))
        self._livesSprite.updateText('Lives: ' + str(self._lives))
        self._hudGroup.add(self._scoreSprite, self._livesSprite)

        # Load music configuration
        #songPath = 'media/music/battlefield1942'
        #songPath = 'media/music/test'

        # Load game director
        self._gameDirector = GameDirector(self)
        self._gameDirector.load(self._player, songPath)

        # Load music
        self._musicPlayer = MusicPlayer()
        self._musicPlayer.load(songPath + '.mid')
        self._musicPlayer.play()

    def spawnEnemy(self, enemy):
        spawnSide = int(random.uniform(0, 4))
        spawnDistance = random.random()
        spawnX = 0
        spawnY = 0

        if spawnSide == 0: # Left side
            spawnX = 0
            spawnY = self._windowHeight * spawnDistance
        elif spawnSide == 1: # Top side
            spawnX = self._windowWidth * spawnDistance
            spawnY = 0
        elif spawnSide == 2: # Right side
            spawnX = self._windowWidth
            spawnY = self._windowHeight * spawnDistance
        else: # Bottom side
            spawnX = self._windowWidth * spawnDistance
            spawnY = self._windowHeight

        enemy.setPosition((spawnX, spawnY))
        self._enemiesGroup.add(enemy)

    def update(self, elapsedTimeSec):
        self._enemyElapsedDelaySec += elapsedTimeSec

        # Check for collisions
        self._checkCollisions()

        # Update game entities
        self._playerGroup.update(elapsedTimeSec)
        self._enemiesGroup.update(elapsedTimeSec)
        self._hudGroup.update(elapsedTimeSec)

        # Invoke game director
        self._gameDirector.update(elapsedTimeSec)

        # Check whether the user wants to exit the game
        pressedKeys = pygame.key.get_pressed()
        if pressedKeys[K_BACKSPACE]:
            self._exitRound()

    def stop(self):
        self._musicPlayer.stop()
        self._gameDirector.stop()

    def _handlePlayerDeath(self):
        self._lives -= 1

        if self._lives < 0:
            self.stop()
            self._noteWars.goToMainMenuWithLose(self._score)
        else:
            self._livesSprite.updateText('Lives: ' + str(self._lives))
            self._enemiesGroup.empty()
            self._player.setPosition(self._playerSpawnPos)

    def roundComplete(self):
        self.stop()
        self._noteWars.goToMainMenuWithWin(self._score)

    def _exitRound(self):
        self.stop()
        self._noteWars.goToMainMenu()

    def _checkCollisions(self):
        # Check collisions between laser and enemies
        collidedEnemies = []
        if self._laser.isFiring():
            for enemy in self._enemiesGroup.sprites():
                if CollisionMethods.collideLineToRect(self._laser.getFiredFromPos(),
                                                      self._laser.getFiredToPos(),
                                                      enemy.rect):
                    collidedEnemies.append(enemy)

            self._score += len(collidedEnemies) * 100
            self._scoreSprite.updateText('Score: ' + str(self._score))

            for enemy in collidedEnemies:
                enemy.kill()

        # Check collisions between player and enemies
        collidedEnemies = pygame.sprite.spritecollide(self._player, self._enemiesGroup, True, CollisionMethods.collideRectThenMask)
        if collidedEnemies:
            self._handlePlayerDeath()

    def draw(self, screen):
        self._laser.draw(screen)
        self._playerGroup.draw(screen)
        self._enemiesGroup.draw(screen)

        [text.render() for text in self._hudGroup.sprites()]
        self._hudGroup.draw(screen)
Beispiel #8
0
# coding:utf-8

from Laser import Laser

laser = Laser(com="COM3")
laser.start()
laser.main_loop()
asteroid_image2 = pygame.transform.scale(asteroid_image2, (40, 64))
asteroid_image2 = asteroid_image2.convert()
asteroid_image3 = pygame.image.load('asteroidimage3.png').convert()
asteroid_image2.set_colorkey((255, 0, 255))
asteroid_image2 = pygame.transform.scale(asteroid_image2, (40, 64))
asteroid_image2 = asteroid_image2.convert()
laser_image = pygame.image.load('laserimage.png').convert()
# ship_image.set_colorkey((255,255,255))
# screen.blit(ship_image,(0,0))
ship = Ship()
asteroids = Group()
asteroids.add(Asteroid())
comets = Group()
comets.add(Comet())
lasers = Group()
lasers.add(Laser(ship))
start_button = Start_Button(pygame_screen)

while running:
    tick += 1
    if tick % 30 == 0:
        asteroids.add(Asteroid())
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        elif event.type == pygame.KEYDOWN:
            # print (event.key)
            if event.key == 275:
                ship.should_move("right")
            elif event.key == 276:
                ship.should_move("left")
Beispiel #10
0
 def spawn(self, x, y, direction, obj):
     self.lasers.append(Laser(x, y, direction, self.image, obj))
Beispiel #11
0
 def shoot(self):
     if self.cool_down_counter == 0:
         laser = Laser(self.x+25, self.y, self.laser_img)
         self.lasers.append(laser)
         self.cool_down_counter = 1
class PRESURE(BMP085):
    relative_altitude = 0

    def Get_Origin_Altitude(self):              #获取原始高度
        Origin_Altitude = BMP085(0x77, 3).readAltitude()
        return Origin_Altitude
    def Get_relative_altitude(self):            #计算相对高度
        self.relative_altitude = BMP085(0x77, 3).readAltitude() - self.Get_Origin_Altitude()   #相对高度 = 实时高度 - 原始高度
        if(self.relative_altitude<1):           #相对高度小于1时不计算
            self.relative_altitude = 0
  
try:                #初始化两个激光测距模块
    i = 0
    j = 0
    laser = Laser(debug = False)
    while (i<20):               #循环测试20次
        laser.fastMeasure_1()
        i = i+1
    value_laser_1 = laser.fastMeasure_1()
    while (j<20):               #循环测试20次
        laser.fastMeasure_2()
        j = j+1
    value_laser_2 = laser.fastMeasure_2()
    print "DBG: The init laser1 data is  %.2f m" % value_laser_1
    print "DBG: The init laser2 data is  %.2f m" % value_laser_2
except:
    print("Laser init error") 
    #sys.exit(0)
try:            #初始化大气压传感器
    bmp = PRESURE(0x77, 3, debug = False)  # ULTRAHIRES Mode
Beispiel #13
0
 def Fire(self):
     shot = Laser((self.rect[0] + self.ship_midwidth, self.rect[1]),
                  self.firecolor, self.shotlength, self.firespeed,
                  self.rect[1], 15)
     return shot
Beispiel #14
0
                                  ".png")

showLives = canvas.create_image(canvas.winfo_reqwidth() - imgLives[0].width() +
                                5,
                                50,
                                image=imgLives[lives - 1])
#text showing points
showPoints = canvas.create_text(30,
                                10,
                                text='Spacebar',
                                font="neuropol.ttf 30",
                                fill="orange",
                                anchor="nw")

background_timer()  #background animation timer

player = Spaceship(canvas)  #create a player spaceship object
lasers = [Laser(canvas)] * 10  #list of laser objects
asteroids = [Asteroid(canvas)] * 20  #list of asteroid objects
spawnasteroid()

root.bind("<Motion>",
          onmousemove)  #event handling for cursor movement and keyboard clicks
root.bind("<KeyRelease>", shoot)

hit_asteroid()  #collision detection and health loss detection
hit_ship()
lose_health()

root.mainloop()  #loop the game window to keep it on
Beispiel #15
0
    def move(self):  #wasd 이동키
        pressed = pygame.key.get_pressed()
        if self.left <= 400 and self.Start == False:
            self.Num = 1
        elif self.left < self.topBU:
            self.topBU = self.left
            self.Num = 1
        else:
            self.topBU = self.left
            self.Num = 0
        if self.Start == False:
            if pressed[pygame.K_UP] != 1 and pressed[pygame.K_DOWN] != 1:
                if self.left <= 800:
                    self.left += 10
            if pressed[pygame.K_UP]:
                if (400 < self.left):
                    self.left -= 15
            if pressed[pygame.K_DOWN]:
                if (self.left < 800):
                    self.left += 15

            if pressed[pygame.K_RIGHT]:
                if (self.top < 600):
                    self.top += 15
            if pressed[pygame.K_LEFT]:
                if (0 < self.top):
                    self.top -= 15
            if pressed[pygame.K_SPACE]:  # 스페이스바를 눌렀을 경우
                if self.shot_flag:  # 먼저 shot_flag의 값 확인(초기에 True로 설정)
                    if self.weapon == "Sector":
                        self.sector_shot()
                        self.shot_flag = False
                    elif self.weapon == "Normal":
                        self.shot()  # 화살이 생성됨
                        self.shot_flag = False
                    elif self.weapon == "Laser":
                        laser = Laser(self.screen, self.top - 25, self.left,
                                      self.lasertime, self.lasernum)
                        if self.charge == 0:
                            self.laser_shot()
                            self.charge = 50
                            self.shot_flag = False
                            if self.lasertime != 2:
                                self.lasertime = 2
                                self.lasernum = 0
                        else:
                            if self.lasertime == 0:
                                self.lasernum += 1
                                self.lasertime = 2
                            else:
                                self.lasertime -= 1
                            if self.lasernum == 13:
                                self.lasernum = 0
                            laser.charge()
                            self.charge -= 1
            else:
                self.charge = 50
                self.lasertime = 2
                self.lasernum = 0
                self.shot_flag = True

            if pressed[pygame.K_x]:
                if self.weapon_flag:
                    if self.weapon == "Normal":
                        self.menuX = 580
                        self.weapon = "Sector"
                    elif self.weapon == "Sector":
                        self.menuX = 630
                        self.weapon = "Laser"
                    elif self.weapon == "Laser":
                        self.menuX = 530
                        self.weapon = "Normal"
                    self.weapon_flag = False
            elif pressed[pygame.K_z]:
                if self.weapon_flag:
                    if self.weapon == "Normal":
                        self.menuX = 630
                        self.weapon = "Laser"
                    elif self.weapon == "Sector":
                        self.menuX = 530
                        self.weapon = "Normal"
                    elif self.weapon == "Laser":
                        self.menuX = 580
                        self.weapon = "Sector"
                    self.weapon_flag = False
            else:
                self.weapon_flag = True

        elif self.Start == True:
            self.left += 0
        else:
            if self.left <= 800:
                self.left += 10

        for sector in self.arrows:
            if sector.name == "Sector":
                if sector.timer >= 8:
                    self.arrows.remove(sector)

        for arrow in self.arrows:
            arrow.move()  #화살이 날아감

        if self.collidercheck == False:
            image = pygame.Surface((100, 100))
            image.blit(self.playerlist[self.Num], (0, 0))
            image.set_colorkey((0, 0, 0))
            image.set_alpha(self.alpha)
            self.screen.blit(image, (self.top - 25, self.left))
            if self.alpha == 255 and self.playertimer == 0:
                self.alpha = 0
                self.playertimer = 3
            else:
                self.playertimer -= 1
                self.alpha = 255
        elif self.collidercheck == True:
            self.screen.blit(self.playerlist[self.Num],
                             (self.top - 25, self.left))
Beispiel #16
0
def playgame(game):
    # Repainting screen
    game.clear_screen()

    # draw ship
    game.player.render()

    # Display game stats
    game.display_game_stats()

    # Event player dies
    if game.player.health <= 0:
        game.gameover = True
        # sound effect gameover
        game.sfx['gameover'].play()

    # TODO add game over when time runs out in game, Limit Time is 30
    # game.playtime --> variable tracks time in game

    # Events with user input
    # if pressed keys is left
    if game.pressedkeys[pygame.K_LEFT]:
        game.player.move_left(game.seconds)
    # if pressed keys is right
    if game.pressedkeys[pygame.K_RIGHT]:
        game.player.move_right(game.seconds)
    # if pressed keys is down
    if game.pressedkeys[pygame.K_DOWN]:
        game.player.move_down(game.seconds)
    # if pressed keys is up
    if game.pressedkeys[pygame.K_UP]:
        game.player.move_up(game.seconds)
    # if pressed keys is space
    if game.pressedkeys[pygame.K_SPACE]:
        # when delay is done, player can shoot
        if game.player.can_shoot() == True:
            # laser is spawned
            laser = Laser(game.player.pos_x, game.player.pos_y, game.screen)
            game.lasers.append(laser)
            # sound effect laser
            game.sfx['laser'].play()

    # TODO player can shoot with a different key, Key = 1
    # Look at example above, we can shoot with the space key
    # You can copy down code too!

    # TODO create laser_damage variable with the value of 25

    # updates laser
    for laser in game.lasers:
        bounds = laser.update(game.seconds)
        if bounds is False:
            # deletes laser from game once it is out of the screen
            game.lasers.remove(laser)
        else:
            # laser hits one of the enemies
            hit = laser.hit(game.enemies)
            if hit:
                # laser is deleted
                game.lasers.remove(laser)
                # health enemy goes down
                hit.health = hit.health - 25
                # sound effect hit
                game.sfx['hit'].play()

    # updates enemy laser
    for laserEnemy in game.lasersEnemy:
        bounds = laserEnemy.update(game.seconds)
        if bounds is False:
            # deletes laser from game once it is out of the screen
            game.lasersEnemy.remove(laserEnemy)
        else:
            # laser hits the player
            hit = laserEnemy.hit(game.player.pos_x, game.player.pos_y)
            if hit:
                # laser is deleted
                game.lasersEnemy.remove(laserEnemy)
                # health player goes down
                game.player.health = game.player.health - 25
                # sound effect hit
                game.sfx['hit'].play()

    # updates enemy
    for enemy in game.enemies:
        enemy.update(game.seconds)
        # enemy dies at zero HP
        if enemy.health <= 0:
            # enemy is deleted
            game.enemies.remove(enemy)
            game.score = game.score + 50
            # sound effect explosion
            game.sfx['explosion'].play()
        # if enemy can shoot, shoot
        if enemy.can_shoot():
            laserEnemy = LaserEnemy(enemy, game.screen)
            game.lasersEnemy.append(laserEnemy)

    # when all enemies die, level up!
    if len(game.enemies) == 0:
        game.level_up()
        # TODO add to game score when level up, value of 50
offset_x = 0.0
offset_y = 0.0
resolution = 0.1
# Create map and laser scans
occ_map = Map.readFromTXT('../map.txt', width, height, offset_x, offset_y,
                          resolution)

max_range = 50.0
no_of_beams = 181
min_angle = -math.pi / 2.0
resolution_angle = math.pi / (no_of_beams - 1)
noise_variance = 0.0
laser_pos_x = 1.2
laser_pos_y = 0.0
laser_angle = 0.0 * (math.pi / 180.0)
laser = Laser(max_range, min_angle, resolution_angle, no_of_beams,
              noise_variance, occ_map, laser_pos_x, laser_pos_y, laser_angle)

# load positions
positions = np.loadtxt('../data_pose.txt')
# load laser
ranges = np.loadtxt('../map_scans.txt')

assert (positions.shape[0] == ranges.shape[0])

n = 5
# sample n random scans from
pidx = np.random.randint(0, positions.shape[0], n)

sum_mse = 0
clump = 11
# Generate scans with python and compare
background_image = pygame.image.load('background1.png')
ship_image = pygame.image.load('shipimage.png')
comet_image = pygame.image.load('cometimage.png')
candy_image = pygame.image.load('candyimage.png')
asteroid_image1 = pygame.image.load('asteroidimage1.png')
asteroid_image2 = pygame.image.load('asteroidimage2.png')
asteroid_image3 = pygame.image.load('asteroidimage3.png')
laser_image = pygame.image.load('laserimage.png')

ship = Ship()
asteroids = Group()
asteroids.add(Asteroid())
comets = Group()
comets.add(Comet())
lasers = Group() 
lasers.add(Laser())
start_button = Start_Button(pygame_screen)

while running:
    tick += 1  
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        elif event.type == pygame.KEYDOWN:
            # print (event.key)
            if event.key == 275:
                ship.should_move("right")
            elif event.key == 276:
                ship.should_move("left")
            if event.key == 273:
                ship.should_move("up")
Beispiel #19
0
 def fire(self):
     missile = Laser(self.game_batch, self.objects, self.x, self.y,
                     self.rotation, self.x_speed, self.y_speed)
     self.objects.append(missile)
Beispiel #20
0
class App():
	"""
	Démarre une application qui permet de gérer la position sur deux axes d'un laser via des servomoteurs.
	"""
	def __init__(self):
		"""
		Méthode "main" de l'application.
		"""
		print "Initialisation des péripheriques..."
		self.initPeriph()
		print "Initialisation des servos..."
		self.initServos()
		print "Initialisation terminée !"

		print "Programme prêt !"
		print ""

		#################################################
					
		self.mode = "Manual"
		self.modeObj.setMode(self.mode)

		# Création des formes
		self.shape = Shape(self.horizontalServo, self.verticalServo, self.laser, self.uart)

		try:
			while 1:
				self.reading = self.uart.read()
				if self.reading != "Up" and self.reading != "Left" and self.reading != "Right" and self.reading != "Down" and self.reading != "Center" and self.reading != "Laser" and self.reading != "":
					self.mode = self.reading
					self.modeObj.setMode(self.mode)

				if self.mode == "Auto":
					self.autoMode()
				elif self.mode == "Semi-auto":
					self.semiAutoMode()
				elif self.mode == "Manual":
					self.manualMode()
				elif self.mode == "Wii":
					if self.nunchukIsConnected:
						self.wiiMode()
					else:
						print "La manette \"Nunchuk\" n'est pas connectée"
						self.mode = "Manual"
				else:
					sleep(2)
					self.mode = "Auto"
					self.modeObj.setMode(self.mode)
		except KeyboardInterrupt:
			print "Arret du programme..."
			self.modeObj.setMode("Stop")
			self.laser.OFF()
			self.initServos()
			print "Programme arreté"

	def initPeriph(self):
		"""
		Initialise tout les périphériques servant à l'application (Laser, Servos, Manette nunchuk...) et instancie les objets globals.
		"""
		try:
			# GPIOs
			Methods.writeFile("/sys/class/gpio/export", "66", "a")
			Methods.writeFile("/sys/class/gpio/export", "69", "a")
			Methods.writeFile("/sys/class/gpio/export", "45", "a")

			# PWMs
			Methods.writeFile("/sys/devices/bone_capemgr.8/slots", "am33xx_pwm", "a")

			# UART
			Methods.writeFile("/sys/devices/bone_capemgr.8/slots", "BB-UART1", "a")

			sleep(2)

		except IOError:
			print "La configuration des périphériques a déjà été faites"

		# Création du laser
		self.laser = Laser(45)

		# Création de la gestion d'indication des modes
		self.modeObj = Mode(66, 69)

		# Création des servos
		self.verticalServo = Servo("P9_14", "10", False)
		self.horizontalServo = Servo("P9_22", "11", True)

		# Création de l'UART
		self.uart = UART()

		# Création du Nunchuk
		try:
			self.nunchuk = Nunchuk()
			self.nunchukIsConnected = True
		except IOError:
			print "Erreur de connexion avec la manette \"Nunchuk\""
			self.nunchukIsConnected = False
	def initServos(self):
		"""
		Initialise les servomoteurs à la position 0,0 et éteint le laser.
		"""
		self.horizontalServo.setPosition(0)
		self.verticalServo.setPosition(0)
		Methods.sendData(self.uart, 0, 0, self.laser.getState())

	def autoMode(self):
		"""
		Gére le mode "Auto" de l'application. Le mode "Auto" réalise une succession de toutes les formes pré-enregistré en boucle.
		"""
		while 1:
			self.laser.ON()
			print "Dessine un carré"
			self.shape.startShape("Square", 2)
			self.initServos()

			self.reading = self.uart.read()
			if self.reading == "Auto":
				self.reading = self.uart.read()
			if self.uart.inWaiting() != 0:
				break
			sleep(2)
			print "Dessine un losange"
			self.shape.startShape("Diamond", 3)
			self.initServos()

			if self.uart.inWaiting() != 0:
				break
			sleep(2)
			print "Dessine un cercle"
			self.shape.startShape("Circle", 3)
			self.initServos()
			
			if self.uart.inWaiting() != 0:
				break
			sleep(2)
			print "Dessine un infini"
			self.shape.startShape("Infinite", 3)
			self.initServos()
			sleep(2)
			break
	def semiAutoMode(self):
		"""
		Gére le mode "Semi-auto" de l'application. Le mode "Semi-auto" réalise les formes demandées via l'IHM.
		"""
		self.laser.OFF()
		horizontalPositionTable = []
		verticalPositionTable = []
		laserStateTable = []

		while 1:
			pointDatas = self.uart.read()
			if pointDatas == "Finish":
				break
			if pointDatas != "Semi-auto":
				if pointDatas == "Square":
					print "Dessine un carré"
					self.shape.startShape(pointDatas, 1)
					self.initServos()
				elif pointDatas == "Diamond":
					print "Dessine un losange"
					self.shape.startShape(pointDatas, 1)
					self.initServos()
				elif pointDatas == "Circle":
					print "Dessine un cercle"
					self.shape.startShape(pointDatas, 1)
					self.initServos()
				elif pointDatas == "Infinite":
					print "Dessine un infini"
					self.shape.startShape(pointDatas, 1)
					self.initServos()
				else:
					pointDatasTable = pointDatas.split(",")
					horizontalPositionTable.append(int(pointDatasTable[0])*2)
					verticalPositionTable.append(int(pointDatasTable[1])*2)
					laserStateTable.append(pointDatasTable[2])

		if len(horizontalPositionTable) != 0:
			print "Dessine une forme personnalisé"
			self.shape.start(horizontalPositionTable, verticalPositionTable, laserStateTable)
		self.laser.OFF()
		self.mode = "Manual"
	def manualMode(self):
		"""
		Gére le mode "Manuel" de l'application. Le mode "Manuel" réalise les mouvements simples via l'IHM (Déplacement vert le Haut, la droite, allumer le laser...).
		"""
		for i in range(100):
			self.reading = self.uart.read()
			hPos = self.horizontalServo.getPosition()
			vPos = self.verticalServo.getPosition()
			if self.reading != "":
				if self.reading == "Up":
					vPos+=2
				elif self.reading == "Left":
					hPos-=2
				elif self.reading == "Right":
					hPos+=2
				elif self.reading == "Down":
					vPos-=2
				elif self.reading == "Center":
					hPos = 0
					vPos = 0
				elif self.reading == "Laser":
					if self.laser.getState() == "0":
						self.laser.ON()
					else:
						self.laser.OFF()
				else:
					break
				
				self.horizontalServo.setPosition(hPos)
				self.verticalServo.setPosition(vPos)
				
			Methods.sendData(self.uart, self.horizontalServo.getPosition(), self.verticalServo.getPosition(), self.laser.getState())
			sleep(0.01)
	def wiiMode(self):
		"""
		Gére le mode "Wii" de l'application. Le mode "Wii" réalise les actions via la manette nunchuk.
		"""
		buttons = self.nunchuk.getButtons()
		button_c = buttons[0]
		button_z = buttons[1]

		if button_z:
			self.laser.ON()
		else:
			self.laser.OFF()

		if button_c:
			axis = self.nunchuk.getAccelerometerAxis()
			hAngle = int(axis[0]*1.8-216.0)# Min=70 ; Max=170
			vAngle = int(axis[1]*-1.8+225.0)# Min=175 ; Max=75
		else:
			position = self.nunchuk.getJoystickPosition()
			hAngle = int(position[0]*0.93-123.58)# Min=36 ; Max=229
			vAngle = int(position[1]*0.95-120.48)# Min=32 ; Max=221

		self.horizontalServo.setPosition(hAngle)
		self.verticalServo.setPosition(vAngle)
		Methods.sendData(self.uart, self.horizontalServo.getPosition(), self.verticalServo.getPosition(), self.laser.getState())
		sleep(0.01)
Beispiel #21
0
  plt.imshow(occ_map, cmap='Greys_r')
  plt.show()

  offset_x =0.0
  offset_y =0.0
  resolution = 0.1

  max_range = 50.0
  no_of_beams = 181
  min_angle = -math.pi/2.0
  resolution_angle = math.pi/(no_of_beams-1)
  noise_variance = 0.0

  map_obj = Map(height, width, offset_x, offset_y, resolution, occ_map)
  laser = Laser(max_range, min_angle, resolution_angle, no_of_beams, noise_variance, map_obj)

  robot_pos_x = 6.0
  robot_pos_y = 5.0
  robot_theta = 0.0 * (math.pi/180.0)

  laser_pos_x = 1.2
  laser_pos_y = 0.0
  laser_angle = 0.0 * (math.pi/180.0)

  sin_theta = math.sin(robot_theta)
  cos_theta = math.cos(robot_theta)
  x = robot_pos_x + laser_pos_x * cos_theta - laser_pos_y*sin_theta
  y = robot_pos_y + laser_pos_x * sin_theta + laser_pos_y*cos_theta
  theta = robot_theta + laser_angle
Beispiel #22
0
    plt.imshow(occ_map, cmap='Greys_r')
    plt.show()

    offset_x = 0.0
    offset_y = 0.0
    resolution = 0.1

    max_range = 50.0
    no_of_beams = 181
    min_angle = -math.pi / 2.0
    resolution_angle = math.pi / (no_of_beams - 1)
    noise_variance = 0.0

    map_obj = Map(height, width, offset_x, offset_y, resolution, occ_map)
    laser = Laser(max_range, min_angle, resolution_angle, no_of_beams,
                  noise_variance, map_obj)

    robot_pos_x = 6.0
    robot_pos_y = 5.0
    robot_theta = 0.0 * (math.pi / 180.0)

    laser_pos_x = 1.2
    laser_pos_y = 0.0
    laser_angle = 0.0 * (math.pi / 180.0)

    sin_theta = math.sin(robot_theta)
    cos_theta = math.cos(robot_theta)
    x = robot_pos_x + laser_pos_x * cos_theta - laser_pos_y * sin_theta
    y = robot_pos_y + laser_pos_x * sin_theta + laser_pos_y * cos_theta
    theta = robot_theta + laser_angle
Beispiel #23
0
 def Fire(self):
     theshot = Laser((self.rect[0] + self.ship_midwidth,
                      self.rect[1] + self.firebaseline), self.firecolor,
                     self.shot_height, self.firespeed,
                     self.rect[1] + self.firebaseline, 0)
     return theshot
Beispiel #24
0
 def laser_shot(self):
     laser = Laser(self.screen, self.top - 25, self.left, self.lasertime,
                   self.lasernum)
     self.arrows.append(laser)
Beispiel #25
0
def gaming_loop():
    global bullet_state, bullet_x, bullet_y
    running = True
    laser = Laser(random.randint(0, 1336), 0)
    while running:
        screen.fill((0, 0, 0))
        screen.blit(background, (0, 0))
        pygame.draw.line(screen, light_red, (0, 615), (1400, 620), 5)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    current_player.x_change = -30
                elif event.key == pygame.K_RIGHT:
                    current_player.x_change = 30
                elif event.key == pygame.K_SPACE:
                    if bullet_state == "fire":
                        fire_bullet(bullet_x, bullet_y)
                    else:
                        bullet_sound = mixer.Sound("laser.mp3")
                        bullet_sound.play()
                        bullet_x = current_player.x
                        bullet_y = 680
                        fire_bullet(bullet_x, bullet_y)
                elif event.key == pygame.K_p:
                    pause()
            if event.type == pygame.KEYUP:
                if event.key == pygame.K_LEFT:
                    current_player.x_change = 0
                elif event.key == pygame.K_RIGHT:
                    current_player.x_change = 0

        laser.y += laser.y_change
        current_player.x += current_player.x_change
        screen.blit(Laser.laser_img, (laser.x, laser.y))
        if current_player.x <= 0:
            current_player.x = 0
        if current_player.x >= 1400 - 88:
            current_player.x = 1400 - 88
        if laser.y > 800:
            laser = Laser(random.randint(0, 1336), 0)

        for enemy in enemy_list:
            if enemy.y > 600 or laser.x in range(
                    current_player.x - 8,
                    current_player.x + 86) and laser.y in range(
                        current_player.y, current_player.y + 84):
                mixer.music.stop()
                for individual_enemy in enemy_list:
                    individual_enemy.y = 900
                    game_over_text()
                    show_button("Main",
                                240,
                                450,
                                150,
                                100,
                                yellow,
                                light_yellow,
                                action="Main")
                    show_button("Quit",
                                950,
                                450,
                                150,
                                100,
                                red,
                                light_red,
                                action="Quit")

            else:
                enemy.move()

            collision = collision_check(enemy.x, enemy.y, bullet_x, bullet_y)
            if collision:
                explosion_sound = mixer.Sound("Explosion-n.mp3")
                explosion_sound.play()
                bullet_y = 680
                bullet_state = "ready"
                global score_value
                score_value += 1

                enemy.x = random.randint(0, 1328)
                enemy.y = random.randint(50, 150)
            enemy.draw_enemy(enemy.x, enemy.y, screen)

            if bullet_state == "fire":
                if bullet_y < 0:
                    bullet_y = 680
                    bullet_state = "ready"
                else:
                    fire_bullet(bullet_x, bullet_y)
                    bullet_y -= bullet_y_change

            current_player.draw_player(current_player.x, current_player.y,
                                       screen)

            show_score(text_x, text_y)

            clock.tick(120)
        pygame.display.update()
Beispiel #26
0
    else:
        print "usage: RunPF.py Data.pickle numParticles (optional, default=100)"
        sys.exit(2)

    # Load data
    Data = pickle.load(open(sys.argv[1], 'rb'))
    deltat = Data['deltat']  #[0,0]
    occupancy = Data['occupancy']
    U = Data['U']
    X0 = Data['X0']
    Ranges = Data['Ranges']
    XGT = Data['XGT']
    Alpha = Data['Alpha']
    sparsity = 5

    numBearings = Ranges[0, 0].shape[0]
    Ranges = np.array(Ranges.tolist())[:, :, ::sparsity]

    # Gridmap class
    gridmap = Gridmap(occupancy)

    # Laser class
    laser = Laser(numBearings, sparsity)

    # Instantiate the PF class
    pf = PF(numParticles, Alpha, laser, gridmap, True)

    filename = os.path.basename(
        sys.argv[1]).split('.')[0] + '_Pn' + str(numParticles) + '_gauss'
    pf.run(U, Ranges, deltat, X0, XGT, filename, True, sys.argv[3])
Beispiel #27
0
# coding:utf-8

from Laser import Laser
import config

laser = Laser(com=config.PORT)
laser.start()
laser.main_loop()
Beispiel #28
0
        'RShoulderRoll': 0,
        'RElbowYaw': 1.7,
        'RElbowRoll': 1.4,
        'RWristYaw': -1.5
    }

    simulation_manager = SimulationManager()
    client_id = simulation_manager.launchSimulation(gui=True)

    if not DEMO_CAM_HUMAN:
        pepper = simulation_manager.spawnPepper(client_id,
                                                spawn_ground_plane=True,
                                                translation=[-3, -1, 0])
        cam = Cam(pepper, "top_cam", do_predictions=DEMO_TURN_TO_OBJ)
        cam.start()
        laser = Laser(pepper)
        laser.start()
        goToPosture(pepper, defaultPosture)

    if DEMO_CAM_HUMAN:
        human = simulation_manager.spawnPepper(client_id,
                                               spawn_ground_plane=True,
                                               translation=[0, 0, 0])
        humanCam = HumanCam(human)
        humanCam.start()

    p.connect(p.DIRECT)

    if DEMO_BRING_BACK_CHAIR and not DEMO_TURN_TO_OBJ:
        chair = p.loadURDF("urdf/chair_1/chair.urdf",
                           basePosition=[0, -1, 0],
Beispiel #29
0
    now_Thread = 0
    flags = [False, False, False, False, False, False, False, False, False]
    thread_flags = [False, False, False, False, False]
    GPIO.cleanup()
    sensing_Rover = Sensing_Rover()

    pcf8591 = Pcf8591(0x48)
    gas = Gas(pcf8591, ain=2)
    thermister = Thermistor(pcf8591, ain=1)
    tracking = Tracking(32)
    photoresister = Photoresister(pcf8591, ain=0)
    ultra = HcSr04(trigpin=38, echopin=40)
    queue = queue.Queue()
    rgbLed = RgbLed(16, 18, 22)
    buzzer = Buzzer(35)
    laser = Laser(37)
    lcd = Lcd1602(0x27)

    pca9685 = Pca9685()
    dc_left = DC(11, 12, pca9685)
    dc_right = DC(13, 15, pca9685)
    channel_left = 5
    channel_right = 4
    set_speed = 80

    sv = Sg90(pca9685, 0)  # 5~90도   (default = 12도, 줄어들면 LOWER, 커지면 HIGHER)
    sh = Sg90(pca9685, 1)  # 12~170도   (default = 90도, 줄어들면 RIGHT, 커지면 LEFT)
    sw = Sg90(pca9685, 14)  # 50~130도   (default = 90도, 줄어들면 LEFT, 커지면 RIGHT)
    su = Sg90(pca9685, 15)  # 40~120도   (default = 80도, 줄어들면 RIGHT, 커지면 LEFT)

    publiser_camera = Publisher_camera("192.168.3.177", 1883, "/camerapub")
Beispiel #30
0
import datetime
import json
import RPi.GPIO as GPIO
from Laser import Laser
import time

default_configuration = '{"run_time": 5, "min_movement": 12, "x_min": 0.1, "x_max": 90, "y_min": 0.1, "y_max": 22}'
GPIO_BUTTON = 26
laser = Laser()

config = json.loads(default_configuration)
run_time = config.get('run_time')


def __button_handler(channel):
    print('button has been pressed...')

    global engage

    if engage:
        print('Already firing the laser, button press ignored')
    else:
        print('Initiating Firing Sequence!')
        # only start a new firing sequence if we're not already in the middle of one.
        engage = True
        __calibrate_laser()


def end():
    end_time = start_time + datetime.timedelta(seconds=run_time)
    return end_time
width = 617
offset_x =0.0
offset_y =0.0
resolution = 0.1
# Create map and laser scans
occ_map = Map.readFromTXT('../map.txt', width, height, offset_x, offset_y, resolution)

max_range = 50.0
no_of_beams = 181
min_angle = -math.pi/2.0
resolution_angle = math.pi/(no_of_beams-1)
noise_variance = 0.0
laser_pos_x = 1.2
laser_pos_y = 0.0
laser_angle = 0.0 * (math.pi/180.0)
laser = Laser(max_range, min_angle, resolution_angle, no_of_beams, noise_variance, occ_map, laser_pos_x, laser_pos_y, laser_angle)


# load positions
positions = np.loadtxt('../data_pose.txt')
# load laser
ranges = np.loadtxt('../map_scans.txt')

assert( positions.shape[0] == ranges.shape[0] )

n = 5
# sample n random scans from
pidx = np.random.randint(0, positions.shape[0], n)

sum_mse = 0
clump = 11