def __init__(self): print "initializing" pygame.init() self.screen = self.make_screen() self.screenrect = self.screen.get_rect() resources.images = resources.load_all_images() pygame.display.set_icon(resources.images.icon) self.submenu = game_submenu(self, self.screenrect) self.submenu.draw_all(self.screen) pygame.display.flip() self.tochangeto = '' self.run = True lidapy.init(process_name='Environment') self.image_topic = lidapy.Topic('images', msg_type=CompressedImage, queue_size=1) self.action_topic = lidapy.Topic('actions', queue_size=1) self.mainloop()
#!/usr/bin/python # coding=utf-8 from functools import partial import lidapy from lidapy import Config from lidapy import Task from lidapy.modules import Environment import numpy as np # Topic definitions board_state_topic = lidapy.Topic('oxplayer/env/board') action_topic = lidapy.Topic('oxplayer/player2/action') turn_topic = lidapy.Topic('oxplayer/env/turn') pain_topics = [ lidapy.Topic('oxplayer/player1/pain'), lidapy.Topic('oxplayer/player2/pain') ] BLANK = -1 PLAYER1 = 0 PLAYER2 = 1 INVALID_MOVE = 9 PAIN = 1 class Board(object): def __init__(self, board): self._board_marks = {PLAYER1: 'X', PLAYER2: 'O', BLANK: ' '} self._board = board self._win_zones = [(0, 1, 2), (3, 4, 5), (6, 7, 8), (0, 3, 6), (1, 4, 7), (2, 5, 8), (0, 4, 8), (2, 4, 6)]
#! /usr/bin/env/ python from sys import argv import lidapy import ast from lidapy import Config from lidapy.modules import SensoryMemory from env.environment import first_blank, PLAYER2, PLAYER1 from lidapy import Task board_state_topic = lidapy.Topic('oxplayer/env/board') pain_signal_topic = lidapy.Topic('oxplayer/player2/pain') blank_position = lidapy.Topic('oxplayer/blank') turn_topic = lidapy.Topic('oxplayer/env/turn') dorsal_turn_topic = lidapy.Topic('oxplayer/player2/dorsal/turn') def see_board(): board_state = board_state_topic.receive() lidapy.loginfo('Received board_state:' + str(board_state)) if board_state: board_state = ast.literal_eval(board_state) blank = first_blank(board_state) lidapy.loginfo('blank position:' + str(blank)) blank_position.send(blank) def dorsal_update(): turn = turn_topic.receive() lidapy.loginfo('Received turn:' + str(turn)) if turn == PLAYER1 or turn == PLAYER2:
#! /usr/bin/env python from PIL import Image from StringIO import StringIO from sys import argv import lidapy from lidapy import LIDAThread, Config from sensor_msgs.msg import CompressedImage image_topic = lidapy.Topic('images', msg_type=CompressedImage) def receive_image(): msg = image_topic.receive() # type: CompressedImage if msg: # TODO: Create the pixel layer from this image's data image = Image.open(StringIO(msg.data)) # Initialize the lidapy framework lidapy.init(config=Config(argv[1]), process_name='sensory_memory') LIDAThread(name='sensory_memory', callback=receive_image).start()
#! /usr/bin/env/ python import lidapy from lidapy import Config from lidapy import Task from lidapy.modules import SensoryMotorMemory from env.environment import PLAYER1, PLAYER2 blank_position = lidapy.Topic('oxplayer/blank') action_topic = lidapy.Topic('oxplayer/player2/action') dorsal_turn_topic = lidapy.Topic('oxplayer/player2/dorsal/turn') sms = SensoryMotorMemory() sms.turn = PLAYER1 def make_move(): msg = blank_position.receive() lidapy.loginfo('Received blank_position:'+str(msg)) lidapy.loginfo('Current turn:'+str(sms.turn)) if msg is not None and sms.turn == PLAYER2: lidapy.loginfo(msg) lidapy.loginfo('motor move:'+str(msg)) action_topic.send(msg) def receive_turn(): turn = dorsal_turn_topic.receive() lidapy.loginfo('Received turn:'+str(turn)) if turn: