Ejemplo n.º 1
0
 def get_lines(self):
     """Returns edges of rectangle as a list of 4 barriers"""
     c = self.get_corners()
     return [Barrier(c[0][0], c[0][1], c[1][0], c[1][1]),
             Barrier(c[1][0], c[1][1], c[2][0], c[2][1]),
             Barrier(c[2][0], c[2][1], c[3][0], c[3][1]),
             Barrier(c[3][0], c[3][1], c[0][0], c[0][1])]
Ejemplo n.º 2
0
def run_game():
    pygame.init()
    ai_settings = Settings()
    screen = pygame.display.set_mode(
        (ai_settings.screen_width, ai_settings.screen_height))
    pygame.display.set_caption("Space Invaders")

    music = pygame.mixer.Sound("Sounds/space_music.wav")

    play_button = Button(ai_settings, screen, "Play", (600, 50))
    barrier = Barrier(ai_settings, screen)
    ship = Ship(ai_settings, screen)

    stats = GameStats(ai_settings)
    sb = Scoreboard(ai_settings, screen, stats)

    bullets = Group()
    aliens = Group()

    gm.create_fleet(ai_settings, screen, ship, aliens)
    gm.create_barriers(ai_settings, screen)

    while True:
        music.play()
        gm.check_events(ai_settings, screen, stats, sb, play_button, ship,
                        aliens, bullets)
        bullets.update()
        ship.update()
        barrier.update()
        gm.update_aliens(ai_settings, screen, stats, sb, ship, aliens, bullets)
        gm.update_bullets(ai_settings, screen, stats, sb, ship, aliens,
                          bullets)
        gm.update_screen(ai_settings, screen, stats, sb, ship, aliens, bullets)

        pygame.display.flip()
Ejemplo n.º 3
0
    def __init__(self,
                 model,
                 target_dist,
                 weights=None,
                 horizon=100,
                 num_basis=5,
                 capacity=100000,
                 batch_size=20):

        self.model = model
        self.target_dist = target_dist
        self.horizon = horizon
        self.replay_buffer = ReplayBuffer(capacity)
        self.batch_size = batch_size

        self.basis = Basis(self.model.explr_space, num_basis=num_basis)
        #         self.lamk  = 1.0/(np.linalg.norm(self.basis.k, axis=1) + 1)**(3.0/2.0)
        self.lamk = np.exp(-0.8 * np.linalg.norm(self.basis.k, axis=1))
        self.barr = Barrier(self.model.explr_space)
        # initialize the control sequence
        # self.u_seq = [np.zeros(self.model.action_space.shape)
        #                 for _ in range(horizon)]
        self.u_seq = [
            0.0 * self.model.action_space.sample() for _ in range(horizon)
        ]
        if weights is None:
            weights = {'R': np.eye(self.model.action_space.shape[0])}

        self.Rinv = np.linalg.inv(weights['R'])

        self._phik = None
        self.ck = None
Ejemplo n.º 4
0
    def __init__(self, agent_name, model,
                    weights=None, t_horizon=10, num_basis=5,
                    capacity=100000, batch_size=20):

        self._agent_name     = agent_name
        self._model          = model
        self._t_horizon        = t_horizon
        self._replay_buffer = ReplayBuffer(capacity)
        self._batch_size    = batch_size

        self._basis = Basis(self._model.explr_space, num_basis=num_basis)
        self._lamk  = np.exp(-0.8*np.linalg.norm(self._basis.k, axis=1))
        self._barr  = Barrier(self._model.explr_space)

        self._targ_dist = TargetDist(basis=self._basis)

        self._u = [0.0*np.zeros(self._model.action_space.shape[0])
                        for _ in range(t_horizon)]
        # TODO: implement more weights
        if weights is None:
            weights = {'R' : np.eye(self._model.action_space.shape[0])}
        self._Rinv = np.linalg.inv(weights['R'])

        self._phik      = None
        self._ck_mean = None
        self._ck_msg    = Ck()
        self._ck_msg.name = self._agent_name
        self._ck_dict   = {}

        self.pred_path = []

        # set up the eos stuff last
        rospy.Subscriber('ck_link', Ck, self._ck_link_callback)
        self._ck_pub = rospy.Publisher('ck_link', Ck, queue_size=1)
