import java.awt.*; import java.applet.*; import java.util.*; public class u2 extends Applet implements Runnable { //deklarationer av allt som behövs för gränssnitt mm: Button startknapp; Button nyttspel; Button klar; Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14; Button b15,b16,b17,b18,b19,b20,b21,b22,b23,b24; Label l1,l2,l3,l4,l5,l6,l7,l8; TextField tid; List lista; Thread thread; boolean borja; long starttid; Date datum; int sekund; //initieringar av gränssnitt mm: public void init() { setLayout(null); setBackground(Color.red); startknapp = new Button("start"); startknapp.reshape(240,10,95,25); startknapp.setBackground(Color.white); add(startknapp); klar = new Button("klar"); klar.reshape(240,190,95,25); klar.setBackground(Color.white); add(klar); nyttspel = new Button("spel igen"); nyttspel.reshape(240,220,95,25); nyttspel.setBackground(Color.white); add(nyttspel); b1 = new Button("157"); b1.reshape(90,10,45,25); b1.setBackground(Color.cyan); add(b1); b2 = new Button("147"); b2.reshape(140,10,45,25); b2.setBackground(Color.cyan); add(b2); b3 = new Button("167"); b3.reshape(190,10,45,25); b3.setBackground(Color.cyan); add(b3); b4 = new Button("251"); b4.reshape(90,40,45,25); b4.setBackground(Color.cyan); add(b4); b5 = new Button("239"); b5.reshape(140,40,45,25); b5.setBackground(Color.cyan); add(b5); b6 = new Button("249"); b6.reshape(190,40,45,25); b6.setBackground(Color.cyan); add(b6); b7 = new Button("67"); b7.reshape(90,70,45,25); b7.setBackground(Color.cyan); add(b7); b8 = new Button("56"); b8.reshape(140,70,45,25); b8.setBackground(Color.cyan); add(b8); b9 = new Button("57"); b9.reshape(190,70,45,25); b9.setBackground(Color.cyan); add(b9); b10 = new Button("17"); b10.reshape(90,100,45,25); b10.setBackground(Color.cyan); add(b10); b11 = new Button("18"); b11.reshape(140,100,45,25); b11.setBackground(Color.cyan); add(b11); b12 = new Button("19"); b12.reshape(190,100,45,25); b12.setBackground(Color.cyan); add(b12); b13 = new Button("525"); b13.reshape(90,130,45,25); b13.setBackground(Color.cyan); add(b13); b14 = new Button("625"); b14.reshape(140,130,45,25); b14.setBackground(Color.cyan); add(b14); b15 = new Button("615"); b15.reshape(190,130,45,25); b15.setBackground(Color.cyan); add(b15); b16 = new Button("13"); b16.reshape(90,160,45,25); b16.setBackground(Color.cyan); add(b16); b17 = new Button("16"); b17.reshape(140,160,45,25); b17.setBackground(Color.cyan); add(b17); b18 = new Button("14"); b18.reshape(190,160,45,25); b18.setBackground(Color.cyan); add(b18); b19 = new Button("188"); b19.reshape(90,190,45,25); b19.setBackground(Color.cyan); add(b19); b20 = new Button("198"); b20.reshape(140,190,45,25); b20.setBackground(Color.cyan); add(b20); b21 = new Button("196"); b21.reshape(190,190,45,25); b21.setBackground(Color.cyan); add(b21); b22 = new Button("255"); b22.reshape(90,220,45,25); b22.setBackground(Color.cyan); add(b22); b23 = new Button("245"); b23.reshape(140,220,45,25); b23.setBackground(Color.cyan); add(b23); b24 = new Button("235"); b24.reshape(190,220,45,25); b24.setBackground(Color.cyan); add(b24); tid = new TextField(); tid.setEditable(false); tid.reshape(240,40,95,30); tid.setBackground(Color.white); add(tid); lista = new List(); lista.reshape(340,10,165,235); lista.setBackground(Color.white); add(lista); l1 = new Label("1. 118+39 ="); l1.reshape(20,10,70,25); add(l1); l2 = new Label("2. 283-34 ="); l2.reshape(20,40,70,25); add(l2); l3 = new Label("3. 3*19 ="); l3.reshape(20,70,70,25); add(l3); l4 = new Label("4. 68/4 ="); l4.reshape(20,100,70,25); add(l4); l5 = new Label("5. 25*25 ="); l5.reshape(20,130,70,25); add(l5); l6 = new Label("6. 168/12 ="); l6.reshape(20,160,70,25); add(l6); l7 = new Label("7. 6*33 ="); l7.reshape(20,190,70,25); add(l7); l8 = new Label("8. 338-93 ="); l8.reshape(20,220,70,25); add(l8); tid.setText(" 00:00"); bort();//knappsatsen tas bort för överraskningseffekt vid startknappstryckning }//initieringar slut //tråden startas: public void start() { if (thread == null) thread = new Thread(this); if(borja) thread.start(); } //tråden körs, då boolean borja = true(vid startknappstryckning) visas tiden i tidsrutan public void run() { while (thread.isAlive()) { if(borja) tid.setText(" "+tidstart()); } } //tråden stoppas public void stop() { if (thread != null) thread.stop(); thread = null; } //räknaren som får fart vid tryck på startknappen String tidstart() { long nutid; long differens; long hundradel; String sek; String hundra; datum = new Date(); nutid = datum.getTime(); differens = nutid-starttid; hundradel = differens/10; if (hundradel > 99){ starttid = nutid; hundradel = 0; sekund +=1; } if (sekund > 59) sekund = 0; sek = Long.toString(sekund); if (sekund <= 9) sek = "0"+sek; hundra = Long.toString(hundradel); if (hundradel <= 9) hundra = "0"+hundra; //automatiskt stopp om tiden går över 59:99, knappsats och klarknapp tas bort if (sekund>=59 && hundradel >=99) { bort(); lista.clear(); lista.addItem("Du är för långsam."); lista.addItem("Prova igen!"); klar.hide(); thread.stop(); } return sek + ":" + hundra; } //tar hand om knapptryckningar: public boolean action(Event e,Object arg){ //gömmer knappar i raden vid rätt svar samt visar i listan att uträkningen är rätt: if (e.target == b1) { b1.hide(); b2.hide(); b3.hide(); lista.addItem("1. R"); return true; } if (e.target == b6) { b4.hide(); b5.hide(); b6.hide(); lista.addItem("2. R"); return true; } if (e.target == b9) { b7.hide(); b8.hide(); b9.hide(); lista.addItem("3. R"); return true; } if (e.target == b10) { b10.hide(); b11.hide(); b12.hide(); lista.addItem("4. R"); return true; } if (e.target == b14) { b13.hide(); b14.hide(); b15.hide(); lista.addItem("5. R"); return true; } if (e.target == b18) { b16.hide(); b17.hide(); b18.hide(); lista.addItem("6. R"); return true; } if (e.target == b20) { b19.hide(); b20.hide(); b21.hide(); lista.addItem("7. R"); return true; } if (e.target == b23) { b22.hide(); b23.hide(); b24.hide(); lista.addItem("8. R"); return true; } //vid starknappstryckning rensas listan, knapparna kommer fram och tråd stoppas för att kunna omstartas med tidsvisning: if (e.target == startknapp) { borja = true;//tråd kan köra igång tidsvisning if (lista.countItems() !=0) lista.clear(); spel(); stop(); start(); return true; } //om spel igenknappen trycks så nollställs tiden, tråden stoppas, ny tidsräkning förbereds, knappsatsen tas bort samt listan rensas: if (e.target == nyttspel) { tid.setText(" 00:00"); stop(); Date datum = new Date(); starttid =datum.getTime(); sekund=0; bort(); if (lista.countItems() !=0) lista.clear(); return true; } //om klarknappen trycks så försvinner den och knappsatsen, tråden stoppas samt antal rätt räknas ut och visas tillsammans med tiden om listan ej är tom: if (e.target == klar) { stop(); if (lista.countItems() !=0) lista.addItem(String.valueOf(lista.countItems())+" rätt på tiden"+tid.getText()); klar.hide(); bort(); return true; } //om fel svarsknapp trycks ned försvinner hela raden för att undvika fusk: if (e.target == b2 || e.target == b3) { b1.hide(); b2.hide(); b3.hide(); return true; } if (e.target == b4 || e.target == b5) { b4.hide(); b5.hide(); b6.hide(); return true; } if (e.target == b7 || e.target == b8) { b7.hide(); b8.hide(); b9.hide(); return true; } if (e.target == b11 || e.target == b12 ) { b10.hide(); b11.hide(); b12.hide(); return true; } if (e.target == b13 || e.target == b15) { b13.hide(); b14.hide(); b15.hide(); return true; } if (e.target == b16 || e.target == b17) { b16.hide(); b17.hide(); b18.hide(); return true; } if (e.target == b19 || e.target == b21) { b19.hide(); b20.hide(); b21.hide(); return true; } if (e.target == b22 || e.target == b24 ) { b22.hide(); b23.hide(); b24.hide(); return true; } return false; } //knappsatsen och klarknappen visas: void spel(){ b1.show(); b2.show(); b3.show(); b4.show(); b5.show(); b6.show(); b7.show(); b8.show(); b9.show(); b10.show(); b11.show(); b12.show(); b13.show(); b14.show(); b15.show(); b16.show(); b17.show(); b18.show(); b19.show(); b20.show(); b21.show(); b22.show(); b23.show(); b24.show(); klar.show(); } //knappsatsen tas bort: void bort(){ b1.hide(); b2.hide(); b3.hide(); b4.hide(); b5.hide(); b6.hide(); b7.hide(); b8.hide(); b9.hide(); b10.hide(); b11.hide(); b12.hide(); b13.hide(); b14.hide(); b15.hide(); b16.hide(); b17.hide(); b18.hide(); b19.hide(); b20.hide(); b21.hide(); b22.hide(); b23.hide(); b24.hide(); } }