Rock Paper Scissors

By sladekraven on Mar 02, 2006

You're welcome to see if this snippet works on mIRC versions earlier that 6.16.




Simple Rock Paper Scissors game type /rps to play type in a letter in the edit box and press play.




Type in r for rock


Type in p for paper


Type in s for scissors





It should automatically update your score with the dialog open.

dialog rps {
  title "Rock, Paper, Scissors"
  size -1 -1 120 100
  option dbu
  text "Wins: ",1,5 15 40 10
  text "Ties: ",2,5 25 40 10
  text "Losses: ",3,5 35 40 10
  text "*** Type in either R for Rock, P for Paper or S for scissors.  And then click Play. ***",4, 3 50 120 30
  edit "",5,5 70 50 10
  button "Play",6, 60 70 50 10
}

On *:Dialog:rps:*:*: {
  if ($devent == init) {
    did -a $dname 1 $did($dname,1) $iif($hget(rps,win),$hget(rps,win),0)
    did -a $dname 2 $did($dname,2) $iif($hget(rps,draw),$hget(rps,draw),0)
    did -a $dname 3 $did($dname,3) $iif($hget(rps,lose),$hget(rps,lose),0)
    if (%rps.guess) did -a $dname 5 %rps.guess
  }
  if ($devent == sclick) {
    var %x = $did(5)
    if ($did == 6) &&  (%x == r) || (%x == p) || (%x == s) { {
        .timer 1 1 did -ra $dname 6 1 ...
        .timer 1 2 did -ra $dname 6 2 ...
        .timer 1 3 did -ra $dname 6 3 ...
        .timer 1 4 did -ra $dname 6 Shoot!
        if (%x == r) .timer 1 4 rps r
        if (%x == p) .timer 1 4 rps p
        if (%x == s) .timer 1 4 rps s
        .timer 1 5 did -ra $dname 6 Play
        set %rps.guess %x
      }
    }
  }
}

menu menubar {
  Rock Paper Scissors
  .Erase Data:{
    if ($input(Are you sure you want to erase you score?,y,Confirm Deletion) == $true) {
      if ($hget(rps)) hfree rps
      .remove rps.dat
    }
  }
  .Unload: unload -rs $script
}

alias rps {
  if (!$1) dialog -dm rps rps 
  if (r == $1) || (p == $1) || (s == $1) {
    if (!$hget(rps)) hmake rps 10
    var %rps1 = $rand(1,3)
    var %rps2 = $iif(r == $1,Rock,$iif($1 == p,Paper,Scissors))
    var %rps3 = $iif(%rps1 == 1,Rock,$iif(%rps1 == 2,Paper,Scissors))
    set %rps.guess $1

    ;Rock variants
    if (%rps2 == Rock) && (%rps3 == Scissors) goto win 
    if (%rps2 == Rock) && (%rps3 == Rock) goto draw
    if (%rps2 == Rock) && (%rps3 == Paper) goto lose

    ;Paper variants
    if (%rps2 == Paper) && (%rps3 == Rock) goto win
    if (%rps2 == Paper) && (%rps3 == Paper) goto draw
    if (%rps2 == Paper) && (%rps3 == Scissors) goto lose

    ;Scissors variants
    if (%rps2 == Scissors) && (%rps3 == Paper) goto win
    if (%rps2 == Scissors) && (%rps3 == Scissors) goto draw
    if (%rps2 == Scissors) && (%rps3 == Rock) goto lose

    ;Dual decision
    :win
    echo -a You won this dual your %rps2 beats your opponents %rps3
    hinc rps win
    update.rps 
    halt
    :lose
    echo -a You lost this dual your opponents %rps3 beats your %rps2
    hinc rps lose
    update.rps 
    halt
    :draw
    echo -a It's a draw your %rps2 can't beat your opponents %rps3
    hinc rps draw
    update.rps 
    halt
    hsave -o rps rps.dat
  }
  if ($1 == stats) echo -a Wins: $iif($hget(rps,win),$hget(rps,win),0)  $&
    Draws: $iif($hget(rps,draw),$hget(rps,draw),0)  $&
    Losses: $iif($hget(rps,lose),$hget(rps,lose),0)
}

On *:Exit: { 
  if ($hget(rps)) hsave -o rps rps.dat 
}

On *:Start: {
  inc %rps.startup
  if (%rps.startup == 1) {
    echo -a You have just loaded Rock Paper Scissors. Type /rps to play.
  }
  hmake rps 10
  if ($isfile(rps.dat)) hload -o rps rps.dat
}

alias update.rps {
  if ($dialog(rps)) {
    did -ra rps 1 Wins: $iif($hget(rps,win),$hget(rps,win),0)
    did -ra rps 2 Ties: $iif($hget(rps,draw),$hget(rps,draw),0)
    did -ra rps 3 Losses: $iif($hget(rps,lose),$hget(rps,lose),0)
  }
}

Comments

Sign in to comment.
CadetAndrew   -  May 15, 2009

Good question, how DO you start the game?

 Respond  
wizard38   -  Apr 04, 2009

how i start this game????

 Respond  
Cardinal_94   -  Oct 09, 2007

Good Script man i like it!

 Respond  
Are you sure you want to unfollow this person?
Are you sure you want to delete this?
Click "Unsubscribe" to stop receiving notices pertaining to this post.
Click "Subscribe" to resume notices pertaining to this post.