Ejemplo n.º 5
0
 def __init__(self, duration=0, distance=None):
     object.__init__(self)
     self.duration = duration
     self.curr_val = None
     self.barrier = Barrier()
     self.distance = distance
     self.schmitt_low = None
     self.schmitt_high = None
Ejemplo n.º 6
0
def create_barriers(ai_settings, screen, ship, barriers):
    barrier = Barrier(ai_settings, screen)
    number_of_barriers = math.floor(ai_settings.screen_width / 240)

    for barrier_number in range(number_of_barriers):
        barrier = Barrier(ai_settings, screen)
        barrier.rect.top = ship.rect.top - 50
        barrier.rect.left = barrier_number * 240 + 80
        barriers.add(barrier)
Ejemplo n.º 7
0
 def __init__(self, walls, people, extra_barriers = None, name = None,
              transm_prob = 1, death_rate = 0.1, recovery_time = 2):
     x1, x2, y1, y2 = walls
     self._barriers = 4*[None]
     self._barriers[0] = Barrier(np.array([x1, y1]), np.array([x1, y2]))
     self._barriers[1] = Barrier(np.array([x1, y2]), np.array([x2, y2]))
     self._barriers[2] = Barrier(np.array([x2, y2]), np.array([x2, y1]))
     self._barriers[3] = Barrier(np.array([x2, y1]), np.array([x1, y1]))
     self._people = people
     for person in people:
         assert(people[0].radius == person.radius)
     max_speed = 0
     for person in people:
         speed = norm(person.vel)
         if speed > max_speed:
             max_speed = speed
     self._delta_t = 0.5 * people[0].radius / max_speed
     self._transmission_prob = transm_prob
     self._death_rate = death_rate
     self._recovery_time = recovery_time
     self._total_healthy = 0
     self._total_sick = 0
     self._total_dead = 0
     self._total_recovered = 0
     self._R = 0
     for person in people:
         if person.health == 'healthy':
             self._total_healthy += 1
         elif person.health == 'sick':
             self._total_sick += 1
         elif person.health == 'recovered':
             self._total_sick += 1
     self._name = name
     self._time = 0
     if name is not None:
         if not os.path.isdir(name):
             try:
                 os.mkdir(name)
             except(FileNotFoundError):
                 os.makedirs(name, exist_ok=True)
         os.chdir(name)
     if not os.path.isdir('states'):
         os.mkdir('states')
     self._files = [open('states/sim_person_%i.csv' % i, 'w') for i in range(len(people))]
     self._files.append(open('states/stats.csv', 'w'))
     for f in self._files[:-1]:
         f.write('time,x,y,health,num_infected\n')
     self._files[-1].write('time,healthy,sick,recovered,dead,R\n')
Ejemplo n.º 8
0
 def update_obstacles(self):
     for obstacle in self.obstacles:
         obstacle.update()
         #Add new obstacles if needed
     if self.obstacles[-1].pos <= self.width:
         self.obstacles.append(Barrier(pos = self.width + self.distance_between_obstacles, width = 50))
     
     #Remove old obstacles if needed
     if self.obstacles[0].pos + self.obstacles[0].width <= -50:
         self.obstacles.remove(self.obstacles[0])
Ejemplo n.º 9
0
 def __init__(self):
     pygame.init()
     self.lifes = [
         pyg.image.load("lifes.png"),
         pyg.image.load("lifes.png"),
         pyg.image.load("lifes.png"),
         pyg.image.load("lifes.png"),
         pyg.image.load("lifes.png")
     ]
     self.isgame = True
     self.moving_flag = True
     self.win = pygame.display.set_mode((500, 600))
     pygame.display.set_caption("Space Invadors")
     self.ship = Ship(self.win)
     self.barrier_1 = Barrier(100, 450, self.win)
     self.barrier_2 = Barrier(300, 450, self.win)
     self.enemys = [Enemy(self.win, x, 100) for x in range(30, 425, 55)]
     self.enemys += [Enemy(self.win, x, 225) for x in range(20, 435, 45)]
     self.count = 0
Ejemplo n.º 10
0
    def setup_devices(self, devices):
        """
        Setup the devices before simulation begins.

        @type devices: List of Device
        @param devices: list containing all devices
        """
        if self.device_id == 0:
            self.barrier = Barrier(len(devices))
            self.send_barrier(devices, self.barrier)
