예제 #1
0
def room3():
    tiles1 = [
        Coord(7, 1),
        Coord(7, 2),
        Coord(7, 3),
        Coord(7, 18),
        Coord(6, 4),
        Coord(6, 1),
        Coord(6, 3),
        Coord(7, 5),
        Coord(8, 4),
        Coord(8, 2),
        Coord(8, 3),
        Coord(8, 4),
        Coord(8, 5),
        Coord(9, 2),
        Coord(9, 3),
        Coord(9, 4)
    ]
    start1 = Coord(5, 0)
    dimensions1 = Coord(5, 5)
    doors1 = [Coord(7, 5)]
    items1 = [Item(KEY, Coord(6, 1)), Item(KEY, Coord(7, 3))]
    room3 = Room(start1, dimensions1, tiles1, doors1, items1)
    return room3
    def update(self):
        mm = self.__map_manager
        player = mm.player
        game_system = mm.game_system

        if InputManager.isPush(Key.s):
            game_system.add_speed()

        if InputManager.isPush(Key.p) \
                and player.stats.potion > 0:
            from task.map.use_item import UseItem
            self.__next_task = UseItem(self.__map_manager,
                                       Item(Item.Type.POTION))
            return

        if InputManager.isPush(Key.b) \
                and player.stats.bom > 0:
            from task.map.use_item import UseItem
            self.__next_task = UseItem(self.__map_manager, Item(Item.Type.BOM))
            return

        direction = InputManager.get_push_direction()
        if player.ready_move(direction):
            mm.event_manager.ready_move_enemys()
            from task.map.move import Move
            self.__next_task = Move(self.__map_manager)
            return
        elif direction != Direction.NEWTRAL:
            game_system.play_se(SE.BUMP)
예제 #3
0
 def test_get_items_by_shop_and_category(self):
     dao = ItemsDAO(self.db)
     category_a = 'CategoryA'
     category_b = 'CategoryB'
     shop_a = '5f7c28c6e979c6a33a1f3f79'
     shop_b = '5f7c2d96e48e242b81178822'
     item_1 = Item('Name1', 1.0, category_a, shop_a, ProductDetails('', {}),
                   Image('', ''))
     item_2 = Item('Name2', 1.0, category_a, shop_b, ProductDetails('', {}),
                   Image('', ''))
     item_3 = Item('Name3', 1.0, category_b, shop_a, ProductDetails('', {}),
                   Image('', ''))
     item_4 = Item('Name4', 1.0, category_b, shop_b, ProductDetails('', {}),
                   Image('', ''))
     for item in [item_1, item_2, item_3, item_4]:
         dao.store_one(item.to_db_object())
     items = self.item_handler.get_items_by_shop_and_category(None, None)
     self.assertEqual(len(items), 4)
     items = self.item_handler.get_items_by_shop_and_category(
         shop_a, category_a)
     self.assertEqual(len(items), 1)
     self.assertEqual(items[0]['name'], item_1.name)
     items = self.item_handler.get_items_by_shop_and_category(shop_b, None)
     self.assertEqual(len(items), 2)
     self.assertEqual(len([i for i in items if i['name'] == item_2.name]),
                      1)
     self.assertEqual(len([i for i in items if i['name'] == item_4.name]),
                      1)
     items = self.item_handler.get_items_by_shop_and_category(
         None, category_b)
     self.assertEqual(len([i for i in items if i['name'] == item_3.name]),
                      1)
     self.assertEqual(len([i for i in items if i['name'] == item_4.name]),
                      1)
