import java.awt.*; import java.awt.geom.*; import java.awt.event.*; import java.applet.Applet; public class mothello extends Applet implements ActionListener{ protected gameBoard thegame; Label title,ch1,ch2,lch1,lch2; public Label status,pozmouse,p1l,p2l; public TextArea p1score,p2score; public Label piese1,piese2; Choice ply1,ply2,level1,level2; Button start,stop; //start applet methods public void init(){ thegame=new gameBoard(this); title=new Label("(M)othello",Label.CENTER); setFont(new Font("Verdana",Font.BOLD,14)); setLayout(null); add(title); add(thegame); title.setBounds(165,0,270,50); thegame.setBounds(165,50,270,270); title.setBackground(Color.gray); //tabelele cu mutarile p1score=new TextArea("",40,7,TextArea.SCROLLBARS_VERTICAL_ONLY); p2score=new TextArea("",40,7,TextArea.SCROLLBARS_VERTICAL_ONLY); p1score.setBackground(Color.gray); p2score.setBackground(Color.gray); p1score.setForeground(Color.red); p2score.setForeground(Color.green); p1score.setEditable(false); p2score.setEditable(false); //label cu jucatorii p1l=new Label("Player 1",Label.CENTER); p2l=new Label("Player 2",Label.CENTER); p1l.setForeground(Color.red); p2l.setForeground(Color.green); p1l.setBackground(Color.gray); p2l.setBackground(Color.gray); add(p1l);add(p2l);add(p1score);add(p2score); piese1=new Label("2 pieces",Label.CENTER); piese1.setForeground(Color.red); piese1.setBackground(Color.gray); piese2=new Label("2 pieces",Label.CENTER); piese2.setForeground(Color.green); piese2.setBackground(Color.gray); add(piese1);add(piese2); //label status al jocului status=new Label("Waiting to begin game...",Label.CENTER); status.setBackground(Color.gray); status.setForeground(Color.black); status.setFont(new Font("Verdana",Font.ITALIC,10)); add(status); pozmouse=new Label("",Label.CENTER); pozmouse.setBackground(Color.gray); pozmouse.setForeground(Color.black); pozmouse.setFont(new Font("Verdana",Font.ITALIC,10)); add(pozmouse); //combo-boxuri cu optiunile de playeri ply1=new Choice(); ply1.addItem("-------------------------"); ply1.addItem("Human Player"); ply1.addItem("Computer Player"); ply1.setBackground(Color.gray); ply1.setForeground(Color.red); ply1.select(0); ply1.setFont(new Font("Georgia",Font.PLAIN,12)); ply2=new Choice(); ply2.addItem("-------------------------"); ply2.addItem("Human Player"); ply2.addItem("Computer Player"); ply2.setBackground(Color.gray); ply2.setForeground(Color.green); ply2.select(0); ply2.setFont(new Font("Georgia",Font.PLAIN,12)); add(ply1);add(ply2); ply1.addItemListener(new ascultChoice(1)); ply2.addItemListener(new ascultChoice(2)); //combo-boxuri pentru nivele level1=new Choice(); level1.addItem("Level -1 "); level1.addItem("Level 0"); level1.addItem("Level 1"); level1.addItem("Level 2"); level1.setBackground(Color.gray); level1.setForeground(Color.red); level1.select(0); level1.setFont(new Font("Georgia",Font.PLAIN,12)); level2=new Choice(); level2.addItem("Level -1"); level2.addItem("Level 0"); level2.addItem("Level 1"); level2.addItem("Level 2"); level2.setBackground(Color.gray); level2.setForeground(Color.green); level2.select(0); level2.setFont(new Font("Georgia",Font.PLAIN,12)); add(level1);add(level2); //label pentru choice ch1=new Label("Please choose player 1...",Label.LEFT); ch2=new Label("Please choose player 2 ...",Label.LEFT); ch1.setForeground(Color.black); ch2.setForeground(Color.black); ch1.setBackground(Color.gray); ch2.setBackground(Color.gray); ch1.setFont(new Font("Verdana",Font.ITALIC,10)); ch2.setFont(new Font("Verdana",Font.ITALIC,10)); add(ch1);add(ch2); lch1=new Label("Choose level for player 1",Label.LEFT); lch2=new Label("Choose level for player 2",Label.LEFT); lch1.setForeground(Color.black); lch2.setForeground(Color.black); lch1.setBackground(Color.gray); lch2.setBackground(Color.gray); lch1.setFont(new Font("Verdana",Font.ITALIC,10)); lch2.setFont(new Font("Verdana",Font.ITALIC,10)); add(lch1);add(lch2); //buton pentru startul jocului start=new Button("Start game"); start.setActionCommand("start"); start.setForeground(Color.black); start.setBackground(Color.lightGray); start.addActionListener(this); add(start); //buton de oprire al jocului stop=new Button("End game"); stop.setActionCommand("stop"); stop.setForeground(Color.black); stop.setBackground(Color.lightGray); stop.addActionListener(this); stop.setEnabled(false); add(stop); //pozitionare componente pe ecran p1l.setBounds(0,0,165,30); p2l.setBounds(435,0,165,30); piese1.setBounds(0,30,165,20); piese2.setBounds(435,30,165,20); p1score.setBounds(10,50,145,270); p2score.setBounds(445,50,145,270); status.setBounds(165,320,270,20); ch1.setBounds(10,380,145,20); ch2.setBounds(445,380,145,20); ply1.setBounds(10,400,145,20); ply2.setBounds(445,400,145,20); lch1.setBounds(10,430,145,20); lch2.setBounds(445,430,145,20); level1.setBounds(10,450,155,20); level2.setBounds(445,450,155,20); lch1.setVisible(false);lch2.setVisible(false); level1.setVisible(false);level2.setVisible(false); start.setBounds(255,400,90,20); stop.setBounds(255,440,90,20); pozmouse.setBounds(165,340,270,20); } public void paint(Graphics g){ g.setColor(Color.gray); g.fillRect(0,0,getWidth(),getHeight()); } public void update(Graphics g){ paint(g); } //end applet methods //inner class item listener class ascultChoice implements ItemListener{ int id; public ascultChoice(int id){ this.id=id; } public void itemStateChanged(ItemEvent e){ String which=(String)e.getItem(); int idx=which.indexOf("Computer"); switch (id){ case 1: if (idx==-1){ lch1.setVisible(false); level1.setVisible(false); }else{ lch1.setVisible(true); level1.setVisible(true); } break; case 2: if (idx==-1){ lch2.setVisible(false); level2.setVisible(false); }else{ lch2.setVisible(true); level2.setVisible(true); } break; default: break; } } }//end inner class //actionlistener methods public void actionPerformed(ActionEvent e){ String action=e.getActionCommand(); if (action.equals("start")){//apasare buton start int sel1=ply1.getSelectedIndex(); int sel2=ply2.getSelectedIndex(); if (sel1==0){ status.setText("Please choose player 1"); }else if (sel2==0){ status.setText("Please choose player 2"); }else{ start.setEnabled(false); stop.setEnabled(true); thegame.startGame(ply1.getSelectedIndex(),level1.getSelectedIndex(),ply2.getSelectedIndex(),level2.getSelectedIndex()); Thread thr=new Thread(thegame); thr.start(); } }else{ start.setEnabled(true); stop.setEnabled(false); if (thegame!=null){ thegame.endGameDaemon(); } } } }