Voici un Tic-Tac-Toe de 50 lignes :
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 ();
}
}
Puisqu'il s'agit de Java, il n'est pas lié à Ubuntu, ni même à Linux, mais fonctionnera sur Solaris, Apple et Windows également - là où se trouve une JVM.
Mais il en va de même pour les solutions en Smalltalk, Python, Ruby, etc. - même en C ou C++ quand on utilise un framework portable comme Qt ou Gnome, et non des classes MFC propriétaires. En C et C++, il faut bien sûr recompiler le tout.