All pastes #156401 Raw Edit

Hangman bored on mir

public text v1 · immutable
#156401 ·published 2006-08-31 18:49 UTC
rendered paste body
alias hangman {
  /window -p @hangman
  /drawline @hangman 4 1 100 400 300 400
  /drawline @hangman 4 1 200 400 200 100
  /drawline @hangman 4 1 200 100 275 100
  /drawline @hangman 4 1 275 100 275 150
  /drawtext @hangman 4 arial 15 320 150 Total Wins: %hangwin 
  /drawtext @hangman 4 arial 15 320 170 Total Losses: %hangloss 

  /set %wrong 0
  /unset %guessed
  /set %done 0
  /set %word $read(hangwords.txt)
  /dialog -m hanglet hanglet
  var %a = 1
  while (%a <= $len(%word)) {
    /drawline @hangman 4 1 $calc(%a * 30) 50 $calc((%a * 30) + 20) 50
    /inc %a
  }
}

dialog hanglet {
  option dbu
  size 500 400 130 40
  button "A",1,0 0 10 10
  button "B",2,10 0 10 10
  button "C",3,20 0 10 10
  button "D",4,30 0 10 10
  button "E",5,40 0 10 10
  button "F",6,50 0 10 10
  button "G",7,60 0 10 10
  button "H",8,70 0 10 10
  button "I",9,80 0 10 10
  button "J",10,90 0 10 10
  button "K",11,100 0 10 10
  button "L",12,110 0 10 10
  button "M",13,120 0 10 10
  button "N",14,0 10 10 10
  button "O",15,10 10 10 10
  button "P",16,20 10 10 10
  button "Q",17,30 10 10 10
  button "R",18,40 10 10 10
  button "S",19,50 10 10 10
  button "T",20,60 10 10 10
  button "U",21,70 10 10 10
  button "V",22,80 10 10 10
  button "W",23,90 10 10 10
  button "X",24,100 10 10 10
  button "Y",25,110 10 10 10
  button "Z",26,120 10 10 10
  button "End Game",27,30 25 30 10, cancel
  button "New Game",28,70 25 30 10
}
on *:dialog:hanglet:close:0: { /endhgame }
on *:dialog:hanglet:sclick:*: {
  if ($did == 27) { /endhgame | halt }
  if ($did == 28) { /endhgame | /hangman | halt }
  if ($did == 0) { halt }
  if (!$did($did).enabled) { halt }  
  /did -b hanglet $did

  if ($did($did) isin %word) {
    /drawline @hangman $color(background) 50 400 50 600 50
    /drawtext @hangman 4 arial 15 400 50 $did($did) IS in the word
    /paintlet $did($did)
  }
  else {
    /drawline @hangman $color(background) 50 400 50 600 50
    /drawtext @hangman 4 arial 15 400 50 $did($did) is NOT in the word
    /nextpart
  }
}
alias nextpart {
  /inc %wrong
  if (%wrong == 1) { 
    /drawdot @hangman 4 30 275 175
    /drawdot @hangman 12 4 263 168
    /drawdot @hangman 12 4 287 168
    /drawline @hangman 1 1 261 186 289 186
  }
  if (%wrong == 2) {
    /drawline @hangman 4 3 275 200 275 275
  }
  if (%wrong == 3) {
    /drawline @hangman 4 1 275 225 250 260
  }
  if (%wrong == 4) {
    /drawline @hangman 4 1 275 225 300 260
  }
  if (%wrong == 5) {
    /drawline @hangman 4 1 275 275 240 325
  }
  if (%wrong == 6) {
    /drawline @hangman 4 1 275 275 310 325
    /drawdot @hangman 4 4 263 168
    /drawdot @hangman 4 4 287 168
    /drawline @hangman 1 1 260 166 266 172
    /drawline @hangman 1 1 266 166 260 172
    /drawline @hangman 1 1 284 166 290 172
    /drawline @hangman 1 1 290 166 284 172
    var %a = 1
    while (%a <= 26) { 
      /did -b hanglet %a
      /inc %a
    }
    %a = 1
    while (%a <= $len(%word)) {
      if (!$istok(%guessed,$at(%word,%a),44)) { /drawtext @hangman 7 arial 15 $calc((%a * 30) + 6) 35 $upper($at(%word,%a)) }
      /inc %a  
    }
    /drawline @hangman $color(background) 50 400 50 600 50
    /drawtext @hangman 4 arial 15 400 50 He dies, you lose!
    /inc %hangloss
    /drawline @hangman $color(background) 50 342 170 500 170
    /drawtext @hangman 4 arial 15 320 150 Total Wins: %hangwin 
    /drawtext @hangman 4 arial 15 320 170 Total Losses: %hangloss 
  }
}
alias paintlet {
  var %a = 1
  while (%a <= $len(%word)) {
    if ($at(%word,%a) == $1) { /drawtext @hangman 4 arial 15 $calc((%a * 30) + 6) 35 $1 | /inc %done | /set %guessed $addtok(%guessed,$1,44) }
    /inc %a
  }
  if (%done == $len(%word)) { 
    var %a = 1
    while (%a <= 26) { 
      /did -b hanglet %a
      /inc %a
    }
    /drawline @hangman $color(background) 50 400 50 600 50
    /drawtext @hangman 4 arial 15 400 50 You win!!!
    /inc %hangwin
    /drawline @hangman $color(background) 50 322 150 500 150
    /drawtext @hangman 4 arial 15 320 150 Total Wins: %hangwin 
    /drawtext @hangman 4 arial 15 320 170 Total Losses: %hangloss 
  }
}
menu channel {
  .Play hangman!: /hangman
}
alias endhgame {
  /unset %guessed
  /unset %wrong
  /unset %done
  /unset %word
  /dialog -x hanglet hanglet
  /window -c @hangman
}
alias at { return $right($left($1,$2),1) }