兹撰写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);
}}
}}