예제 #4
0
 def test_create_request_correctly(self):
     session_id = 'sessionId'
     requester = Requester('login', 'pw', 'first', 'last',
                           '5f81ae776db502d353a84fdf')
     self.requester_handler.active_user_sessions[session_id] = requester
     item_1 = Item('item1', 42.42, 'category', '5f7c28c6e979c6a33a1f3f79',
                   ProductDetails('', {}), Image('', ''))
     item_2 = Item('item2', 13.37, 'category', '5f7c28c6e979c6a33a1f3f79',
                   ProductDetails('', {}), Image('', ''))
     item_1_id = self.items_dao.store_one(item_1.to_db_object())
     item_2_id = self.items_dao.store_one(item_2.to_db_object())
     item_1_amount = 5
     item_2_amount = 3
     request_items = [{
         'id': item_1_id,
         'amount': item_1_amount
     }, {
         'id': item_2_id,
         'amount': item_2_amount
     }]
     request_id = self.request_handler.create_request(
         request_items, session_id)
     requests = self.requests_dao.get_all()
     self.assertEqual(len(requests), 1)
     self.assertEqual(str(requests[0]['_id']), request_id)
     self.assertEqual(str(requests[0]['requester']), requester.id)
     self.assertEqual(requests[0]['volunteer'], None)
     self.assertEqual(requests[0]['status'], RequestStatus.CREATED)
     self.assertEqual(str(requests[0]['items'][0]['id']), item_1_id)
     self.assertEqual(requests[0]['items'][0]['amount'], item_1_amount)
     self.assertEqual(str(requests[0]['items'][1]['id']), item_2_id)
     self.assertEqual(requests[0]['items'][1]['amount'], item_2_amount)
예제 #5
0
def item_init():
    global item
    item = []
    for i in range(8):
        if i < 4:
            item.append(Item(i, "Notebook", [MAP_HEIGHT-2, i]))
        else:
            item.append(Item(i, "Notebook", [MAP_HEIGHT-1, i-4]))
예제 #6
0
def test_gamemanager(level2):
    gm = GameManager()
    player_names = []
    for i in range(3):
        player_names.append("bruh " + str(i))
    gm.register_player_names(player_names)
    assert len(gm.players) == 3
    assert gm.players[0].name == "bruh 0"
    assert gm.players[1].name == "bruh 1"
    assert gm.players[2].name == "bruh 2"
    gm.start_game(level2)
    assert gm.gamestate.current_level
    assert len(gm.players) == 3
    assert len(gm.gamestate.players) == 3
    assert gm.players[0].name == "bruh 0"
    assert gm.players[1].name == "bruh 1"
    assert gm.players[2].name == "bruh 2"
    new_player_locs = [gm.players[0].pos, gm.players[1].pos, gm.players[2].pos]
    new_player_locs[2] = Coord(7, 18)
    gm.request_player_move(gm.players[2].name, Coord(7, 3))
    assert gm.players[2].pos == Coord(7, 3)
    item = Item(KEY, Coord(8, 17))
    gm.apply_player_item_interaction(gm.gamestate.players[2], Coord(8, 17))
    print(str(gm.gamestate.players[2]))
    assert item in gm.gamestate.players[2].inventory
예제 #7
0
 def __update_item(self):
     updated_item = Item()
     updated_item.id = self.id.get()
     updated_item.name = self.name.get()
     updated_item.nominal = self.nominal.get()
     updated_item.min = self.min.get()
     updated_item.lifetime = self.lifetime.get()
     updated_item.restock = self.restock.get()
     usages = self.usagesListBox.curselection()
     values = [self.usagesListBox.get(i) for i in usages]
     usages = ",".join(values)
     updated_item.usage = usages
     tires = self.tiersListBox.curselection()
     tire_values = [self.tiersListBox.get(i) for i in tires]
     tires = ",".join(tire_values)
     updated_item.tire = tires
     updated_item.rarity = self.rarity.get()
     updated_item.item_type = self.type.get()
     updated_item.sub_type = self.subtypeAutoComp.get()
     updated_item.mod = self.mod.get()
     print(updated_item.mod)
     updated_item.trader = self.trader.get()
     updated_item.dynamic_event = self.dynamic_event.get()
     updated_item.count_in_hoarder = self.count_in_hoarder.get()
     updated_item.count_in_cargo = self.count_in_cargo.get()
     updated_item.count_in_map = self.count_in_map.get()
     updated_item.count_in_player = self.count_in_player.get()
     self.database.update_item(updated_item)
     self.__populate_items()
