140 lines
2.4 KiB
Text
140 lines
2.4 KiB
Text
while(isobject(RockPaperScissors))
|
|
RockPaperScissors.delete();
|
|
|
|
new scriptObject(RockPaperScissors);
|
|
|
|
function RockPaperScissors::startGame(%this)
|
|
{
|
|
%this.idle = true;
|
|
echo("Starting rock paper scissors, please type choose(\"choice\"); to proceed!");
|
|
}
|
|
|
|
function RockPaperScissors::endGame(%this)
|
|
{
|
|
%this.idle = true;
|
|
}
|
|
|
|
function RockPaperScissors::main(%this)
|
|
{
|
|
%this.idle = 0;
|
|
|
|
if(getRandom(1,2) == 1)
|
|
{
|
|
%result = %this.getChoiceByUserFrequency();
|
|
}
|
|
else
|
|
{
|
|
%c[0] = "rock";
|
|
%c[1] = "paper";
|
|
%c[2] = "scissors";
|
|
|
|
%result = %c[getRandom(0,2)];
|
|
}
|
|
|
|
%userChoice = %this.current;
|
|
|
|
%winner = thisVSthat(%userChoice,%result);
|
|
|
|
if(%winner == 0)
|
|
{
|
|
echo("You both chose "@%userChoice@", tie!");
|
|
}
|
|
else
|
|
if(%winner == 1)
|
|
{
|
|
echo("You chose "@%userChoice@" computer chose "@%result@", you win!");
|
|
}
|
|
else
|
|
if(%winner == 2)
|
|
{
|
|
echo("You chose "@%userChoice@" computer chose "@%result@", you lose!");
|
|
}
|
|
|
|
%this.idle = true;
|
|
}
|
|
|
|
function RockPaperScissors::getChoiceByUserFrequency(%this)
|
|
{
|
|
%weakness["rock"] = "paper";
|
|
%weakness["paper"] = "Scissors";
|
|
%weakness["scissors"] = "rock";
|
|
|
|
%a[0] = %this.choice["rock"];
|
|
%a[1] = %this.choice["paper"];
|
|
%a[2] = %this.choice["Scissors"];
|
|
|
|
%b[0] = "rock";
|
|
%b[1] = "paper";
|
|
%b[2] = "scissors";
|
|
|
|
for(%i=0;%i<3;%i++)
|
|
{
|
|
%curr = %a[%i];
|
|
|
|
if(%temp $= "")
|
|
{
|
|
%temp = %curr;
|
|
%tempi = %i;
|
|
}
|
|
else
|
|
if(%curr > %temp)
|
|
{
|
|
%temp = %curr;
|
|
%tempi = %i;
|
|
}
|
|
}
|
|
|
|
return %weakness[%b[%tempi]];
|
|
}
|
|
|
|
function choose(%this)
|
|
{
|
|
%rps = rockPaperScissors;
|
|
|
|
if(!%rps.idle)
|
|
{
|
|
return 0;
|
|
}
|
|
else
|
|
if(%this !$= "rock" && %this !$= "paper" && %this !$= "scissors")
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
%rps.choice[%this]++;
|
|
%rps.current = %this;
|
|
%rps.main();
|
|
|
|
return %this;
|
|
}
|
|
|
|
function thisVSthat(%this,%that)
|
|
{
|
|
if(%this !$= "rock" && %this !$= "paper" && %this !$= "scissors")
|
|
{
|
|
return 0;
|
|
}
|
|
else
|
|
if(%that !$= "rock" && %that !$= "paper" && %that !$= "scissors")
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
%weakness["rock"] = "paper";
|
|
%weakness["paper"] = "Scissors";
|
|
%weakness["scissors"] = "rock";
|
|
|
|
if(%weakness[%this] $= %that)
|
|
{
|
|
%result = 2;
|
|
}
|
|
else
|
|
if(%weakness[%that] $= %this)
|
|
{
|
|
%result = 1;
|
|
}
|
|
else
|
|
%result = 0;
|
|
|
|
return %result;
|
|
}
|