![]() Ласло Краус |
Програмирање на језику Java - колоквијуми Други колоквијум 17. 1. 2009 |
|---|
Саставити на језику Java следећи пакет класа:
Label приказује протекло време од његовог последњег покретања. Рад часовника може да се покрене, да се привремено заустави и да се дефинитивно заврши.
Panel) која се иницијализује једним часовником и садржи 4x4 празна поља која у почетку не могу да се притискају мишем. Може да се затражи обележавање поља по случајном редоследу целим бројевима од 1 до 15 при чему једно поље остаје празно. Том прилико се покрене рад придруженог часовника и омогућава притискање поља мишем. Кад се неко непразно поље притисне мишем, оно постане празо а његова ознака се преноси на празно поље. Кад ознаке поља по врстама постану уређена по растућем редоследу, при чему доње десно поље је празно, онемогућава се даље притискање поља мишем и зауставља се рад придруженог часовника.

ispitx (x је број радне станице за којим се ради). Лозинка на свакој радној станици је student.I: (Nastava on \\Xs200-2)
// Casovnik.java
package slagalica;
import java.awt.*;
public class Casovnik extends Thread {
private Label prik;
private boolean radi = false;
private long t0;
public Casovnik( Label p) {
prik = p;
start();
}
public void run() {
try {
while( !interrupted()) {
while (!radi) synchronized (this) {wait();}
prik.setText( toString());
sleep( 100);
}
} catch (InterruptedException g) {}
}
public synchronized void kreni() {
t0 = System.currentTimeMillis();
radi = true; notify();
}
public void stani() { radi = false; }
public void zavrsi() { interrupt(); }
public String toString() {
long dt = (System.currentTimeMillis()-t0)/100;
return String.format( "%2d:%4.1f", dt/600, dt%600/10.);
}
}
// Tabla.java
package slagalica;
import java.awt.*;
import java.awt.event.*;
public class Tabla extends Panel {
Button[][] dugmad = new Button [4][4];
private Button prazno;
private Casovnik casovnik;
public Tabla (Casovnik cas) {
casovnik = cas;
setLayout( new GridLayout( 4, 4));
setEnabled(false);
DugmeAkcija osl = new DugmeAkcija();
for (int i=0; i<16; i++) {
add( dugmad[i/4][i%4] = new Button());
dugmad[i/4][i%4].addActionListener( osl);
}
}
void postavi() {
int[] a = new int [15];
for (int i=0; i<15; i++) {
int k, j;
do {
k = (int)(1 + Math.random() * 15);
for (j=0; j<i && a[j]!=k; j++);
} while (j < i);
a[i] = k;
dugmad[i/4][i%4].setLabel( Integer.toString( k));
}
dugmad[3][3].setLabel( "");
prazno = dugmad[3][3];
setEnabled( true);
casovnik.kreni();
}
private class DugmeAkcija implements ActionListener {
public void actionPerformed( ActionEvent d) {
Button dgm = ((Button)d.getSource());
if (dgm!=prazno) {
prazno.setLabel( dgm.getLabel());
dgm.setLabel( "");
prazno = dgm;
}
int i=0;
while (i<15) {
if (dugmad[i/4][i%4]==prazno ||
Integer.parseInt(dugmad[i/4][i%4].getLabel()) != i+1)
break;
i++;
}
if (i == 15) {
Tabla.this.setEnabled( false);
casovnik.stani();
}
}
}
}
Slagalica.java
package slagalica;
import java.awt.*;
import java.awt.event.*;
public class Slagalica extends Frame {
Label prik = new Label("00:00.0");
private Casovnik casovnik = new Casovnik(prik);
private Tabla tabla = new Tabla( casovnik);
public Slagalica() {
super( "Slagalica");
setSize( 198, 198);
setResizable( false);
popuniProzor();
setVisible( true);
addWindowListener( new WindowAdapter() {
public void windowClosing( WindowEvent d) { casovnik.zavrsi(); dispose(); }
});
}
private void popuniProzor() {
add( tabla, "Center");
Panel plo = new Panel(); add( plo, "South");
Button dgm = new Button( "Nova igra");
plo.add( dgm);
dgm.addActionListener( new ActionListener() {
public void actionPerformed( ActionEvent d) { tabla.postavi(); }
});
plo.add( prik);
}
public static void main( String[] varg) { new Slagalica(); }
}
(садржај)
Copyright © 2010, Laslo Kraus
Последња ревизија: 8.9.2010.