예제 #8
0
    def parse_message(self, message):
        text = message.text

        dr_id = parse_dr_id(text)
        if not dr_id:
            return
        print dr_id

        if dr_id in self.items:
            item = self.items[dr_id]

            if item.first_mentioned > message.timestamp:
                item.first_mentioned = message.timestamp

            if item.last_mentioned < message.timestamp:
                item.last_mentioned = message.timestamp

            if message.is_bot and (
                    item.last_mentioned_bot is None
                    or item.last_mentioned_bot < message.timestamp):
                item.last_mentioned_bot = message.timestamp
        else:
            item = Item()
            item.id = dr_id
            item.type = 'doc'
            item.first_mentioned = message.timestamp
            item.last_mentioned = message.timestamp
            if message.is_bot:
                item.last_mentioned_bot = message.timestamp
            item.url = 'https://docs.google.com/document/d/{0}'.format(dr_id)

            self.items[dr_id] = item
예제 #9
0
def parse_items_from_file(file_path):
    list = []
    file_data = open(file_path, 'r')

    value = []
    for each_line in file_data:
        each_line = each_line.replace("]", "")
        each_line = each_line.replace("[", "")
        each_line = each_line.replace("\"", "")

        value.append(each_line.strip().split(","))

    for each_data_Array in value:
        size = len(each_data_Array)

        price = float(each_data_Array[2].strip())
        if size == 3:
            new_item = Item(each_data_Array[0], each_data_Array[1], price)
            list.append(new_item)
        elif size == 4:
            date = datetime.datetime.strptime(
                each_data_Array[3].strip(),
                "%Y-%m-%d %H:%M:%S.%f").strftime("%Y-%m-%d %H:%M:%S.%f")

            new_event = Event(each_data_Array[0], each_data_Array[1], price,
                              date)
            list.append(new_event)
    file_data.close()
    return list
예제 #10
0
 def create_item(self, name, description, category_id, owner_id):
     item = Item(name=name,
                 description=description,
                 category_id=category_id,
                 owner_id=owner_id)
     self.db_session.add(item)
     self.db_session.commit()
예제 #11
0
def create_orders():
    user = g.current_user
    data = request.get_json()

    items = []
    goods = Goods.query.filter(Goods.id.in_(data['goods_id'])).all()
    owner_id = goods[0].user_id if len(goods) != 0 else None
    if owner_id is None:
        return {'errmsg': '请选择商品!', 'errcode': 400}, 400
    for res in goods:
        if res.user_id != owner_id:
            return {'errmsg': '一次只能提交同一商家的商品', 'errcode': 400}, 400
        if res.sale == 1:
            return {
                'errmsg': '商品 ' + res.name + ' 已被购买, 下次手快点哦',
                'errcode': 400
            }, 400
        items.append(Item(goods_id=res.id))
    if owner_id == user.id:
        return {'errmsg': '不可购买自己发布的商品', 'errcode': 400}, 400

    try:
        address = user.addresses.filter_by(id=data['address_id']).first()
        order = Order(user=user, owner_id=owner_id, address=address)
        order.items = items
        # 更新goods为已售出
        for val in goods:
            val.sale = 1
        db.session.add(order)
        db.session.commit()
        return {'errmsg': '下单成功, 请期待您的宝贝~', 'errcode': 200}, 200
    except:
        return {'errmsg': '数据出错, 请确认数据'}
예제 #12
0
    def parse_message(self, message):
        text = message.text

        pr_ids = parse_pr_id(text)
        if not pr_ids:
            return
        for pr_id in pr_ids:
            if pr_id in self.items:
                item = self.items[pr_id]

                if item.first_mentioned > message.timestamp:
                    item.first_mentioned = message.timestamp

                if item.last_mentioned < message.timestamp:
                    item.last_mentioned = message.timestamp

                if message.is_bot and (item.last_mentioned_bot is None or item.last_mentioned_bot < message.timestamp):
                    item.last_mentioned_bot = message.timestamp
            else:
                item = Item()
                item.id = pr_id
                item.type = 'pr'
                item.project = pr_id.split('#')[0]
                item.first_mentioned = message.timestamp
                item.last_mentioned = message.timestamp
                if message.is_bot:
                    item.last_mentioned_bot = message.timestamp

                item.url = 'https://github.com/augurysys/{0}/pull/{1}'.format(*pr_id.split('#'))
                self.items[pr_id] = item