Ejemplo n.º 11
0
 def initialize(grid_size, player_pos, barrier_h, barrier_x_list,
                train_file):
     game = Game()
     game.grid = g.Grid(grid_size)
     game.player = Player(player_pos)
     game.barrier = Barrier(barrier_h, barrier_x_list)
     game.barrier.createNN()
     game.barrier.brain.importNN(train_file)
     game.update_grid()
     return game
Ejemplo n.º 12
0
class SamplingBuffer(object):
    def __init__(self,
                 sampling_interval=None,
                 sampling_freq=None,
                 initial_value=None):
        """
        if value is put too fast, `get` method should limit this speed with "sample interval" parameter.

        if value is got too slow, `get` method should return immediately

        """
        if sampling_interval:
            self.sampling_interval = sampling_interval
        elif sampling_freq:
            self.sampling_interval = (1.0 / sampling_freq)
        else:
            self.sampling_interval = 0.01  # 10 ms default value

        self.curr_val = initial_value
        self.last_timestamp = 0
        self.put_barrier = Barrier()
        self.fine_tune_last_wait = 0.005  # seconds

    def put(self, value):
        self.curr_val = value
        self.put_barrier.go()

    def get(self):
        while True:
            remaining_time = self.last_timestamp + self.sampling_interval - time.time(
            )
            #print "remaining time: ", remaining_time
            if remaining_time <= 0:
                self.put_barrier.wait()
                self.last_timestamp = time.time()
                return self.curr_val
            else:
                if remaining_time > self.fine_tune_last_wait:
                    sleep(remaining_time - self.fine_tune_last_wait)
                else:
                    # try to wait in the end very precisely
                    sleep(remaining_time / 2)
Ejemplo n.º 13
0
def makeBarriers(barriers, screen, ai_settings):
    xTemp = ai_settings.screen_width / 4 - 40
    yTemp = 4 * ai_settings.screen_height / 5
    for j in range(3):
        for n in range(2):
            for i in range(7):
                newBarrier = Barrier(screen, ai_settings)
                newBarrier.rect.x = xTemp + (i * 10)
                newBarrier.rect.y = yTemp + (20 * n)
                barriers.add(newBarrier)
        xTemp += ai_settings.screen_width / 4
Ejemplo n.º 14
0
 def create(self, key, row, col):
     if key == "G":
         Goblin(row, col, self)
     elif key == "S":
         Snake(row, col, self)
     elif key == "#":
         Barrier(row, col, self)
     elif key == "P":
         Player(row, col, self)
     elif key == "T":
         Treasure(row, col, self)
Ejemplo n.º 15
0
def make_barriers(barriers, screen, ai_settings):
    tempx = ai_settings.screen_width / 5 - 40
    tempy = (4 * ai_settings.screen_height) / 5
    for j in range(4):
        for n in range(2):
            for i in range(7):
                newBarrier = Barrier(screen, ai_settings)
                newBarrier.rect.x = tempx + (i * 10)
                newBarrier.rect.y = tempy + (n * 20)
                barriers.add(newBarrier)
        tempx += ai_settings.screen_width / 5
Ejemplo n.º 16
0
    def __init__(self,
                 sampling_interval=None,
                 sampling_freq=None,
                 initial_value=None):
        """
        if value is put too fast, `get` method should limit this speed with "sample interval" parameter.

        if value is got too slow, `get` method should return immediately

        """
        if sampling_interval:
            self.sampling_interval = sampling_interval
        elif sampling_freq:
            self.sampling_interval = (1.0 / sampling_freq)
        else:
            self.sampling_interval = 0.01  # 10 ms default value

        self.curr_val = initial_value
        self.last_timestamp = 0
        self.put_barrier = Barrier()
        self.fine_tune_last_wait = 0.005  # seconds
    def __init__(self, count):
        self.deck = Deck()                          # 牌堆
        self.players = []                           # 玩家清單
        self.player_count = count                   # 玩家數量
        self.__round_barrier = Barrier(count+1)     # 每回合末同步狀態用
        self.__jack_lock = Lock()                   # 搶牌鎖定
        self.__dispenser_event = Event()            # 牌發了沒
        self.__dispenser_lock = CounterLock(self.player_count) # 發牌員等玩家用的鎖

        self.steal = False                          # 大家來偷牌
        self.table_top = None                       # 桌面上可以搶的那張牌
        self.last_card = None                       # 被搶走的牌

        self.end = False                            # GG?
        self.player_reports = [[] for i in range(self.player_count)] # 得分記錄
        self.player_finnished = []                  # 排名

        self.round = 0                              # 回合計數器
        self.output_mutex = Lock()                  # log 用的 lock, 不然你看想看意大利麵般的輸出嗎

        self.deck.shuffle()                         # 洗牌
        self.players = [Player(self, i) for i in range(self.player_count)] # 建立玩家
