兹撰写ac01子类别,其程序代码如下:

/*---- ac01.java ----*/

package com.misoo.pk01;

import java.io.InputStream;

import java.util.ArrayList;

import org.apache.http.*;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.client.utils.URIUtils;

import org.apache.http.client.utils.URLEncodedUtils;

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.http.message.BasicNameValuePair;

import android.app.Activity;

import android.app.ProgressDialog;

import android.os.*;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.LinearLayout;

 

public class ac01 extends Activity implements OnClickListener{

 private static final String APP_NAME = "misooplaza";

 private ProgressDialog pdg = null;

 private String res_value = "";

 public Button btn0,btn, btn2, btn3, btn4, btn5, btn6;

 private String str_rank;

 private int m_amt, m_bet;

 public int state_var;

 private LinearLayout layout0, layout1;

 private EHandler h;

 private DefaultHttpClient httpclient;

   

 @Override public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    state_var = 0;  goto_init_state_1();

     }

    public void onClick(View v) {

switch(v.getId()) {

case 101: //下注(Bet)

if(state_var == 2)  goto_bet_state_3();  break;

case 102: // 离开(Exit)

if(state_var == 2)  goto_finish_state_5();  break;

case 105: // Add

if(state_var == 2)  {

                     m_amt -= 10;  m_bet += 10;

  setTitle("");

  btn3.setText("Amt: " + String.valueOf(m_amt));

  btn4.setText("Bet: " + String.valueOf(m_bet));

}

    break;

}}

  void goto_init_state_1(){

state_var = 1;

httpclient = new DefaultHttpClient(); 

invokeServlet("Init:" );

show_layout0();

      }

  void goto_state_2(String a, String r){

state_var = 2;

str_rank = r;  m_amt = Integer.parseInt(a);

if(r.contains("99"))  m_bet = 0;

this.show_layout1();

}

void goto_bet_state_3(){

state_var = 3;

String msg = String.valueOf(m_amt) + "," + String.valueOf(m_bet); 

invokeServlet("Bett:" + msg);

}

  void goto_state_4(String a, String r){

    state_var = 4;

    if(r.contains("0"))      setTitle("you lose $"  + String.valueOf(m_bet));

    else if(r.contains("1"))  setTitle("you win $" + String.valueOf(m_bet));

    else if(r.contains("2")) setTitle("you win $" + String.valueOf(m_bet*2));

    else if(r.contains("3")) setTitle("you win $" + String.valueOf(m_bet*3));

    else if(r.contains("4"))  setTitle("you win $" + String.valueOf(m_bet*4));

    else if(r.contains("5"))  setTitle("you win $" + String.valueOf(m_bet*5));

    else              setTitle("you win $" + String.valueOf(m_bet*6));

    m_bet = 0;

    this.goto_state_2(a, r);

}

  void goto_finish_state_5(){

state_var = 5;

String strAmt = String.valueOf(m_amt); 

invokeServlet("Fini:" + strAmt + ",99");

}

void show_layout0(){

 layout0= new LinearLayout(this);

      layout0.setOrientation(LinearLayout.VERTICAL);

      btn0 = new Button(this);    btn0.setId(101);

      btn0.setText("Slot Machine");  btn0.setOnClickListener(this);

      btn0.setBackgroundResource(R.drawable.heart);

      LinearLayout.LayoutParams param = 

          new LinearLayout.LayoutParams(250, 45); 

      param.topMargin = 10;

      layout0.addView(btn0, param);

      setContentView(layout0);

}

  void show_layout1(){

 layout1 = new LinearLayout(this);

      layout1.setOrientation(LinearLayout.VERTICAL);

      btn = new Button(this);   btn.setId(101);

      btn.setText("SPIN");     btn.setBackgroundResource(R.drawable.heart);

      btn.setOnClickListener(this);

      LinearLayout.LayoutParams param = 

          new LinearLayout.LayoutParams(150, 55); 

      param.topMargin = 10;     layout1.addView(btn, param);

      btn2 = new Button(this);    btn2.setId(102);

      btn2.setText("Exit");       btn2.setBackgroundResource(R.drawable.heart);

      btn2.setOnClickListener(this);  layout1.addView(btn2, param);

      btn6 = new Button(this);    btn6.setId(106);

      if(str_rank.contains("99"))   btn6.setText("Rank: " + "****");

      else                     btn6.setText("Rank: " + str_rank);

      layout1.addView(btn6, param);

      btn3 = new Button(this);    btn3.setId(103);

      btn3.setText("Amt: " + String.valueOf(m_amt));

      layout1.addView(btn3, param);

      btn4 = new Button(this);  btn4.setId(104);

      btn4.setText("Bet: " + String.valueOf(m_bet));

      layout1.addView(btn4, param);

      btn5 = new Button(this);  btn5.setId(105);

      btn5.setText("Add");     btn5.setBackgroundResource(R.drawable.heart);

      btn5.setOnClickListener(this);  layout1.addView(btn5, param);

      setContentView(layout1);

}

       private void invokeServlet(final String sendData){

      pdg = ProgressDialog.show(this, "wait...","SM is running..",true);

      h = new EHandler();

      new Thread(){

     public void run(){

         String u = APP_NAME + ".appspot.com";

          ArrayList<NameValuePair> params 

= new ArrayList <NameValuePair>(); 

        params.add(new BasicNameValuePair("code", "0")); 

        params.add(new BasicNameValuePair("value1", sendData)); 

                 params.add(new BasicNameValuePair("value2", "**")); 

                 HttpResponse response = null;

                 try {

                    HttpGet httpget = 

                    new HttpGet(URIUtils.createURI("https",u, -1, "/smConsole", 

               URLEncodedUtils.format(params, "UTF-8"), null));

                 response = httpclient.execute(httpget);

          } catch (Exception e) { e.printStackTrace();   } 

    if(response.getStatusLine().getStatusCode()!= HttpStatus.SC_OK)

          return;

    InputStream is;

    byte[] buffer = new byte[4096];

    try {   is = response.getEntity().getContent();

  is.read(buffer, 0, 4096);

  } catch (Exception e) {

  e.printStackTrace();

  }

          res_value = new String(buffer);

                     pdg.dismiss();

       h.sendEmptyMessage(0);

          }}.start();

     }

     class EHandler extends Handler {

         public EHandler() {  super(Looper.getMainLooper());  }

         public void handleMessage(Message msgx) {

         String msg = res_value;

         int idx = msg.indexOf(",");

         String str_a = msg.substring(5, idx);

         String str_r = msg.substring(idx+1);

         if(msg.contains("Init"))  //accept event:"Initial Amount"

           goto_state_2(str_a, "99");

        else if(msg.contains("Bet"))  //accept event:"Bet Return"

            goto_state_4(str_a, str_r);

    else if(msg.contains("Fini"))  //accept event:"Finish Return"

           finish();

      else  setTitle(msg);

        }}

    }}