基本信息
源码名称:遥远捉迷藏(FarZMC)
源码大小:0.12M
文件格式:.rar
开发语言:Java
更新时间:2024-11-21
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
采用android平台编写的一个训练眼力的小游戏
package com.zmc.far; import java.io.BufferedWriter; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.Socket; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.graphics.Color; import android.util.Log; import android.view.Display; import android.view.Gravity; import android.view.Menu; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.Button; import android.widget.Chronometer; import android.widget.FrameLayout; import android.widget.GridView; import android.widget.SimpleAdapter; import android.widget.TableRow; import android.widget.TextView; import android.widget.Toast; import android.widget.AdapterView.OnItemClickListener; public class ZMCMainActivity extends Activity implements OnClickListener { private TableRow tbL1; private FrameLayout fL; private Button bPrev,bNext,bStart,bFQ; private TextView tvLv,tvND,tvScore,tvTime; private GridView gdView; private Chronometer cm; private SimpleAdapter listItemAdapter,gridAdapter; private ZMCAdapter mAdapter; private SQLiteDatabaseDao dao; private SQLiteDatabase mdb; private int iDiff=0; private String sName=""; private List<ZMCItem> mData; private ZMCItem mItem; private static int iLevel=0; private static long lTime1=0; private static long lTime2=0; private static long lScore=0; private static long lTimeJS1=0; private static long lTimeJS2=0; private String sTime=""; private static boolean bStop=false; private Handler mMainHandler, mChildHandler,mhandler; private String[] mRC=new String[]{"2,2","3,2","4,2","3,3","4,3","5,3","4,4","6,3","5,4","6,4","5,5", "7,4","6,5","7,5","6,6","8,5","7,6","8,6","7,7","9,6","8,7","9,7","8,8","10,7","9,8", "10,8","9,9","12,7","11,8","10,9","13,7","12,8","14,7","11,9","10,10","13,8","12,9","11,10", "14,8","13,9","12,10","11,11","14,9","13,10","12,11","15,9","13,11","14,10","13,11", "12,12","15,10","14,11","13,12","16,10","15,11","14,12","13,13","16,11","15,12","14,13","16,12", "15,13","14,14","16,13","15,14","16,14","17,14","18,14","19,14","20,14"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //��title requestWindowFeature(Window.FEATURE_NO_TITLE); //ȫ�� //getWindow().setFlags(WindowManager.LayoutParams. FLAG_FULLSCREEN , //WindowManager.LayoutParams. FLAG_FULLSCREEN); setContentView(R.layout.activity_zmcmain); int iR=5,iC=6; TextView[][] tvK=new TextView[iR][iC]; //tbL1=(TableRow)findViewById(R.id.tableRow1); //fL=(FrameLayout)findViewById(R.id.FrameLayout1); bPrev=(Button)findViewById(R.id.bPrev_ZMC); bNext=(Button)findViewById(R.id.bNext_ZMC); bStart=(Button)findViewById(R.id.bStart_ZMC); bFQ=(Button)findViewById(R.id.bFQ_ZMC); tvLv=(TextView)findViewById(R.id.tvLevel_ZMC); tvND=(TextView)findViewById(R.id.tvND_ZMC); tvScore=(TextView)findViewById(R.id.tvScore_ZMC); tvTime=(TextView)findViewById(R.id.tvTime_ZMC); gdView=(GridView)findViewById(R.id.gridView_ZMC); cm=(Chronometer)findViewById(R.id.chronometer1); bPrev.setOnClickListener(this); bNext.setOnClickListener(this); bStart.setOnClickListener(this); bFQ.setOnClickListener(this); bPrev.setEnabled(false); bNext.setEnabled(false); bFQ.setEnabled(false); gdView.setOnItemClickListener(new ItemClick());//����¼� gdView.setNumColumns(2); mData=new ArrayList<ZMCItem>(); mAdapter = new ZMCAdapter(this,mData); gdView.setAdapter(mAdapter); mAdapter.notifyDataSetChanged(); //��ȡ��Ϣ Intent intent=getIntent(); Bundle bundle=intent.getExtras(); if(bundle!=null){ int iND=bundle.getInt("DIFFICUTY");//�Ѷ� //if(iND!=0){ // iDiff=Integer.parseInt(sND); //}else{ //} iDiff=iND;//0; if(iDiff==0){ tvND.setText("����"); }else if(iDiff==1){ tvND.setText("һ��"); }else if(iDiff==2){ tvND.setText("����"); }else if(iDiff==3){ tvND.setText("����"); } String sNM=bundle.getString("NAME");//���� if(sNM!=null){ sName=sNM; }else{ sName="FarStar"; } } //new GameThread().start(); /*//new MsgThread().start();//������Ϣ�Ľ��� mMainHandler = new Handler() { String sMessage=""; @Override public void handleMessage(Message msg) { try{ sMessage=(String) msg.obj; //if (msg.what == 1) { tvTime.setText(sMessage); //} }catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } };*/ } // ����һ���߳��ں�̨���� class GameThread extends Thread { public void run() { try { iLevel=0; GetGamePara(iLevel); bFQ.setEnabled(true); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } // ����һ���̼߳�ʱ:Ӱ���ٶȣ��е㿨�� class TimeThread extends Thread { public void run() { try { while(true){ if(bStop==false){ lTimeJS2=System.currentTimeMillis(); long lTC=lTimeJS2-lTimeJS1; lTC=(long)(lTC/1000); long mm,ss; ss=lTC % 60; mm=lTC/60; String ms=String.valueOf(ss); String mn=String.valueOf(mm); if(ms.length()>1){ }else{ ms="0" ms; } if(mn.length()>1){ }else{ mn="0" mn; } //String sCon=mn ":" ms; //mMainHandler.obtainMessage(1, sCon).sendToTarget(); //�߳��ﲻ���ÿؼ������� //tvTime.setText(String.format("00", String.valueOf(mm)) ":" String.format("00", String.valueOf(ss))); }else{ break; } } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //public int[] GetGamePara(int iLevel){ public void GetGamePara(int iLevel){ int[] iGP=new int[3]; int iR=0,iC=0,iV=0; String[] sRC=mRC[iLevel].split(","); iR=Integer.parseInt(sRC[0]);//(int)(2 iLevel *0.16);//2,2,2,2,3,3 iC=Integer.parseInt(sRC[1]);//(int)(2 (iLevel *0.2));//*(iC*iLevel*0.5));//2,3, //WindowManager wm=(WindowManager)this.getBaseContext().getSystemService(Context.WINDOW_SERVICE); //Display display =wm.getDefaultDisplay(); //int h1=display.getHeight(); //int w1=display.getWidth(); //if(iC>10){ // iC=10; //} //iV=5 (int)(255/(iR*iC)); int idx=0; if(iDiff==0){//���� idx=155; }else if(iDiff==1){//��ͨ idx=120; }else if(iDiff==2){//���� idx=80; }else if(iDiff==3){//���� idx=50; } iV=5 (int)(idx/(iR*0.6 iC*0.4));//*iC)); iGP[0]=iR; iGP[1]=iC; iGP[2]=iV; SetGame(iGP); //return iGP; } public void SetGame(int RC[] ){ //if(iSubValue<5){ // iSubValue=5; //} int iR=RC[0],iC=RC[1],iSubValue=RC[2]; int ir=(int)(Math.random()*iR); int ic=(int)(Math.random()*iC); int icR=100 (int)(Math.random()*155); int icG=100 (int)(Math.random()*155); int icB=100 (int)(Math.random()*155); int icRbt=icR-iSubValue; int icGbt=icG-iSubValue; int icBbt=icB-iSubValue; String scR=Integer.toHexString(icR); String scG=Integer.toHexString(icG); String scB=Integer.toHexString(icB); String scRbt=Integer.toHexString(icRbt); String scGbt=Integer.toHexString(icGbt); String scBbt=Integer.toHexString(icBbt); int c1=Color.parseColor("#ff" scR scG scB); int c2=Color.parseColor("#ff" scRbt scGbt scBbt); mData.clear(); mData=new ArrayList<ZMCItem>(); for(int i=0;i<iR;i ){ for(int j=0;j<iC;j ){ if((i==ir) && (j==ic)){ mItem=new ZMCItem(iR,iC,c2,"",true); }else{ mItem=new ZMCItem(iR,iC,c1,"",false); } mData.add(mItem); } } gdView.setNumColumns(iC); mAdapter = new ZMCAdapter(this,mData); gdView.setAdapter(mAdapter); mAdapter.notifyDataSetChanged(); //bFQ.setEnabled(true); //tvLv.setText(String.format("00", String.valueOf(iLevel 1)) "/" String.format("00", String.valueOf(mRC.length))); tvLv.setText(String.valueOf(iLevel 1) "/" mRC.length); } private long getScore(int nd,int dj, long time1,long time2){ long score=0; long lT=time2-time1; score=(long)(1.00*(nd 1) * (dj 1) * Math.abs(30/(lT/1000.00))); return score; } @Override public void onClick(View v) { switch (v.getId()) { case R.id.bStart_ZMC: lTime1=System.currentTimeMillis(); lTimeJS1=lTime1; bStop=false; //new TimeThread().start(); sTime=""; cm.start(); iLevel=0; GetGamePara(0); bStart.setEnabled(false); bPrev.setEnabled(true); bNext.setEnabled(true); bFQ.setEnabled(true); tvScore.setText("0000"); //tvLv.setText(String.valueOf(iLevel 1) "/" mRC.length); break; case R.id.bFQ_ZMC: mData.clear(); mAdapter.notifyDataSetChanged(); bStart.setEnabled(true); bPrev.setEnabled(false); bNext.setEnabled(false); bFQ.setEnabled(false); tvLv.setText("00/00"); tvScore.setText("0000"); lTime1=0; lTime2=0; lScore=0; bStop=true; sTime=cm.getText().toString(); cm.stop(); break; case R.id.bPrev_ZMC: if(iLevel>0){ iLevel--; GetGamePara(iLevel); //tvLv.setText(String.valueOf(iLevel 1) "/" mRC.length); } break; case R.id.bNext_ZMC: if(iLevel<mRC.length-1){ iLevel ; GetGamePara(iLevel); //tvLv.setText(String.valueOf(iLevel 1) "/" mRC.length); } break; } } //* item�ϵ�OnClick�¼� public final class ItemClick implements OnItemClickListener { public void onItemClick(AdapterView<?> parent, View view, final int position, long id) { //����¼� //setTitle("�����" position "����Ŀ"); //��εõ����е����� if(bStart.isEnabled()){ }else{ lTime2=System.currentTimeMillis(); boolean bErr=false; int iColor=mData.get(position).getColor(); for (int i=0;i<mData.size();i ){ if(i==position){ }else{ int ic=mData.get(i).getColor(); if(ic==iColor){ bErr=true; break; } } } if(bErr==false){ //��ȷ��������֣� lScore=lScore getScore(iDiff,iLevel,lTime1,lTime2); tvScore.setText(String.valueOf(lScore)); if(iLevel<mRC.length-1){ new AlertDialog.Builder(ZMCMainActivity.this) /* �������ڵ�����ͷ���� */ .setTitle("��ϲ") /* ���õ������ڵ�ͼʽ */ .setIcon(android.R.drawable.ic_dialog_info) /* ���õ������ڵ���Ϣ */ .setMessage("����ȷ!\n[��һ��]��������\n[�˳�]��������!") .setPositiveButton("��һ��", new DialogInterface.OnClickListener() { public void onClick( DialogInterface dialoginterface, int i) { lTime1=System.currentTimeMillis(); iLevel ; GetGamePara(iLevel); //tvLv.setText(String.valueOf(iLevel 1) "/" mRC.length); } }) .setNegativeButton("�˳�", new DialogInterface.OnClickListener() { public void onClick( DialogInterface dialoginterface, int i) { // ʲôҲû�� mData.clear(); mAdapter.notifyDataSetChanged(); bStart.setEnabled(true); bPrev.setEnabled(false); bNext.setEnabled(false); bFQ.setEnabled(false); tvLv.setText("00/00"); //new TimeThread().stop(); bStop=true; //tvScore.setText("0000"); lTime1=0; lTime2=0; lScore=0; iLevel--;//�ص�һ�� sTime=cm.getText().toString(); cm.stop(); setPHB();//д�����ݿ� } }).show(); }else{ setPHB();//д�����ݿ� cm.stop(); new AlertDialog.Builder(ZMCMainActivity.this) /* �������ڵ�����ͷ���� */ .setTitle("��ϲͨ��") /* ���õ������ڵ�ͼʽ */ .setIcon(android.R.drawable.ic_dialog_info) /* ���õ������ڵ���Ϣ */ .setMessage("��ϲ���Ѿ�ͨ��!\n[����]���´���\n[�˳�]��������!") .setPositiveButton("����", new DialogInterface.OnClickListener() { public void onClick( DialogInterface dialoginterface, int i) { mData.clear(); mAdapter.notifyDataSetChanged(); bStart.setEnabled(true); bPrev.setEnabled(false); bNext.setEnabled(false); bFQ.setEnabled(false); tvLv.setText("00/00"); tvScore.setText("0000"); //new TimeThread().stop(); bStop=true; lTime1=0; lTime2=0; iLevel=0; lScore=0; sTime=cm.getText().toString(); //tvLv.setText(String.valueOf(iLevel 1) "/" mRC.length); } }) .setNegativeButton("�˳�", new DialogInterface.OnClickListener() { public void onClick( DialogInterface dialoginterface, int i) { finish();//�˳� } }).show(); } }else{ new AlertDialog.Builder(ZMCMainActivity.this) /* �������ڵ�����ͷ���� */ .setTitle("��ϧ") /* ���õ������ڵ�ͼʽ */ .setIcon(android.R.drawable.ic_dialog_info) /* ���õ������ڵ���Ϣ */ .setMessage("��Ǹ,����ʧ��!\n[����]���´���\n[�˳�]��������!") .setPositiveButton("����", new DialogInterface.OnClickListener() { public void onClick( DialogInterface dialoginterface, int i) { setPHB();//д�����ݿ� //new TimeThread().stop(); bStop=true; lTime1=0; lTime2=0; iLevel=0; lScore=0; tvScore.setText("0000"); GetGamePara(iLevel); sTime=cm.getText().toString(); cm.stop(); //tvLv.setText(String.valueOf(iLevel 1) "/" mRC.length); } }) .setNegativeButton("�˳�", new DialogInterface.OnClickListener() { public void onClick( DialogInterface dialoginterface, int i) { // ʲôҲû�� //mData.clear(); for(int j=0;j<mData.size();j ){ boolean bt=mData.get(j).getBT(); if(bt==true){ mData.get(j).setText("��"); mAdapter.notifyDataSetChanged(); bStart.setEnabled(true); bPrev.setEnabled(false); bNext.setEnabled(false); bFQ.setEnabled(false); //new TimeThread().stop(); bStop=true; iLevel--;//����һ�� sTime=cm.getText().toString(); cm.stop(); setPHB();//д�����ݿ� //��ô��ʾ�����ĸ��� //tvLv.setText(""); lTime1=0; lTime2=0; lScore=0; break; } } } }).show(); } } } } /** * ��ȡ��ǰʱ�� */ String getTime(){ String s1=""; SimpleDateFormat format; Date date=new Date(); format=new SimpleDateFormat("yyyy-MM-dd");// HH:mm:ss"); date=Calendar.getInstance().getTime(); s1=format.format(date); return s1; } public void setPHB(){ String sSql,sDate,sND; sDate=getTime(); sND=tvND.getText().toString(); //ʵ���� dao=new SQLiteDatabaseDao(); //�����ݿ⼰�� mdb=dao.openCreateDatabase(); sSql="insert into PHB (rq,xm,nd,dj,sj,score) values ('" sDate "','" sName "','" sND "','" String.valueOf(iLevel 1) "','" sTime "','" String.valueOf(lScore) "')"; mdb.execSQL(sSql); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.zmcmain, menu); return true; } }