// Reversi.java import RevState; import java.awt.*; import java.applet.*; public class Reversi extends Applet { private RevState state; private static int level = 0; public Color getBackground () { return Color.lightGray; } public void paint (Graphics g) { state.paint (this, g); } void reset (int color) { if (color == RevState.RED) { state.reset (RevState.RED); // Computer beginnt state = (RevState) state.bestMove (level); } else state.reset (RevState.BLUE); // Spieler beginnt repaint(); } Choice choice; public void init () { add (new Label ("Stärke")); choice = new Choice (); for (int i=0; i<=5; i++) choice.addItem (String.valueOf (i)); choice.select (level); add (choice); add (new Label ("Neues Spiel:")); add (new Button ("Computer")); add (new Button ("Mensch")); state = new RevState (); reset (RevState.BLUE); } public boolean action (Event evt, Object arg) { if (evt.target == choice) { level = new Integer ((String) arg).intValue (); reset (RevState.BLUE); } else if ("Computer".equals (arg)) { reset (RevState.RED); return true; } else if ("Mensch".equals(arg)) { reset (RevState.BLUE); return true; } repaint(); return false; } public boolean mouseDown (Event evt, int x, int y) { x = state.column (x); y = state.row (y); if (state.isValidMove (x,y,RevState.BLUE)) { state.doMove (x,y); repaint(); if (state.nMoves () > 0) { RevState s2 = (RevState) state.bestMove(level); if(s2.activeColor == state.activeColor) s2.activeColor = -s2.activeColor; state = s2; repaint(); } } return true; } public String getAppletInfo () { return "Reversi (M.H., D.R., J.S. '97), basiert auf 'Vier gewinnt' (H.R. '96)"; } }