Pastebin launched a little side project called VERYVIRAL.com, check it out ;-) Want more features on Pastebin? Sign Up, it's FREE!
Guest

Chanwit Kaewkasi

By: a guest on Sep 17th, 2008  |  syntax: Groovy  |  size: 2.67 KB  |  views: 853  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
This paste has a previous version, view the difference. Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <?init class="org.zkoss.zkplus.databind.AnnotateDataBinderInit" ?>
  3. <?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver"?>
  4.  
  5. <?page zscriptLanguage="GroovyGrails"?>
  6.  
  7. <zk>
  8.   <zscript>
  9.     class Hangman {
  10.      
  11.       def wrong
  12.       boolean gameOver = false
  13.       char[] buffer
  14.       def correct = 0
  15.       def win = false
  16.      
  17.       def getRevealedWord() {
  18.         def r=''
  19.         this.buffer.each {
  20.           r += "${it} "
  21.         }
  22.         return r
  23.       }                                        
  24.      
  25.       def word
  26.       void setWord(value) {
  27.         this.word = value
  28.         this.buffer = new char[value.length()]
  29.         this.word.eachWithIndex {obj, i ->
  30.           this.buffer[i] = '_'
  31.         }
  32.         this.wrong = 0
  33.         this.gameOver = false
  34.         this.correct = 0
  35.       }
  36.            
  37.       def guess = { ch ->
  38.         def right = false
  39.         word.eachWithIndex { it, i ->
  40.           if(it == ch) {
  41.             buffer[i] = it
  42.             correct++
  43.             right = true
  44.           }                                    
  45.         }
  46.         if(!right) {
  47.           wrong++
  48.           if(wrong == 12) gameOver = true
  49.         } else {
  50.           if(correct == word.length()) win = true
  51.         }                              
  52.       }                                                        
  53.     }
  54.    
  55.     words = ['polyglot','alliance','web']
  56.     a_to_m = ('a'..'m') as 5.0%2Fdocs%2Fapi%2F">String[]
  57.     n_to_z = ('n'..'z') as 5.0%2Fdocs%2Fapi%2F">String[]
  58.        
  59.     hangman = new Hangman(word:words[new 5.0%2Fdocs%2Fapi%2F">Random().nextInt(3)])
  60.  
  61.     nextstep = {
  62.       if(hangman.win || hangman.gameOver) return
  63.       hangman.guess self.label
  64.       answer.value = hangman.revealedWord                      
  65.       if(hangman.win) {
  66.         count.style = 'color: green'
  67.         count.value = 'YOU WIN !!!'
  68.       } else if(hangman.gameOver) {
  69.         count.style = 'color: red'
  70.         count.value = 'GAME OVER'
  71.       } else {
  72.         imgStep.src = "images/hangman/step${hangman.wrong+1}.gif"
  73.         count.value = hangman.wrong
  74.       }
  75.     }          
  76.   </zscript>
  77.   <vbox>
  78.     <hbox>
  79.       5.0%2Fdocs%2Fapi%2F">Number of Wrong Guess:
  80.       <label id="count" value="${hangman.wrong}"/>             
  81.     </hbox>
  82.     <image id="imgStep" src="images/hangman/step1.gif"/>
  83.     <hbox>
  84.       The Word:
  85.       <label id="answer" value="${hangman.revealedWord}"/>
  86.     </hbox>
  87.     Chracters:
  88.     <hbox>
  89.       <button label="${each}" width="28px" forEach="${a_to_m}" onClick="nextstep()"/>
  90.     </hbox>
  91.     <hbox>
  92.       <button label="${each}" width="28px" forEach="${n_to_z}" onClick="nextstep()"/>
  93.     </hbox>
  94.     <box height="20px"/>
  95.     <label value="New Game?"
  96.             style="cursor: pointer; text-decoration: underline; color: maroon;"
  97.             onClick="Executions.sendRedirect 'index.zul'"/>
  98.   </vbox>
  99. </zk>
clone this paste RAW Paste Data