# coding=utf-8 import otree.api from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range ) import random from typing import Any doc = """ In this Vickrey auction, 3 players bid for an object with private values. Each player can only submit one bid. See: Vickrey, William. "Counterspeculation, auctions, and competitive ' sealed tenders." The Journal of finance 16.1 (1961): 8-37. """ class Constants(otree.api.BaseConstants): name_in_url = 'framing_proxy_auction' players_per_group = None num_rounds = 1 endowment = 5 private_value = 6 exp_number = 5 class Subsession(otree.api.BaseSubsession): pass class Group(BaseGroup): pass class Player(otree.api.BasePlayer): private_value = models.FloatField() bid_zero = otree.api.models.IntegerField( choices=[ (1, 'はい'), (0, 'いいえ') ], widget=widgets.RadioSelect, blank=False ) bid_one = otree.api.models.IntegerField( choices=[ (1, 'はい'), (0, 'いいえ') ], widget=widgets.RadioSelect, blank=False ) bid_two = otree.api.models.IntegerField( choices=[ (1, 'はい'), (0, 'いいえ') ], widget=widgets.RadioSelect, blank=False ) bid_three = otree.api.models.IntegerField( choices=[ (1, 'はい'), (0, 'いいえ') ], widget=widgets.RadioSelect, blank=False ) bid_four = otree.api.models.IntegerField( choices=[ (1, 'はい'), (0, 'いいえ') ], widget=widgets.RadioSelect, blank=False ) bid_five = otree.api.models.IntegerField( choices=[ (1, 'はい'), (0, 'いいえ') ], widget=widgets.RadioSelect, blank=False ) bid_six = otree.api.models.IntegerField( choices=[ (1, 'はい'), (0, 'いいえ') ], widget=widgets.RadioSelect, blank=False ) bid_seven = otree.api.models.IntegerField( choices=[ (1, 'はい'), (0, 'いいえ') ], widget=widgets.RadioSelect, blank=False ) bid_eight = otree.api.models.IntegerField( choices=[ (1, 'はい'), (0, 'いいえ') ], widget=widgets.RadioSelect, blank=False ) bid_nine = otree.api.models.IntegerField( choices=[ (1, 'はい'), (0, 'いいえ') ], widget=widgets.RadioSelect, blank=False ) bid_ten = otree.api.models.IntegerField( choices=[ (1, 'はい'), (0, 'いいえ') ], widget=widgets.RadioSelect, blank=False ) bid_eleven = otree.api.models.IntegerField( choices=[ (1, 'はい'), (0, 'いいえ') ], widget=widgets.RadioSelect, blank=False ) bid_twelve = otree.api.models.IntegerField( choices=[ (1, 'はい'), (0, 'いいえ') ], widget=widgets.RadioSelect, blank=False ) bid_thirteen = otree.api.models.IntegerField( choices=[ (1, 'はい'), (0, 'いいえ') ], widget=widgets.RadioSelect, blank=False ) bid_fourteen = otree.api.models.IntegerField( choices=[ (1, 'はい'), (0, 'いいえ') ], widget=widgets.RadioSelect, blank=False ) bid_fifteen = otree.api.models.IntegerField( choices=[ (1, 'はい'), (0, 'いいえ') ], widget=widgets.RadioSelect, blank=False ) bid_price = models.CurrencyField(initial=1) bid_amount_f = models.FloatField(initial=0) def set_proxy_bid(self): self.participant.vars['proxy_bid'] = self.bid_amount_f