Ejemplo n.º 18
0
def create_barrier(ai_settings, screen, bar, bunker_num, barriers):
    # Find new barrier's position
    x = 150
    y = 600
    for i in range(1, bunker_num):
        x += 245

    # Create barrier in proper location
    if bar == 1:
        barrier = Barrier(ai_settings, screen, x, y, '1')
    elif bar == 2:
        barrier = Barrier(ai_settings, screen, x, y - ai_settings.bar_height,
                          '1')
    elif bar == 3:
        barrier = Barrier(ai_settings, screen, x,
                          y - (ai_settings.bar_height * 2), 'BR')
    elif bar == 4:
        barrier = Barrier(ai_settings, screen, x + ai_settings.bar_width,
                          y - ai_settings.bar_height, 'TL')
    elif bar == 5:
        barrier = Barrier(ai_settings, screen, x + ai_settings.bar_width,
                          y - (ai_settings.bar_height * 2), '1')
    elif bar == 6:
        barrier = Barrier(ai_settings, screen, x + (ai_settings.bar_width * 2),
                          y - ai_settings.bar_height, 'TR')
    elif bar == 7:
        barrier = Barrier(ai_settings, screen, x + (ai_settings.bar_width * 2),
                          y - (ai_settings.bar_height * 2), '1')
    elif bar == 8:
        barrier = Barrier(ai_settings, screen, x + (ai_settings.bar_width * 3),
                          y, '1')
    elif bar == 9:
        barrier = Barrier(ai_settings, screen, x + (ai_settings.bar_width * 3),
                          y - ai_settings.bar_height, '1')
    elif bar == 10:
        barrier = Barrier(ai_settings, screen, x + (ai_settings.bar_width * 3),
                          y - (ai_settings.bar_height * 2), 'BL')
    barriers.add(barrier)
    def restart(self):

        self.play_button = Button(settings=self.settings,
                                  screen=self.screen,
                                  msg="Play")
        self.hs_button = scorebutton(settings=self.settings,
                                     screen=self.screen,
                                     msg="HIGH SCORES")
        self.stats = GameStats(settings=self.settings)
        self.sb = Scoreboard(game=self, sound=self.sound)
        self.settings.init_dynamic_settings()
        self.barrier = Barrier(ship_height=self.ship_height, game=self)
        self.ufo = Ufos(ship_height=self.ship_height, game=self)
        self.aliens = Aliens(ship_height=self.ship_height, game=self)
        self.ship = Ship(aliens=self.aliens,
                         sound=self.sound,
                         game=self,
                         ufo=self.ufo)

        self.aliens.add_ship(ship=self.ship)

        self.stats.high_score = self.hs
        self.sb.prep_high_score()
Ejemplo n.º 20
0
    def __init__(self, simMins, hdim, vdim):
        global TICK_TIME
        TICK_TIME = 1 # we're waiting one sec per tick

        self.simulationRunning = False
        self.maxSimTicks = simMins
        self.globalTicks = 0 # num ticks the simulation has been running for
        self.hdim = hdim
        self.vdim = vdim

        self.orgsList = Set()   # Organisms alive/running in simulation
        self.orgsListMutex = Lock()
        self.newborns = []      # Organisms born during current tick
        self.newbornsMutex = Lock()
        self.creatures = dict()
        self.creature_funcs = dict()

        self.__createOcean(hdim, vdim)
        self.__prepopulateCoccolithophores()
        self.__createFoodchain()

        self.barrier = Barrier(0) # for synchronization between ticks
        self.stdoutLock = Lock()  # for printing to stdout
