Android天天数钱游戏源码

天天数钱游戏Android源码,很有意思的一款游戏,废话不多说,上源码!


技术分享

技术分享

技术分享

技术分享

 

Android天天数钱游戏源码   

天天数钱。基于Android游戏代码

模仿Flash游戏http://www.4399.com/flash/145326_4.htm

源码下载 :http://pan.baidu.com/s/1ntn2Iwx

部分代码 GameView.java

<span style="font-family:Arial;font-size:14px;">package com.sx.view;
 
import java.io.IOException;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;
 
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Matrix;
import android.graphics.drawable.BitmapDrawable;
import android.media.MediaPlayer;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
 
import com.daimajia.androidanimations.library.Techniques;
import com.daimajia.androidanimations.library.YoYo;
import com.sx.ttsqian.R;
 
public class GameView extends RelativeLayout implements OnClickListener {
 
	private TimeInterface jiekou;
	private TextView tv_addtime;
	private boolean play_music = true;
	private float userMony = 0.0F;
 
	public void setInterface(TimeInterface _jiekou) {
		this.jiekou = _jiekou;
	}
 
	public boolean setMusicState() {
		play_music = !play_music;
		if (play_music == false) {
 
			if (mp != null && mp.isPlaying()) {
				mp.pause();
			}
		} else {
			if (mp != null) {
				mp.reset();
				mp.release();
			}
			mp = MediaPlayer.create(mContext, R.raw.beijing);
			mp.setLooping(true);
			try {
				mp.prepare();
			} catch (IllegalStateException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			mp.start();
		}
 
		return play_music;
	}
 
	private Techniques[] anim = new Techniques[] { Techniques.ZoomOutRight,
			Techniques.ZoomOutLeft, Techniques.ZoomOutUp,
			Techniques.ZoomOutDown, Techniques.SlideOutUp, Techniques.FadeOut,
			Techniques.FadeOutRight, Techniques.RollOut,
			Techniques.RotateOutDownLeft, Techniques.TakingOff };
	private ImageView img_1, img_2, img_3, img_4;
	private Context mContext;
	private LayoutInflater inflater;
	private Matrix matrix = new Matrix();
	private MediaPlayer mp;
	private MediaPlayer mp_great;
	private MediaPlayer mp_error;
	private float[] price = new float[] { 1.0F, 10.0F, 100.0F, 20.0F, 5.0F,
			50.0F, 0.5F, 1.0F, 0.5F, 0.1F, 0.1F, 10.0F, 0.2F, 10.0F };
	private int[] picID = new int[] { R.drawable.kagaz_1, R.drawable.kagaz_10,
			R.drawable.kagaz_100, R.drawable.kagaz_20, R.drawable.kagaz_5,
			R.drawable.kagaz_50, R.drawable.kagaz_5mo, R.drawable.kagaz_kona_1,
			R.drawable.kagaz_5motatur, R.drawable.kagaz_1mo,
			R.drawable.kagaz_1motatur, R.drawable.kagaz_kona10,
			R.drawable.kagaz_2mo, R.drawable.kagaz_10tatur };
	private float allPrice = 0.0f;
	private int TIME = 45 * 1000;
	Timer mTimer;
	MyTimerTask mTimerTask;
	private TextView tv1, tv2, tv3, tv4;
	private ImageView img_good;
 
	@SuppressLint("NewApi")
	public GameView(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
		this.mContext = context;
		initView();
	}
 
	public GameView(Context context, AttributeSet attrs) {
		super(context, attrs);
		this.mContext = context;
		initView();
	}
 
	public GameView(Context context) {
		super(context);
		this.mContext = context;
		initView();
 
	}
 
	class MyTimerTask extends TimerTask {
		@Override
		public void run() {
			// TODO Auto-generated method stub
			mhandler.sendEmptyMessage(-1);
 
		}
 
	}
 
	Handler mhandler = new Handler() {
		@Override
		public void handleMessage(Message msg) {
 
			try {
				if (msg.what == 1) {
					jiekou.gameOver(userMony);
 
				} else {
					TIME = TIME - 246;
					if (TIME <= 0) {
						jiekou.updateTime(0);
						mhandler.removeMessages(-1);
						mhandler.sendEmptyMessage(1);
						return;
					}
					jiekou.updateTime(TIME);
					mTimer = new Timer();
					// game over...
					if (mTimer != null) {
						if (mTimerTask != null) {
							mTimerTask.cancel(); // 将原任务从队列中移除
						}
 
						mTimerTask = new MyTimerTask(); // 新建一个任务
						mTimer.schedule(mTimerTask, 246);
					}
				}
			} catch (Exception ex) {
 
			}
 
		}
 
	};
 
	private void initView() {
		userMony = 0.0F;
		LayoutInflater.from(mContext).inflate(R.layout.gameview, this, true);
		mp = MediaPlayer.create(mContext, R.raw.beijing);
		mp_great = MediaPlayer.create(mContext, R.raw.great);
		mp_error = MediaPlayer.create(mContext, R.raw.shibai);
		mp.setLooping(true);
		try {
			mp.prepare();
		} catch (IllegalStateException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		try {
			mp_great.prepare();
		} catch (Exception ex) {
 
		}
		try {
			mp_error.prepare();
		} catch (Exception ex) {
 
		}
 
		 mp.start();
		img_1 = (ImageView) findViewById(R.id.img_1);
		img_2 = (ImageView) findViewById(R.id.img_2);
		img_3 = (ImageView) findViewById(R.id.img_3);
		img_4 = (ImageView) findViewById(R.id.img_4);
		tv1 = (TextView) findViewById(R.id.tv1);
		tv2 = (TextView) findViewById(R.id.tv2);
		tv3 = (TextView) findViewById(R.id.tv3);
		tv4 = (TextView) findViewById(R.id.tv4);
		tv1.setOnClickListener(this);
		tv2.setOnClickListener(this);
		tv3.setOnClickListener(this);
		tv4.setOnClickListener(this);
 
		img_good = (ImageView) findViewById(R.id.img_good);
		tv_addtime = (TextView) findViewById(R.id.txt_addtime);
		img_good.setVisibility(View.INVISIBLE);
		tv_addtime.setVisibility(View.INVISIBLE);
		CreateNewGameView(false);
	}
 
	public void CreateNewGameView(boolean isOk) {
		if (play_music && isOk) {
			mp_great.start();
		} else if (play_music && !isOk) {
			mp_error.start();
		}
 
		Random r = new Random();
		Random r2 = new Random();
		int MaxValue = 10;
		int index = 0;
		allPrice = 0.0f;
		index = r.nextInt(picID.length);
		Bitmap bitmap = ((BitmapDrawable) getResources().getDrawable(
				picID[index])).getBitmap();
		allPrice += price[index];
		// 设置旋转角度
		int r2_value = r2.nextInt(MaxValue);
		if (r2_value % 2 == 0) {
			r2_value = r2_value * (-1);
		}
		matrix.setRotate(r2_value);
		// 重新绘制Bitmap
 
		bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(),
				bitmap.getHeight(), matrix, true);
		img_1.setImageBitmap(bitmap);
		index = r.nextInt(picID.length);
		bitmap = ((BitmapDrawable) getResources().getDrawable(picID[index]))
				.getBitmap();
		allPrice += price[index];
 
		// 设置旋转角度
		r2_value = r2.nextInt(MaxValue);
		if (r2_value % 2 == 0) {
			r2_value = r2_value * (-1);
		}
		matrix.setRotate(r2_value);
		// 重新绘制Bitmap
		bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(),
				bitmap.getHeight(), matrix, true);
		img_2.setImageBitmap(bitmap);
		index = r.nextInt(picID.length);
		bitmap = ((BitmapDrawable) getResources().getDrawable(picID[index]))
				.getBitmap();
		allPrice += price[index];
		// 设置旋转角度
		r2_value = r2.nextInt(MaxValue);
		if (r2_value % 2 == 0) {
			r2_value = r2_value * (-1);
		}
		matrix.setRotate(r2_value);
		// 重新绘制Bitmap
		bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(),
				bitmap.getHeight(), matrix, true);
		img_3.setImageBitmap(bitmap);
		index = r.nextInt(picID.length);
		bitmap = ((BitmapDrawable) getResources().getDrawable(picID[index]))
				.getBitmap();
		allPrice += price[index];
		// 设置旋转角度
		r2_value = r2.nextInt(MaxValue);
		if (r2_value % 2 == 0) {
			r2_value = r2_value * (-1);
		}
		matrix.setRotate(r2_value);
		// 重新绘制Bitmap
		bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(),
				bitmap.getHeight(), matrix, true);
		img_4.setImageBitmap(bitmap);
		mhandler.sendEmptyMessageDelayed(-1, 500);
		System.out.println("All Price is:" + allPrice);
		ArrayList result = getPrice(allPrice);
		// allPrice=(float)(Math.round(allPrice*100)/100);
		int tv_r_index = r2.nextInt(4);
		if (tv_r_index == 0) {
			tv1.setText(result.get(0) + "元");
			tv2.setText(result.get(1) + "元");
			tv3.setText(result.get(2) + "元");
			tv4.setText(result.get(3) + "元");
		} else if (tv_r_index == 1) {
			tv1.setText(result.get(1) + "元");
			tv2.setText(result.get(0) + "元");
			tv3.setText(result.get(2) + "元");
			tv4.setText(result.get(3) + "元");
		} else if (tv_r_index == 2) {
			tv1.setText(result.get(2) + "元");
			tv2.setText(result.get(1) + "元");
			tv3.setText(result.get(0) + "元");
			tv4.setText(result.get(3) + "元");
		} else if (tv_r_index == 3) {
			tv1.setText(result.get(3) + "元");
			tv2.setText(result.get(1) + "元");
			tv3.setText(result.get(2) + "元");
			tv4.setText(result.get(0) + "元");
		}
 
		// Random r2=new Random();
 
		if (isOk) {
			img_good.setVisibility(View.VISIBLE);
			tv_addtime.setVisibility(View.VISIBLE);
			index = r2.nextInt(anim.length);
			YoYo.with(anim[index]).duration(800).playOn(img_good);
			tv_addtime.setText("+1750");
			YoYo.with(Techniques.SlideOutUp).duration(1000).playOn(tv_addtime);
		} else {
			if (tv_addtime.getVisibility() != View.INVISIBLE) {
				tv_addtime.setText("-750");
				YoYo.with(Techniques.SlideOutUp).duration(1000)
						.playOn(tv_addtime);
			}
		}
	}
 
	private ArrayList getPrice(float price) {
 
		float price4 = price - 0.1F;
		ArrayList result = new ArrayList();
		DecimalFormat decimalFormat = new DecimalFormat(".00");// 构造方法的字符格式这里如果小数不足2位,会以0补足.
		String p = decimalFormat.format(price);// format 返回的是字符串
		System.out.println(p);
		StringBuffer buf = new StringBuffer();
		for (int i = 0; i < p.length(); i++) { 			if (p.charAt(i) != ‘.‘ && p.charAt(i) != ‘0‘) { 				buf.append(p.charAt(i)); 			} 		} 		result.add(p); 		String newPrice = buf.toString(); 		float newfloat = Float.parseFloat(newPrice); 		if (newfloat > 400.00F) {
			newfloat = newfloat / 100.0F;
			newPrice = decimalFormat.format(newfloat);
		}
		result.add(newPrice);
		newPrice = "";
		if (buf.length() == 3) {
			try {
				newPrice = buf.substring(1, 1) + buf.substring(2)
						+ buf.substring(0, 1) + "." + buf.substring(0, 1) + "0";
			} catch (Exception ex) {
				System.out.println(ex.getLocalizedMessage());
			}
		} else if (buf.length() == 2) {
			newPrice = buf.substring(1) + (new Random()).nextInt(9)
					+ buf.substring(0, 1) + "." + buf.substring(1) + "0";
		} else if (buf.length() == 4) {
			newPrice = buf.substring(3) + buf.toString().substring(2, 3)
					+ buf.substring(0, 1) + "." + buf.substring(1, 1) + "0";
		} else {
			newPrice = buf.substring(0, 1) + (new Random()).nextInt(9) + "."
					+ (new Random()).nextInt(9) + "0";
		}
		newfloat = Float.parseFloat(newPrice);
		if (newfloat > 400.00F) {
			newfloat = newfloat / 100.0F;
			newPrice = decimalFormat.format(newfloat);
		}
		result.add(newPrice);
		String p4 = decimalFormat.format(price4);
		result.add(p4);
		return result;
	}
 
	public void DestreyView() {
		try {
		
			mhandler.removeMessages(-1);
			if(mTimerTask!=null)
			{
				mTimerTask.cancel();
			}
			if (mp != null) {
				mp.reset();
				mp.release();
			}
			if (mp_great != null) {
				mp_great.release();
				mp_great = null;
			}
		} catch (Exception ex) {
 
		}
	}
 
	@Override
	public void onClick(View arg0) {
 
		DecimalFormat decimalFormat = new DecimalFormat(".00");// 构造方法的字符格式这里如果小数不足2位,会以0补足.
		String p = decimalFormat.format(allPrice);
		String selectText = "";
		int id = arg0.getId();
		if (id > 0) {
			switch (id) {
			case R.id.tv1:
				selectText = tv1.getText().toString().trim().replace("元", "");
				break;
			case R.id.tv2:
				selectText = tv2.getText().toString().trim().replace("元", "");
				break;
			case R.id.tv3:
				selectText = tv3.getText().toString().trim().replace("元", "");
				break;
			case R.id.tv4:
				selectText = tv4.getText().toString().trim().replace("元", "");
				break;
			default:
				break;
			}
			float newfloat = Float.parseFloat(selectText);
			float current = Float.parseFloat(p);
			if (newfloat == current) {
				CreateNewGameView(true);
				TIME += 1750;
				userMony += current;
				jiekou.updateMony(userMony);
			} else {
				CreateNewGameView(false);
				TIME -= 750;
			}
		}
 
	}
 
}
 </span>



郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。