home *** CD-ROM | disk | FTP | other *** search
- import java.applet.Applet;
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Dimension;
- import java.awt.Event;
- import java.awt.Graphics;
- import java.awt.Image;
-
- public class TicTacToe extends Applet {
- int white;
- int black;
- static final int[] moves = new int[]{4, 0, 2, 6, 8, 1, 3, 5, 7};
- static boolean[] won = new boolean[512];
- static final int DONE = 511;
- // $FF: renamed from: OK int
- static final int field_0 = 0;
- static final int WIN = 1;
- static final int LOSE = 2;
- static final int STALEMATE = 3;
- boolean first = true;
- Image notImage;
- Image crossImage;
-
- static void isWon(int var0) {
- for(int var1 = 0; var1 < 511; ++var1) {
- if ((var1 & var0) == var0) {
- won[var1] = true;
- }
- }
-
- }
-
- int bestMove(int var1, int var2) {
- int var3 = -1;
-
- label57:
- for(int var4 = 0; var4 < 9; ++var4) {
- int var5 = moves[var4];
- if ((var1 & 1 << var5) == 0 && (var2 & 1 << var5) == 0) {
- int var6 = var1 | 1 << var5;
- if (won[var6]) {
- return var5;
- }
-
- for(int var7 = 0; var7 < 9; ++var7) {
- if ((var6 & 1 << var7) == 0 && (var2 & 1 << var7) == 0) {
- int var8 = var2 | 1 << var7;
- if (won[var8]) {
- continue label57;
- }
- }
- }
-
- if (var3 == -1) {
- var3 = var5;
- }
- }
- }
-
- if (var3 != -1) {
- return var3;
- } else {
- for(int var9 = 0; var9 < 9; ++var9) {
- int var10 = moves[var9];
- if ((var1 & 1 << var10) == 0 && (var2 & 1 << var10) == 0) {
- return var10;
- }
- }
-
- return -1;
- }
- }
-
- boolean yourMove(int var1) {
- if (var1 >= 0 && var1 <= 8) {
- if (((this.black | this.white) & 1 << var1) != 0) {
- return false;
- } else {
- this.black |= 1 << var1;
- return true;
- }
- } else {
- return false;
- }
- }
-
- boolean myMove() {
- if ((this.black | this.white) == 511) {
- return false;
- } else {
- int var1 = this.bestMove(this.white, this.black);
- this.white |= 1 << var1;
- return true;
- }
- }
-
- int status() {
- if (won[this.white]) {
- return 1;
- } else if (won[this.black]) {
- return 2;
- } else {
- return (this.black | this.white) == 511 ? 3 : 0;
- }
- }
-
- public void init() {
- this.notImage = ((Applet)this).getImage(((Applet)this).getCodeBase(), "images/not.gif");
- this.crossImage = ((Applet)this).getImage(((Applet)this).getCodeBase(), "images/cross.gif");
- }
-
- public void paint(Graphics var1) {
- Dimension var2 = ((Component)this).size();
- var1.setColor(Color.black);
- int var3 = var2.width / 3;
- int var4 = var2.height / 3;
- var1.drawLine(var3, 0, var3, var2.height);
- var1.drawLine(2 * var3, 0, 2 * var3, var2.height);
- var1.drawLine(0, var4, var2.width, var4);
- var1.drawLine(0, 2 * var4, var2.width, 2 * var4);
- int var5 = 0;
-
- for(int var6 = 0; var6 < 3; ++var6) {
- for(int var7 = 0; var7 < 3; ++var5) {
- if ((this.white & 1 << var5) != 0) {
- var1.drawImage(this.notImage, var7 * var3 + 1, var6 * var4 + 1, this);
- } else if ((this.black & 1 << var5) != 0) {
- var1.drawImage(this.crossImage, var7 * var3 + 1, var6 * var4 + 1, this);
- }
-
- ++var7;
- }
- }
-
- }
-
- public boolean mouseUp(Event var1, int var2, int var3) {
- switch (this.status()) {
- case 1:
- case 2:
- case 3:
- ((Applet)this).play(((Applet)this).getCodeBase(), "audio/return.au");
- this.white = this.black = 0;
- if (this.first) {
- this.white |= 1 << (int)(Math.random() * (double)9.0F);
- }
-
- this.first = !this.first;
- ((Component)this).repaint();
- return true;
- default:
- Dimension var4 = ((Component)this).size();
- int var5 = var2 * 3 / var4.width;
- int var6 = var3 * 3 / var4.height;
- if (this.yourMove(var5 + var6 * 3)) {
- ((Component)this).repaint();
- switch (this.status()) {
- case 1:
- ((Applet)this).play(((Applet)this).getCodeBase(), "audio/yahoo1.au");
- break;
- case 2:
- ((Applet)this).play(((Applet)this).getCodeBase(), "audio/yahoo2.au");
- case 3:
- break;
- default:
- if (this.myMove()) {
- ((Component)this).repaint();
- switch (this.status()) {
- case 1:
- ((Applet)this).play(((Applet)this).getCodeBase(), "audio/yahoo1.au");
- break;
- case 2:
- ((Applet)this).play(((Applet)this).getCodeBase(), "audio/yahoo2.au");
- case 3:
- break;
- default:
- ((Applet)this).play(((Applet)this).getCodeBase(), "audio/ding.au");
- }
- } else {
- ((Applet)this).play(((Applet)this).getCodeBase(), "audio/beep.au");
- }
- }
- } else {
- ((Applet)this).play(((Applet)this).getCodeBase(), "audio/beep.au");
- }
-
- return true;
- }
- }
-
- public String getAppletInfo() {
- return "TicTacToe by Arthur van Hoff";
- }
-
- static {
- isWon(7);
- isWon(56);
- isWon(448);
- isWon(73);
- isWon(146);
- isWon(292);
- isWon(273);
- isWon(84);
- }
- }
-