Ejemplo n.º 21
0
def create_barriers(ai_settings, screen, barriers, sprites):
    number_barriers_x = 4

    for x in range(0, number_barriers_x):
        barrier_offset_x = 160
        barrier_offset_y = 608

        barrier = Barrier(ai_settings, screen, barrier_offset_x + (256 * x),
                          barrier_offset_y, sprites, 1)
        barriers.add(barrier)
        barrier = Barrier(ai_settings, screen, barrier_offset_x + 32 + (256 * x),
                          barrier_offset_y, sprites, 0)
        barriers.add(barrier)
        barrier = Barrier(ai_settings, screen, barrier_offset_x + 64 + (256 * x),
                          barrier_offset_y, sprites, 0)
        barriers.add(barrier)
        barrier = Barrier(ai_settings, screen, barrier_offset_x + 96 + (256 * x),
                          barrier_offset_y, sprites, 2)
        barriers.add(barrier)
        barrier = Barrier(ai_settings, screen, barrier_offset_x + (256 * x),
                          barrier_offset_y + 32, sprites, 0)
        barriers.add(barrier)
        barrier = Barrier(ai_settings, screen, barrier_offset_x + 32 + (256 * x),
                          barrier_offset_y + 32, sprites, 4)
        barriers.add(barrier)
        barrier = Barrier(ai_settings, screen, barrier_offset_x + 64 + (256 * x),
                          barrier_offset_y + 32, sprites, 3)
        barriers.add(barrier)
        barrier = Barrier(ai_settings, screen, barrier_offset_x + 96 + (256 * x),
                          barrier_offset_y + 32, sprites, 0)
        barriers.add(barrier)
        barrier = Barrier(ai_settings, screen, barrier_offset_x + (256 * x),
                          barrier_offset_y + 64, sprites, 0)
        barriers.add(barrier)
        barrier = Barrier(ai_settings, screen, barrier_offset_x + 96 + (256 * x),
                          barrier_offset_y + 64, sprites, 0)
        barriers.add(barrier)
Ejemplo n.º 22
0
 def create_barriers(self):
     self.barriers = []
     for i in range(0, 4):
         barrier = Barrier(screen=self.screen,
                           sprite_sheet=self.sprite_sheet,
                           column=i)
         barrier.create_barrier()
         barrier.draw_barrier()
         self.barriers.append(barrier)
Ejemplo n.º 23
0
class StabilizedBuffer(object):
    def __init__(self, duration=0, distance=None):
        object.__init__(self)
        self.duration = duration
        self.curr_val = None
        self.barrier = Barrier()
        self.distance = distance
        self.schmitt_low = None
        self.schmitt_high = None

    def set_limits(self):
        self.schmitt_low = self.curr_val - (self.distance / 2.0)
        self.schmitt_high = self.curr_val + (self.distance / 2.0)

    def put(self, value):
        self.curr_val = value

        if self.distance is not None:
            if self.schmitt_low is None:
                self.set_limits()

            if self.schmitt_low < self.curr_val < self.schmitt_high:
                pass
            else:
                self.set_limits()
                self.barrier.go()
        else:
            self.barrier.go()

    def get(self):
        while True:
            success = self.barrier.wait(self.duration)
            if not success:
                # barrier is timed out, so there is no new
                # value in this time slot, which means we have
                # a stable value. return this value.
                return self.curr_val
    def mainloop(self):

        self.output('game start')
        self.output('dispenser: %d cards left in deck' % len(self.deck.deck))
        for player in self.players:
            player.hand = self.deck.withdraw(3)
            player.start()

        while not game.end:
            if not self.deck.deck:                                  # 牌堆空了沒
                  self.end = True
                  break
            self.__dispenser_event.clear()                          # 搶有就有 沒有就等下一輪
            self.round += 1                                         # 新回合
            self.wait_for_round(-1)                                 # 阿你是好了沒

            self.steal = False                                      # 關於偷牌這件事我們再評估

            self.wait_for_players()                                 # 大家都好了嗎

            self.dispense()                                         # 發牌!

            player_state = set([player.check(self.table_top) for player in self.players])
            if len(player_state) == 1:                              # 大家都一樣
                if 0 in player_state:                               # 都沒牌好搶
                    self.steal = True
                elif -1 in player_state:                            # 都兩手空空
                    self.end = True

            self.__round_barrier = Barrier(self.player_count+1)     # 重置同步
            self.__dispenser_event.set()                            # 牌發了 大家都看好了 來搶噢
            self.wait_for_players()                                 # 所以架打完了嗎
        
        self.wait_for_round(-1)                                     # 好了收工啦
        self.output('It\'s over!')
        self.game_end()
