*じゃんけん(JSF) [#x6df86ea] JavaServer Facesでじゃんけんをするページを作成する。~ ボタンを押すたびにキャラクターがじゃんけんしてくれる。~ ~ まず、ManagedBeanを作成する。~ じゃんけんの結果を格納する変数resultとそのgetter/setterを作成する。~ 値の意味は0:初期状態、1:グー、2:チョキ、3:パー、4:グッチョッパー(任意)とする。~ (本来はenumを使用するが簡略化のため)~ 乱数を使用してじゃんけんをするjanken()メソッドを作成する。~ グー:30%、チョキ:30%、パー:30%、グッチョッパー(任意):10%の確率に設定した。~ 結果を初期状態に戻すreset()メソッドも作成する。 > import javax.inject.Named; import javax.enterprise.context.RequestScoped; @Named(value = "janken") @RequestScoped public class Janken { private int result; public janken() { public Janken() { } // getter/setter省略 public void janken() { double rand = Math.random(); result = (int) (rand / 0.3) + 1; } public void reset() { result = 0; } } 続いて、じゃんけんをする画面をFaceletsで作成する。~ 事前に、初期画面、グー、チョキ、パー、グッチョッパー(任意)用の同一サイズの画像を作成し、プロジェクト名/プロジェクト名-war/webに格納しておく。~ #ref(jn1.jpg)~ h:graphicImageは画像を表示するためのタグである。~ 実際の画像に合わせて画像の幅(width)、高さ(height)、場所(value)を指定する。~ ただし、画像の場所をじゃんけんの結果(result)で変えるようにする。eqは==の意味である。~ janken()メソッドを呼び出してじゃんけんをするグー、チョキ、パーのボタンとreset()メソッドを呼び出して初期状態にする戻るボタンを作成する。~ 各ボタンに対しf:ajaxタグを使用して、ボタンが押されたときに画像のみを書き換えるようにする。~ > <?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:f="http://xmlns.jcp.org/jsf/core"> <h:head> <title>じゃんけんポン</title> </h:head> <h:body> じゃんけんポン♪ <h:form> <h:graphicImage id="im" width="240" height="135" value="#{janken.result eq 0 ? 'd.jpg' : janken.result eq 1 ? 'g.jpg' : janken.result eq 2 ? 'c.jpg' : janken.result eq 3 ? 'p.jpg' : 'gcp.jpg'}"/> <br/> <h:commandButton value="グー" action="#{janken.janken()}"> <f:ajax render="im"/> </h:commandButton> <h:commandButton value="チョキ" action="#{janken.janken()}"> <f:ajax render="im"/> </h:commandButton> <h:commandButton value="パー" action="#{janken.janken()}"> <f:ajax render="im"/> </h:commandButton> <h:commandButton value="戻る" action="#{janken.reset()}"> <f:ajax render="im"/> </h:commandButton> </h:form> </h:body> </html> ~ (注意)~ 乱数の質が悪いため、同じ結果が連続で出やすい。~ ~ *コメント [#t52c9257] #comment