예제 #13
0
    def __init__(self, file):
        self.backgrounds = []
        self.classes = []
        self.feats = []
        self.items = []
        self.monsters = []
        self.races = []
        self.spells = []

        tree = ET.parse(file)
        root = tree.getroot()
        for c in list(root):
            t = c.tag
            if t == 'background':
                self.backgrounds += [Background(c)]
            elif t == 'class':
                self.classes += [CharClass(c)]
            elif t == 'feat':
                self.feats += [Feat(c)]
            elif t == 'item':
                self.items += [Item(c)]
            elif t == 'monster':
                self.monsters += [Monster(c)]
            elif t == 'race':
                self.races += [Race(c)]
            elif t == 'spell':
                self.spells += [Spell(c)]
예제 #14
0
파일: item_dao.py 프로젝트: anacsv/newstore
 def __create_object(self, it_str: str) -> Item:
     item = Item()
     obj_array = it_str.split(';')
     item.id = obj_array[0]
     item.name = obj_array[1]
     item.price = obj_array[2]
     item.description = obj_array[3]
     return item
예제 #15
0
 def craftar(self, id):
     x = Item()
     with open('Estudo/GameArena/dao/itens.txt','r') as arquivo:
         for linha in arquivo:
             linha = linha.strip()
             lista = linha.split(';')
             x.id = int(lista[0])
             x.nome = lista[1]
             x.arma = int(lista[2])
             x.escudo = int(lista[3])
             x.armadura = int(lista[4])
             if x.id == id:
                 return x
예제 #16
0
    def get_item(self) -> Optional[Item]:
        if random.random() < 0.8:
            return None

        item_type = random.choice([
            Item.Type.SA_ADD_20,
            Item.Type.SA_ADD_20,
            Item.Type.SA_ADD_20,
            Item.Type.SA_ADD_20,
            Item.Type.SA_ADD_100
        ])

        return Item(item_type)
예제 #17
0
def parse_level(level_input):    
    try:
        level_json = json.loads(level_input)
    except TypeError:
        level_json = level_input

    rooms = None
    hallways = None
    objects = None
    point = None
    try:
        if level_json[0][TYPE] != LEVEL:
            print('Invalid Args: Type is not level')
            return None
        input_json = level_json[0]
        point = level_json[1]
    except (KeyError, IndexError):
        input_json = level_json
    rooms = input_json[ROOMS]
    hallways = input_json[HALLWAYS]
    objects = input_json[OBJECTS]

    rooms_list = [parse_room_obj(room)[ROOM] for room in rooms]
    halls_list = [parse_hall(hall, rooms_list) for hall in hallways]

    exits = []
    keys = []
    for item in objects:
        posn = item[POS]
        if item[TYPE] == KEY:
            key_coord = to_coord(posn)
            keys.append(Item(KEY, key_coord))
        elif item[TYPE] == EXIT:
            exit_coord = to_coord(posn)
            exits.append(Item(EXIT, exit_coord))

    parsed_level = Level(rooms_list, halls_list, keys, exits)
    return {LEVEL: parsed_level, COORD: to_coord(point) if point else None}   
예제 #18
0
 def __get_item(self) -> Item:
     item_type = random.choice([
         Item.Type.POTION,
         Item.Type.POTION,
         Item.Type.POTION,
         Item.Type.BOM,
         Item.Type.BOM,
         Item.Type.BOM,
         Item.Type.BOM,
         Item.Type.BOM,
         Item.Type.BOM,
         Item.Type.SA_SPOILED,
     ])
     return Item(item_type)
예제 #19
0
def room2():
    # Room 2 example
    tiles1 = [
        Coord(7, 15),
        Coord(7, 17),
        Coord(7, 18),
        Coord(6, 17),
        Coord(8, 17),
        Coord(8, 15),
        Coord(6, 15),
        Coord(7, 15),
        Coord(7, 15),
        Coord(9, 17),
        Coord(9, 16),
        Coord(9, 15),
        Coord(9, 15),
        Coord(6, 16)
    ]
    start1 = Coord(5, 15)
    dimensions1 = Coord(5, 5)
    doors1 = [Coord(7, 15)]
    items1 = [Item(KEY, Coord(8, 17)), Item(KEY, Coord(7, 17))]
    room2 = Room(start1, dimensions1, tiles1, doors1, items1)
    return room2
