View difference between Paste ID: f3eea6d28 and
SHOW:
|
|
- or go back to the newest paste.
1 | - | |
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 String[] | |
57 | n_to_z = ('n'..'z') as String[] | |
58 | ||
59 | hangman = new Hangman(word:words[new 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 | 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> |