Ejemplo n.º 25
0
def create_barriers(ai_settings, screen, barriers):
    saved_x = 265

    for barrier_count in range(ai_settings.barrier_total):
        pos_y = ai_settings.barrier_topy
        barrier_type = 0
        for y in range(ai_settings.barrier_count_y):
            pos_x = saved_x
            for x in range(ai_settings.barrier_count_x):
                new_barrier = Barrier(ai_settings, screen, barrier_type, pos_x,
                                      pos_y)
                barriers.add(new_barrier)
                barrier_type += 1
                pos_x += ai_settings.barrier_width
            pos_y += ai_settings.barrier_height
        saved_x += 300
Ejemplo n.º 26
0
 def draw_barriers(self):
     Barrier(250, self.canvas)
     Barrier(550, self.canvas)
Ejemplo n.º 27
0
import threading
from barrier import Barrier

barrier = Barrier(10)


class thread(threading.Thread):
    def __init__(self, thread_ID):
        threading.Thread.__init__(self)
        self.thread_ID = thread_ID

    def run(self):
        print("before barrier|thread_id={0}".format(str(self.thread_ID)))
        barrier.wait()
        print("after barrier|thread_id={0}".format(str(self.thread_ID)))


threads = []

for i in range(10):
    threads.append(thread(i))

for t in threads:
    t.start()
barrier.wait()
print("Exit\n")
Ejemplo n.º 28
0
class Game():
    def __init__(self):
        pygame.init()
        self.lifes = [
            pyg.image.load("lifes.png"),
            pyg.image.load("lifes.png"),
            pyg.image.load("lifes.png"),
            pyg.image.load("lifes.png"),
            pyg.image.load("lifes.png")
        ]
        self.isgame = True
        self.moving_flag = True
        self.win = pygame.display.set_mode((500, 600))
        pygame.display.set_caption("Space Invadors")
        self.ship = Ship(self.win)
        self.barrier_1 = Barrier(100, 450, self.win)
        self.barrier_2 = Barrier(300, 450, self.win)
        self.enemys = [Enemy(self.win, x, 100) for x in range(30, 425, 55)]
        self.enemys += [Enemy(self.win, x, 225) for x in range(20, 435, 45)]
        self.count = 0

    def get_min_y(self, barrier, xc):
        mas = [(y if xc == x else 700) for x, y in barrier]
        try:
            return min(mas)
        except Exception as e:
            print(e)

    def find_enemy(self, enemyes):
        mi = 550
        mx = 0
        for enemy in enemyes:
            if enemy.x > mx: mx = enemyes.index(enemy)
            if enemy.x < mi: mi = enemyes.index(enemy)
        return (mx, mi)

    def run(self):
        bullets = []
        ship_bullets = []
        while self.isgame:
            pygame.time.delay(70)
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    self.isgame = False

            keys = pygame.key.get_pressed()

            self.win.fill((0, 0, 0))
            tmp = self.ship.action(keys)
            self.barrier_1.draw()
            self.barrier_2.draw()
            font = pygame.font.SysFont(None, 40)
            text = font.render(f"Score: {self.count}", True, (255, 255, 255))
            self.win.blit(text, (160, 10))
            i = 0
            for x in range(5, (23 + 5) * len(self.lifes), 28):
                self.win.blit(self.lifes[i], (x, 2))
                i += 1
            max_en, min_en = self.find_enemy(self.enemys)
            if self.enemys[max_en].x + 5 < 450 and self.moving_flag:
                for enemy in self.enemys:
                    tmp_2 = enemy.move(5)
                    if tmp_2 and len(bullets) < 30:
                        bullets.append(tmp_2)
            elif self.enemys[min_en].x - 5 > 10:
                for enemy in self.enemys:
                    tmp_2 = enemy.move(-5)
                    if tmp_2 and len(bullets) < 30:

                        bullets.append(tmp_2)
                self.moving_flag = False
            else:
                self.moving_flag = True
                for enemy in self.enemys:
                    tmp_2 = enemy.move(0)
                    if tmp_2 and len(bullets) < 30:
                        bullets.append(tmp_2)
            if tmp and len(bullets) < 15:
                bullets.append(tmp)

            for bullet in bullets:
                try:
                    bullets.index(bullet)
                except:
                    continue
                bullet.shot(bullet.x, bullet.y)
                matrix = [self.barrier_1.pixels, self.barrier_2.pixels]
                for pix in range(len(matrix[0])):
                    min_y_1 = self.get_min_y(matrix[0], matrix[0][pix][0])
                    min_y_2 = self.get_min_y(matrix[1], matrix[1][pix][0])
                    try:
                        bullets.index(bullet)
                    except:
                        continue
                    if matrix[0][pix][0] == bullet.x and bullet.y in range(
                            450, 550) and bullet.speed < 0:
                        try:
                            bullets.pop(bullets.index(bullet))
                            self.barrier_1.pixels[self.barrier_1.pixels.index(
                                (matrix[0][pix][0], min_y_1))] = (-10, 650)
                        except:
                            pass
                    elif matrix[1][pix][0] == bullet.x and bullet.y in range(
                            450, 550) and bullet.speed < 0:
                        try:
                            bullets.pop(bullets.index(bullet))
                            self.barrier_2.pixels[self.barrier_2.pixels.index(
                                (matrix[1][pix][0], min_y_1))] = (-10, 650)
                        except:
                            pass

                for enemy in self.enemys:
                    if bullet.x in range(enemy.x,
                                         enemy.x + 26) and bullet.y in range(
                                             enemy.y, enemy.y + 26):
                        try:
                            index = bullets.index(bullet)
                        except:
                            continue
                        if bullet.speed > 0:
                            enemy.hit()
                            if enemy.live <= 0:
                                self.enemys.pop(self.enemys.index(enemy))
                                self.count += 1
                            bullets.pop(bullets.index(bullet))

                if self.count == 18:
                    self.end()

                if bullet.x in range(self.ship.x,
                                     self.ship.x + 37) and bullet.y in range(
                                         self.ship.y, self.ship.y + 52):
                    try:
                        index = bullets.index(bullet)
                    except:
                        continue
                    tmp = self.ship.hit()
                    self.lifes.pop(-1)
                    bullets.pop(bullets.index(bullet))
                    if tmp == "game over":
                        self.end()

                if bullet.y < 600 and bullet.y > 0:
                    bullet.y -= bullet.speed
                else:
                    bullets.pop(bullets.index(bullet))

            pygame.display.update()

    def end(self):
        self.win.fill((0, 0, 0))
        font = pygame.font.SysFont(None, 40)
        text = font.render("GAME OVER", True, (255, 50, 50))
        self.win.blit(text, (160, 300))
        pygame.display.update()
        pygame.time.wait(2000)
        pygame.quit()
