![]() Ласло Краус |
Програмирање на језику 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.