Aquí hay un Tic-Tac-Toe de 50 líneas:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TicTacToe extends JFrame implements ActionListener {
private JButton [] button = new JButton [9];
private int count = 0;
public TicTacToe () {
super ("Tic-Tac-Toe");
setSize (300, 300);
setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
setLayout (new GridLayout (3, 3));
init ();
}
private void init () {
count = 0;
for (int i = 0; i < 9; ++i) {
button [i] = new JButton ("");
button [i].addActionListener (this);
add (button [i]);
}
setVisible (true);
}
public void actionPerformed (ActionEvent a) {
String letter = (++count % 2 == 1) ? "X" : "O";
for (JButton jb : button)
if (a.getSource () == jb) {
jb.setText (letter);
jb.setEnabled (false);
}
if (count == 9) {
for (JButton jb : button)
remove (jb) ;
init ();
}
}
public static void main (String [] args) {
new TicTacToe ();
}
}
Como es Java, no está vinculado a Ubuntu, ni siquiera a Linux, sino que también se ejecutará en Solaris, Apple y Windows, donde se encuentra una JVM.
Pero eso es similar para soluciones en Smalltalk, Python, Ruby, ..., incluso en C o C ++ cuando se usa un marco portátil como Qt o Gnome, y no algunas clases de MFC patentadas. En C y C ++, por supuesto, tienes que volver a compilar las cosas.