Nada

Laboration 3 - Sten, sax, påse

På föreläsning 4 skrevs ett serverprogram som spelar sten, sax, påse med alla villiga klienter. Koden finns här. Nu ska du skriva ett grafiskt klientprogram och du ska använda idel swingkomponenter, nämligen JFrame, JTextField, JLabel, JButton, ImageIcon och Box. Spelet är känt över hela världen och det finns mycket att hämta på webbsidan Rock, paper, scissors, bland annat tre gif-bilder.

En enkel klient

Börja med en enkel klient utan grafik, som öppnar en förbindelse med
  try                                                          {
     Socket socket=new Socket("shell.e.kth.se",4712)           ;
     BufferedReader in=new BufferedReader(new InputStreamReader(
                           socket.getInputStream()))           ;
     PrintWriter ut=new PrintWriter(socket.getOutputStream())  ;
     ut.println("Charlotta"); ut.flush()                       ;
     System.out.println(in.readLine())                         ;}
Den ska alltså sända ditt namn till den server som lyssnar på port 4712 och skriva ut det svar du får. Kom ihåg ut.flush(), annars sänds inte namnet iväg. När klienten fungerar kan du ägna dej helt åt det grafiska gränssnittet. Om servern skulle ha dött på shell.e.kth.se kan du använda servern som går på w2.nada.kth.se i stället. Samma portnummer.

Swingkomponenterna

Ditt program ska vara en
public class Klient extends JFrame implements ActionListener{
där vänstra halvan är din spelplan och högra halvan datorns spelplan. Du ska använda BoxLayout, den layout som oftast blir bra. Varje spelplan är en vertikal Box som uppifrån och ner innehåller Låt Spelplan vara en inre klass, så är det enkelt att skapa två exemplar av den och lägga bredvid varandra i en horisontell box. Fördelen med en box är att man kan lägga in fasta mellanrum mellan komponenterna Om man deklarerat
Box box=Box.createHorizontalBox(); kan man göra så här.
   box.add(jag);  //Spelplan jag=new Spelplan("Jag:"); har redan deklarerats
   box.add(Box.createHorizontalStrut(20)); //Ett mellanrum
   box.add(du);   //Spelplan du=new Spelplan("Datorn:"); har redan deklarerats

Extrauppgift: Lägg till ljudeffekter! (Kan kräva hörlurar på elektrodatorer utan högtalare).

Några tips