Also, hier ist der Quelltext des Atoms-Applets
(Leider bisher unkommentiert, vielleicht finde ich ja noch Zeit)
Als Java-Datei hier zum Download (2 kByte)
import java.applet.*; import java.awt.*; import java.awt.event.*; class OKasten { int anzahl; int farbe; public void setFarbe(int pfarbe) {farbe = pfarbe;} public int getFarbe() {return farbe;} public void setAnzahl(int panzahl) {anzahl = panzahl;} public int getAnzahl() {return anzahl;} } class OFeld { OKasten[][] feld = new OKasten[10][10]; public OFeld(int typus) { if (typus == 0) { for(int i=0; i < 10; i++) { for(int j=0; j < 10; j++) { feld[i][j] = new OKasten(); feld[i][j].setFarbe(0); feld[i][j].setAnzahl(0); } } } else { int raender; for(int i=0; i < 10; i++) { for(int j=0; j < 10; j++) { feld[i][j] = new OKasten(); feld[i][j].setFarbe(0); raender = 0; if ((i==1) || (i==8)) { raender += 1; } if ((j==1) || (j==8)) { raender += 1; } feld[i][j].setAnzahl(raender); } } } } public void setFarbe(int pfarbe, int x,int y) {feld[x][y].setFarbe(pfarbe);} public int getFarbe(int x,int y) {return feld[x][y].getFarbe();} public void setAnzahl(int panzahl, int x,int y) {feld[x][y].setAnzahl(panzahl);} public int getAnzahl(int x,int y) {return feld[x][y].getAnzahl();} } class RechtEck { static int laenge = 20; static int breite = 20; int x, y; RechtEck (int px, int py) { x = px; y = py; } void paint(Graphics g, int da, int farbe) { g.setColor(Color.black); g.drawRect(x,y,breite,laenge); switch (farbe) { case 1: g.setColor(Color.red); break; case 2: g.setColor(Color.blue); break; default: g.setColor(Color.black); } switch (da) { case 3: g.drawOval(x+2,y+2,4,4); case 2: g.drawOval(x+2,y+8,4,4); case 1: g.drawOval(x+8,y+2,4,4); break; case 0: break; default: g.drawOval(x+2,y+2,9,9); } } boolean inside(int px, int py) { return ((x < px) && (px < x + breite) && (y < py) && (py < y + laenge)); } } public class Atoms extends Applet implements MouseListener { RechtEck[][] kasten = new RechtEck[8][8]; static OFeld Spielbrett; static OFeld HilfsSpielbrett; static int durchlauf = 1; static int gfarbe = 1; static boolean gameover = false; static boolean ww = false; static boolean newclick = true; //********** ^ Variablen ^ ********** public void textAusgabe(Graphics g, String text) { g.setColor(Color.black); g.drawString(text, 10,190); } public boolean allesEins() { int zaeler = 0; ww = true; for(int aei=0; aei < 8; aei++) { for(int aej=0; aej < 8; aej++) { if (zaeler == 0) { if (Spielbrett.getFarbe(aei+1,aej+1) != 0) { zaeler = Spielbrett.getFarbe(aei+1,aej+1); } } else { if ((Spielbrett.getFarbe(aei+1,aej+1) != zaeler)&&(Spielbrett.getFarbe(aei+1,aej+1) != 0)) { ww = false; } } } } return ww; } public void mousePressed(MouseEvent event) {newclick=true;} public void mouseClicked(MouseEvent event) {} public void mouseEntered(MouseEvent event) {} public void mouseExited(MouseEvent event) {} public void mouseReleased(MouseEvent event) { if (newclick){ newclick=false; int da; int x, y; x = event.getX(); y = event.getY(); for(int i=0; i < 8; i++) { for(int j=0; j < 8; j++) { if ((kasten[i][j].inside(x,y)) && (Spielbrett.getFarbe(i+1,j+1) != gfarbe)) { if (gfarbe == 1) {gfarbe++;} else {gfarbe = 1;} da = Spielbrett.getAnzahl(i+1,j+1); da++; Spielbrett.setAnzahl(da,i+1,j+1); Spielbrett.setFarbe(gfarbe, i+1,j+1); boolean fertig; do { fertig = true; for(int ii=0; ii < 8; ii++) { for(int jj=0; jj < 8; jj++) { if (Spielbrett.getAnzahl(ii+1,jj+1)+HilfsSpielbrett.getAnzahl(ii+1,jj+1) > 3) { fertig = false; // Steine: Spielbrett.setAnzahl(Spielbrett.getAnzahl(ii+1,jj+1)-4+HilfsSpielbrett.getAnzahl(ii+1,jj+1), ii+1, jj+1); Spielbrett.setAnzahl(Spielbrett.getAnzahl(ii,jj+1)+1, ii,jj+1); Spielbrett.setAnzahl(Spielbrett.getAnzahl(ii+1,jj)+1, ii+1,jj); Spielbrett.setAnzahl(Spielbrett.getAnzahl(ii+1,jj+2)+1, ii+1,jj+2); Spielbrett.setAnzahl(Spielbrett.getAnzahl(ii+2,jj+1)+1, ii+2,jj+1); // Farben : if (Spielbrett.getAnzahl(ii+1, jj+1) < 1) { Spielbrett.setFarbe(0, ii+1,jj+1); } Spielbrett.setFarbe(gfarbe, ii,jj+1); Spielbrett.setFarbe(gfarbe, ii+1,jj); Spielbrett.setFarbe(gfarbe, ii+1,jj+2); Spielbrett.setFarbe(gfarbe, ii+2,jj+1); if (allesEins() && durchlauf > 3) { gameover = true; fertig = true; } } } } } while(fertig == false); } } } repaint(); } } public void init() { Spielbrett = new OFeld(0); HilfsSpielbrett = new OFeld(1); gameover = false; durchlauf = 1; for(int i=0; i < 8; i++) { for(int j=0; j < 8; j++) { kasten[i][j] = new RechtEck(i*RechtEck.breite+10,j*RechtEck.laenge+10); } } addMouseListener(this); repaint(); } public void paint(Graphics g) { g.setColor(Color.white); g.fillRect(0,0,getSize().width, getSize().height); int da; int farbe; if (durchlauf == 1) init(); durchlauf++; for(int i=0; i < 8; i++) { for(int j=0; j < 8; j++) { da = Spielbrett.getAnzahl(i+1,j+1); farbe = Spielbrett.getFarbe(i+1,j+1); kasten[i][j].paint(g, da, farbe); } } if (gameover == true) { textAusgabe(g,"Gameover! Klicken für Neustart!"); init(); } else if (gfarbe == 1) textAusgabe(g,"Der blaue Spieler ist am Zug!"); else textAusgabe(g,"Der rote Spieler ist am Zug!"); } }