Inital Version
This commit is contained in:
parent
7a9c8d0e45
commit
56f499c67a
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,38 @@
|
|||
import random
|
||||
|
||||
random.seed()
|
||||
|
||||
def my_winning_function(game_data,player_nr):
|
||||
#game_data is the array of games so far, either empty(first round) or formatted like this: player_nr [[False, False],[False, False]] (2 rounds of only defections)
|
||||
#player_nr is this players index, so whether they are the first(0) or the second(1) value in a round
|
||||
opponent_nr=1-player_nr
|
||||
#for ease of use this is index of the opponents value
|
||||
choice=False
|
||||
#this function should return either true(coorperate) or false(defect)
|
||||
|
||||
#your cool code goes here
|
||||
if len(game_data)>0:
|
||||
#what to do if this is NOT the first round
|
||||
choice=not game_data[len(game_data)-1][opponent_nr]
|
||||
#this example always does the opposite of what the opponent did last round
|
||||
else:
|
||||
#what to do in the first round
|
||||
choice=True
|
||||
#this example starts with a cooperation
|
||||
|
||||
#your cool code ended here
|
||||
return choice
|
||||
|
||||
def random_positive_leaner(game_data,player_nr):
|
||||
#game_data is the array of games so far, either empty(first round) or formatted like this: player_nr [[False, False],[False, False]] (2 rounds of only defections)
|
||||
#player_nr is this players index, so whether they are the first(0) or the second(1) value in a round
|
||||
opponent_nr=1-player_nr
|
||||
#for ease of use this is index of the opponents value
|
||||
choice=False
|
||||
#this function should return either true(coorperate) or false(defect)
|
||||
|
||||
#your cool code goes here
|
||||
if random.randint(0,10)<6:
|
||||
choice=True
|
||||
#your cool code ended here
|
||||
return choice
|
|
@ -0,0 +1,48 @@
|
|||
def analyze_results(game_data):
|
||||
defect_str="X "
|
||||
coorperate_str="O "
|
||||
spacer_str="___"*len(game_data)
|
||||
lines=["These are the results",spacer_str]
|
||||
str1="Player 1: "
|
||||
str2="Player 2: "
|
||||
p_1_points=0
|
||||
p_2_points=0
|
||||
for i in game_data:
|
||||
#visualize
|
||||
if i[0]:
|
||||
str1+=coorperate_str
|
||||
elif not i[0]:
|
||||
str1+=defect_str
|
||||
if i[1]:
|
||||
str2+=coorperate_str
|
||||
elif not i[1]:
|
||||
str2+=defect_str
|
||||
#award points
|
||||
if i[0] and i[1]:
|
||||
p_1_points+=3
|
||||
p_2_points+=3
|
||||
elif i[0] and i[1]==False:
|
||||
p_1_points+=5
|
||||
p_2_points+=0
|
||||
elif i[1] and i[0]==False:
|
||||
p_1_points+=0
|
||||
p_2_points+=5
|
||||
elif i[0]==False and i[1]==False:
|
||||
p_1_points+=1
|
||||
p_2_points+=1
|
||||
lines.append(str1+" Points:"+str(p_1_points))
|
||||
lines.append(str2+" Points:"+str(p_2_points))
|
||||
lines.append(spacer_str)
|
||||
#print the results
|
||||
for i in lines:
|
||||
print(i)
|
||||
|
||||
def play_game(games_array,func1,func2,how_many_times):
|
||||
for i in range(how_many_times):
|
||||
choice_1=func1(games_array,0)
|
||||
choice_2=func2(games_array,1)
|
||||
games_array.append([choice_1,choice_2])
|
||||
|
||||
def random_choice(game_data,player_nr):
|
||||
ret=True
|
||||
return ret
|
|
@ -0,0 +1,18 @@
|
|||
|
||||
#basic setup
|
||||
#The prisoner's dilemma is a game theory thought
|
||||
#experiment that involves two rational agents, each
|
||||
#of whom can COORPERATE for mutual benefit or betray
|
||||
#their partner ("defect") for individual reward.
|
||||
|
||||
#imports
|
||||
import helper_functions
|
||||
import contenders
|
||||
#vars
|
||||
games=[]
|
||||
#XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
# Put YOUR function down below
|
||||
#XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
|
||||
helper_functions.play_game( games,contenders.random_positive_leaner , contenders.my_winning_function ,30)
|
||||
helper_functions.analyze_results(games)
|
Loading…
Reference in New Issue