예제 #20
0
def create_alert():
    if request.method == 'POST':
        item_url = request.form['item_url']

        store = Store.find_by_url(item_url)
        item = Item(item_url, store.tag_name, store.query)
        item.load_price()
        item.save_to_mongo()

        alert_name = request.form['name']
        price_limit = request.form['price_limit']

        Alert(alert_name, item._id, price_limit,
              session["email"]).save_to_mongo()

    # What happens if it's a GET request
    return render_template("alerts/new_alert.html")
예제 #21
0
    def post(self):
        name = self.request.get("name", "").strip()
        item_id = self.request.get("item_id", "").strip()
        link = self.request.get("link", "").strip()
        price = float(self.request.get("price", 0.0).strip())
        owner = users.get_current_user().user_id()

        if link and not link.startswith("http://") and not link.startswith("https://"):
            link = "http://" + link

        if item_id:
            item = ndb.Key(urlsafe=item_id).get()
            item.name = name
            item.link = link
            item.price = price
        else:
            item = Item(name=name, link=link, price=price, owner=owner)
        item.put()
        self.redirect("/items")
예제 #22
0
def new_alert():

    # If POST method included in the request, a new alert needs to be saved
    # After saving the new alert from the POST, user redirected to their alerts list at '/'
    if request.method == 'POST':
        alert_name = request.form['name']
        item_url = request.form['item_url']
        price_limit = float(request.form['price_limit'])
        store = Store.find_by_url(item_url)
        item = Item(item_url, store.tag_name, store.query)
        item.load_price()
        item.save_to_mongo()
        Alert(alert_name, item._id, price_limit,
              session['email']).save_to_mongo()

        return redirect(url_for('.index'))

    # If POST was not included in the request, form is provided for user to enter new alert information
    return render_template('/alerts/new_alert.html')
예제 #23
0
 def test_get_requesters_own_requests_correctly(self):
     session_id = 'sessionId'
     requester_id = '5f7c2d96e48e242b81178822'
     other_requester_id = '5f81ae36fa3b02a743177500'
     requester = Requester('login', 'pw', 'first', 'last', requester_id)
     self.requester_handler.active_user_sessions[session_id] = requester
     item = Item('item', 42.42, 'category', '5f7c28c6e979c6a33a1f3f79',
                 ProductDetails('', {}), Image('', ''))
     item_id = self.items_dao.store_one(item.to_db_object())
     item.id = item_id
     request_1 = Request(requester=requester_id,
                         status=RequestStatus.CREATED,
                         items=[],
                         volunteer=None)
     request_2 = Request(requester=requester_id,
                         status=RequestStatus.IN_PROGRESS,
                         items=[(item, 3)],
                         volunteer='5f81ae776db502d353a84fdf',
                         submission_date=datetime.now())
     request_3 = Request(requester=other_requester_id,
                         status=RequestStatus.PAID,
                         items=[(item, 1)],
                         volunteer='5f81ae776db502d353a84fdf',
                         submission_date=datetime.now())
     request_1_id = self.requests_dao.store_one(request_1.to_db_object())
     request_2_id = self.requests_dao.store_one(request_2.to_db_object())
     request_3_id = self.requests_dao.store_one(request_3.to_db_object())
     requests = self.request_handler.get_requesters_own_requests(session_id)
     self.assertEqual(len(requests), 2)
     self.assertIn(request_1_id, [request['id'] for request in requests])
     self.assertIn(request_2_id, [request['id'] for request in requests])
     self.assertEqual(
         len([r for r in requests if r['id'] == request_2_id][0]['items']),
         1)
     self.assertEqual([r for r in requests if r['id'] == request_2_id
                       ][0]['items'][0]['item']['id'], item_id)
