package dig; import webil.ui.*; public class Dig authority (*) { final label{Client->;Client<-} cl = new label{Client->;Client<-}; final Panel[{Client->;Client<-}, {Client->;Client<-}]{Client->;Client<-} mainPanel; final Grid[{Client->;Client<-}, {Client->;Client<-}]{Client->;Client<-} island; final private int{*->*; *<-*}[]{*->*; *<-*} map; public Dig{Client->;Client<-}() where authority (*), endorse({Client->*; *<-*}) { island = new Grid(6, 6); DigListener li = new DigListener(this); int i=0; while (i < 6) { int j=0; while (j < 6) { int index = i * 6 + j; Button db = new Button("" + index, "?"); db.addListener(li); island.setWidget(i, j, db); j = j + 1; } i = i + 1; } mainPanel = RootPanel.getRootPanel(Client); if (mainPanel != null) { mainPanel.addChild(cl, cl, island); } map = new int[36]; java.util.Random{*->*; *<-*} random = new java.util.Random(); try { int ti = 0; while (ti < 36) { map[ti] = random.nextInt(3); ti = ti + 1; } } catch (ArrayIndexOutOfBoundsException e) {} } public void dig{Client->;Client<-}(String{Client->;Client<-} ind) where authority (*), endorse({Client->; *<-*}) { int index = -1; try { index = Integer.parseInt(ind); } catch (NumberFormatException e) { } int row = index / 6; int column = index % 6; String result; int{*->*; *<-*}[] map = this.map; int{*->} out = -1; if (map != null && index >= 0 && index < map.length) { out = map[index]; } int trustedOut = endorse(out, {*->*; *<-*}); int revealed = declassify(trustedOut, {Client->; *<-*}); if (revealed == 0) { result = "$"; } else if (revealed == 1) { result = "X"; } else { result = "@"; } if (island != null) { island.setWidget(row, column, new Text(result)); } } public static void main{Client->;Client<-}() { Dig app = new Dig(); } } class DigListener implements ClickListener[{Client->;Client<-}, {Client->;Client<-}] { final Dig{Client->;Client<-} app; public DigListener{Client->;Client<-}(Dig{Client->;Client<-} v) { this.app = v; } public void onClick{Client->;Client<-}(Widget[{Client->;Client<-},{Client->;Client<-}]{Client->;Client<-} w) { if (w == null || app == null) { return; } String s = w.getID(); app.dig(s); } }