package Ġar . edu . ut n . fr ba . t acs . tp . api . her oc ard sg ame . models . game . player Ċ Ċ import Ġar . edu . ut n . fr ba . t acs . tp . api . her oc ard sg ame . models . accounts . user . User Ċ import Ġar . edu . ut n . fr ba . t acs . tp . api . her oc ard sg ame . models . game . Card Ċ Ċ data Ġclass ĠPlayer ( ĊĠĠĠ Ġval Ġuser : ĠUser , ĊĠĠĠ Ġval Ġcreated Match : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġval Ġavailable Cards : ĠList < Card > Ġ= Ġempty List (), ĊĠĠĠ Ġval Ġpri ze Cards : ĠList < Card > Ġ= Ġempty List () Ċ ) Ġ{ ĊĊĠĠĠ Ġfun Ġwin D uel ( price Card : ĠCard ): ĠPlayer Ġ= ĊĠĠĠĠĠĠĠ Ġthis . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpri ze Cards Ġ= Ġpri ze Cards Ġ+ Ġprice Card Ġ+ Ġavailable Cards . first (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġavailable Cards Ġ= Ġavailable Cards . drop ( 1 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġlose D uel (): ĠPlayer Ġ= ĊĠĠĠĠĠĠĠ Ġthis . copy ( available Cards Ġ= Ġavailable Cards . drop ( 1 )) ĊĊĠĠĠ Ġfun Ġtie D uel (): ĠPlayer Ġ= ĊĠĠĠĠĠĠĠ Ġthis . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpri ze Cards Ġ= Ġpri ze Cards Ġ+ Ġavailable Cards . first (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġavailable Cards Ġ= Ġavailable Cards . drop ( 1 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġwin Match (): ĠPlayer Ġ= Ġcopy ( user Ġ= Ġuser . win Match (). end Match ()) ĊĊĠĠĠ Ġfun Ġtie Match (): ĠPlayer Ġ= Ġcopy ( user Ġ= Ġuser . tie Match (). end Match ()) ĊĊĠĠĠ Ġfun Ġlose Match (): ĠPlayer Ġ= Ġcopy ( user Ġ= Ġuser . lose Match (). end Match ()) ĊĊĠĠĠ Ġfun Ġstart Match (): ĠPlayer Ġ= Ġcopy ( user Ġ= Ġuser . start Match ()) ĊĊĠĠĠ Ġfun Ġend Match (): ĠPlayer Ġ= Ġcopy ( user Ġ= Ġuser . end Match ()) ĊĊĠĠĠ Ġfun Ġcalculate Win Player ( opp onent : ĠPlayer ): ĠList < Player > Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ( prize Cards . size . compareTo ( opp onent . prize Cards . size )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> ĠlistOf ( this . win Match (), Ġopponent . lose Match ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 Ġ-> ĠlistOf ( this . lose Match (), Ġopponent . win Match ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠlistOf ( this . tie Match (), Ġopponent . tie Match ()) ĊĠĠĠĠĠĠĠ Ġ} Ċ }