예제 #24
0
 def get_items(self):
     items = list()
     for item_value in self.xml.iter('type'):
         item = Item()
         usages = list()
         tiers = list()
         item.name = item_value.attrib['name']
         for i in item_value:
             if i.tag == 'nominal':
                 item.nominal = i.text
             elif i.tag == 'restock':
                 item.restock = i.text
             elif i.tag == 'min':
                 item.min = i.text
             elif i.tag == 'category':
                 category = i.attrib['name']
                 if category != 'weapons':
                     item.item_type = category
                 else:
                     item.item_type = self.__get_type(name=item.name)
             elif i.tag == 'lifetime':
                 item.lifetime = i.text
             elif i.tag == 'usage':
                 usages.append(i.attrib['name'])
             elif i.tag == 'value':
                 tiers.append(i.attrib['name'])
             elif i.tag == 'flags':
                 item.dynamic_event = i.attrib['deloot']
                 item.count_in_hoarder = i.attrib['count_in_hoarder']
                 item.count_in_cargo = i.attrib['count_in_cargo']
                 item.count_in_player = i.attrib['count_in_player']
                 item.count_in_map = i.attrib['count_in_map']
         item.usage = ",".join(usages)
         item.tire = ",".join(tiers)
         items.append(item)
     return items
예제 #25
0
assert len(os.getenv('APP_NAME')) > 0


from app import app
from fastapi.testclient import TestClient


def test_get():
    client = TestClient(app)
    response = client.get('/item/1')
    pprint.pprint(response)
    assert response.status_code == 200
    assert response.json()['data']['price'] == 1.1


TEST_ITEM = Item(name='girl for alibaba p8', price=16000)


def test_put():
    client = TestClient(app)
    put_response = client.put('/item/22', data=TEST_ITEM.json())
    assert put_response.status_code == 200
    get_response = client.get('/item/22')
    pprint.pprint(put_response.json())
    data = get_response.json()['data']
    assert 'hehe' not in data['name']
    assert 'alibaba' in data['name']
    assert '价值观' not in data['name']
    assert data['price'] == 16000

예제 #26
0
 def to_item(data) -> Item:
     return Item(
         data[0], Website(data[1]), bool(data[2]),
         datetime.fromtimestamp(data[3], tz=timezone.utc), data[4],
         None if data[5] is None else StockCheckResult.from_json(
             json.loads(data[5])))
예제 #27
0
def __print_single_item(tag: str = 'UNKNOWN',
                        item: Item = Item(name='', price=0.0)):
    LOGGER.info('[%s] %s' % (tag, item.json()))
예제 #28
0
def create_item(item_url: str, item_name: str, website: Website):
    return Item(item_url, website, False,
                datetime.fromtimestamp(0, tz=timezone.utc), item_name, None)
예제 #29
0
from typing import Dict
from model.item import Item
from application.logger import get_service_logger
import time, pprint

LOGGER = get_service_logger('ITEM')

_ITEMS: Dict[int, Item] = {
    1: Item(name='haha', price=1.1),
    22: Item(name='hehe', price=2.2),
    333: Item(name='gogo', price=3.3, is_offer=False),
}


def get_item(item_id: int) -> Item:
    return _ITEMS.get(item_id, None)


def update_item(item_id: int, item: Item) -> bool:
    if item_id not in _ITEMS.keys():
        return False
    _ITEMS[item_id] = item
    return True


def print_items_one_by_one(interval: int = 3):
    if interval <= 0:
        interval = 3
    for item_id, item_info in _ITEMS.items():
        LOGGER.info('Item %d: %s' % (item_id, pprint.pformat(item_info)))
        time.sleep(interval)
예제 #30
0
from typing import Dict, List
from model.item import Item
from application.logger import get_service_logger
import time, pprint

LOGGER = get_service_logger('ITEM')

_ITEMS: Dict[int, Item] = {
    1: Item(name='haha', price=1.1),
    22: Item(name='hehe', price=2.2),
    333: Item(name='gogo', price=3.3, is_offer=False),
    99: Item(name='ronaldo', price=10000.00, is_offer=False)
}


def get_item(item_id: int) -> Item:
    return _ITEMS.get(item_id, None)


def get_items(keyword: str = '',
              min_price: float = -1.0,
              max_price: float = -1.0) -> List[Item]:
    items = []
    for _, item in _ITEMS.items():
        if keyword and keyword not in item.name:
            continue
        if min_price > 0.0 and min_price > item.price:
            continue
        if 0.0 < max_price < item.price:
            continue
        items.append(item)