Ejemplo n.º 29
0
    global pacCycle
    if pacAnimate == True:
        if pacCycle < 3:
            pacCycle += 1
        else:
            pacCycle = 0


#----------------SETUP GAME--------------------
window = pyglet.window.Window(467, 566)
keys = key.KeyStateHandler()
window.push_handlers(keys)
#----------------CREATE OBJECTS----------------
barriers = [
    #Barrier(x, y, wid, h)
    Barrier(42, 42, 50, 64)
]

char = PacMan(0, 0, barriers)


#----------------ANIMATION---------------------
@window.event
def on_draw():
    global pacCycle
    pyglet.sprite.Sprite(pyglet.image.load("img/boards/lvl1.jpg"), x=0,
                         y=0).draw()

    if char.right == True or char.left == True or char.up == True or char.down == True:
        if char.direction == "right":
            char.spr = pacRight[pacCycle]
Ejemplo n.º 30
0
# hk, even computed in the source code, is not
# used in the end, so we temporarily ignore it

###########################################
# compute trajectory to ck using basis function
from utils import convert_traj2ck
ck = convert_traj2ck(basis, xt)
print('ck: ')
print(ck)

###########################################
# barrier function test
from barrier import Barrier

# define the Barrier object
barrier = Barrier(explr_space)
# test cost function
print(barrier.cost(explr_space.sample() - 1.0))
# test derivative of cost function wrt to pose
print(barrier.dx(explr_space.sample() - 1.0))

###########################################
# target distribution test
from target_dist import TargetDist
from utils import convert_phi2phik, convert_phik2phi
import matplotlib.pyplot as plt

# define a target distribution object
t_dist = TargetDist()
# plot first fig, original target dist
fig1 = plt.figure()