from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range ) doc = 'A two-player multi-round game' class Constants(BaseConstants): name_in_url = 'wildlife_poaching' players_per_group = 2 num_rounds = 100 num_sites = 5 rhino_distribution = (0.9, 0.8, 0.7, 0.9, 0.1) time = 5 class Subsession(BaseSubsession): pass class Group(BaseGroup): def get_result(self): import numpy as np poacher = self.get_player_by_id(1) ranger = self.get_player_by_id(2) i = poacher.next_site j = ranger.next_site r = np.random() < Constants.rhino_distribution[i-1] if i!=j and r: poacher.payoff = 1 ranger.payoff = -1 elif i == j: poacher.payoff = -1 ranger.payoff = 1 else: poacher.payoff = 0 ranger.payoff = 0 class Player(BasePlayer): next_site = models.IntegerField(choices=[[1, 'site 1'], [2, 'site 2'], [3, 'site 3'], [4, 'site 4'], [5, 'site 5']], label='Your choice of next site to visit is: ', widget=widgets.RadioSelect)