package ke.jun.xu.elf.activity;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Timer;
import java.util.TimerTask;
import ke.jun.xu.elf.gamedata.ConstData;
import ke.jun.xu.elf.gamedata.ElfStat;
import ke.jun.xu.elf.util.CommonUtils;
import ke.jun.xu.elf.util.GameUtils;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TableRow;
import android.widget.TextView;
public class GamePage extends ElfActivity {
private Handler handler;
/*
* 游戏区域-关卡信息部分的view对象
*/
private TextView pointInfo;
private TextView pointScore;
private TextView pointGetScore;
private TextView totalScore;
private ProgressBar countDownProgress;
/*
* 精灵图片的view对象
*/
private ImageView elf0;
private ImageView elf1;
private ImageView elf2;
private ImageView elf3;
private ImageView elf4;
private ImageView elf5;
private ImageView elf6;
private ImageView elf7;
private ImageView elf8;
private ImageView elf9;
private ImageView elf10;
private ImageView elf11;
/*
* 信息栏的view对象
*/
private LinearLayout eventInfo;
/**
* 精灵图片,和地洞一一对应
*/
private ImageView[] holeElfs;
// 道具的状态 -1代表不出现 0代表出现但是没有购买 1代码出现并且已经购买
private int[] propsStat = new int[] { -1, -1, -1, -1, -1, -1, -1 };
// 因为购买道具,而使得分值增加的倍率
private int[] scoreTimes = new int[] { 1, 1, 1, 1, 1, 1, 1, 1 };
// 关卡的定时对象
private Timer pointTimer = new Timer();
private TimerTask pointTimerTask;
// 倒计时的定时对象
private Timer countdownTimer = new Timer();
private TimerTask countdownTimerTask;
/**
* 所有精灵的状态
*/
private ElfStat[] elfStats = new ElfStat[] {
new ElfStat(new Timer(), null, null, null, false),
new ElfStat(new Timer(), null, null, null, false),
new ElfStat(new Timer(), null, null, null, false),
new ElfStat(new Timer(), null, null, null, false),
new ElfStat(new Timer(), null, null, null, false),
new ElfStat(new Timer(), null, null, null, false),
new ElfStat(new Timer(), null, null, null, false),
new ElfStat(new Timer(), null, null, null, false),
new ElfStat(new Timer(), null, null, null, false),
new ElfStat(new Timer(), null, null, null, false),
new ElfStat(new Timer(), null, null, null, false),
new ElfStat(new Timer(), null, null, null, false) };
// 下轮小精灵出现的等待时间定时对象
private Timer waitForNextElfsTimer = new Timer();;
private TimerTask waitForNextElfsTimerTask;
// 当前是第几关
private int curPoint = 1;
// 本关获得分数
private int pointHitScore = 0;
// 总得分
private int playScore = 0;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gamepage);
findViews();
setListensers();
initHandler();
gotoGamePage();
playBGMusic();
initHitMusic();
}
private MediaPlayer mMediaPlayer;
private void playBGMusic(){
mMediaPlayer = MediaPlayer.create(this, R.raw.bg_music);
mMediaPlayer.setLooping(true);
mMediaPlayer.start();
}
private MediaPlayer normalMediaPlayer;
private MediaPlayer bombMediaPlayer;
private void initHitMusic(){
normalMediaPlayer = MediaPlayer.create(this, R.raw.hit);
bombMediaPlayer = MediaPlayer.create(this, R.raw.bomb);
}
/**
* 初始化关卡
*/
private void initPoint() {
// 第一关或者重新开始游戏
if (curPoint == 1) {
propsStat = new int[] { -1, -1, -1, -1, -1, -1, -1 };
scoreTimes = new int[] { 1, 1, 1, 1, 1, 1, 1, 1 };
playScore = 0;
}
pointHitScore = 0;
countDownProgress.setProgress(ConstData.GAMETIME/1000);
pointInfo.setText("第" + curPoint + "关");
pointScore.setText("过关分数:" + ConstData.POINTSCORES[curPoint - 1]);
pointGetScore.setText("本关获得:" + pointHitScore);
totalScore.setText("总分:" + playScore);
eventInfo.removeAllViews();
// 隐藏所有的精灵
for (int i = 0; i < holeElfs.length; i++) {
holeElfs[i].setVisibility(View.INVISIBLE);
}
}
/**
* 开始游戏
*/
private void gotoGamePage() {
initPoint();
// 关卡计时开始
pointTimerTask = addTimerTask(pointTimer, POINT_TIMEOUT, 0,
ConstData.GAMETIME);
// 小精灵出现之前会有一个时间间隔,不是立马就出现小精灵
waitForNextElfsTimerTask = addTimerTask(waitForNextElfsTimer, NEXT_ELFS, 0,
ConstData.ELFSTAYTIMES[curPoint - 1].interval);
// 时间显示条倒计时开始
countdownTimerTask = addTimerTask(countdownTimer, COUNTDOWN, 0,
ConstData.COUNTDOWN_INTERVAL);
}
/**
* 游戏重新开始,从第一关开始玩
*/
private void gameReplay() {
clearForPointTimeout();
if (gameOverDialog != null) {
gameOverDialog.cancel();
}
shop.setVisibility(View.GONE);
// 关卡设置为第一关
curPoint = 1;
gotoGamePage();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(0, Menu.FIRST, 0, "重新开始");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
switch (item.getItemId()) {
case Menu.FIRST:
gameReplay();
break;
}
return true;
}
/**
* 增加定时任务
*
* @param timer
* @param what
* @param arg1
* @param delay
* @return
*/
private TimerTask addTimerTask(Timer timer, final int what, final int arg1,
final int delay) {
// 如果关卡结束,不再增加定时器。除了关卡定时器和获取积分排行的定时器
if (pointTimerTask == null && what != POINT_TIMEOUT
&& what != GETSCORDERODER_4_GAMEOVER) {
return null;
}
return CommonUtils.addTimeTask(timer, what, arg1, 0, null, null,
handler, delay);
}
/**
* 关卡的游戏时间结束
*/
private void pointTimeout() {
clearForPointTimeout();
// 时间进度条显示为时间用完
countDownProgress.setProgress(0);
// 判断是否过关
if (playScore >= ConstData.POINTSCORES[curPoint - 1]) {
if (curPoint == ConstData.POINTSNUM) {
gameOver(true);
} else {
gotoShop();
}
} else {
Log.d("GamePage", playScore + " >= "
+ ConstData.POINTSCORES[curPoint - 1] + " = "
+ (playScore >= ConstData.POINTSCORES[curPoint - 1]));
// 游戏结束
gameOver(false);
}
}
/*
* 对话框数据
*/
private AlertDialog gameOverDialog;
private ProgressDialog loadingDialog;
private static final int LOADING_DIALOG = 1;
private static final int NET_ERROR_DIALOG = 2;
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case LOADING_DIALOG:
loadingDialog = new ProgressDialog(this);
loadingDialog.setMessage("正在获取战绩排行榜数据...");
loadingDialog.setIndeterminate(true);
loadingDialog.setCancelable(false);
return loadingDialog;
case NET_ERROR_DIALOG:
AlertDialog alertDialog = new AlertDialog.Builder(this).setTitle(
"获取战绩排行榜失败,请稍候再试!").setNegativeButton("确定",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
gameOverDialog.show();
}
}).create();
return alertDialog;
}
return null;
}
/**
* 游戏结束的处理
*
* @
没有合适的资源?快使用搜索试试~ 我知道了~
android打地鼠游戏
共134个文件
png:60个
class:39个
java:14个
5星 · 超过95%的资源 需积分: 10 56 下载量 159 浏览量
2011-07-08
10:54:39
上传
评论 1
收藏 3.21MB RAR 举报
温馨提示
这是一款android游戏,玩法简单。属于智力游戏,带有源码。学习android的不妨看看。
资源详情
资源评论
资源推荐
收起资源包目录
android打地鼠游戏 (134个子文件)
resources.ap_ 1.1MB
Elf.apk 1.12MB
GamePage.class 19KB
MainPage.class 7KB
OrderPage.class 6KB
ConstData.class 4KB
CommonUtils.class 4KB
GamePage$6.class 3KB
R$id.class 3KB
GameUtils.class 3KB
GamePage$6$1.class 2KB
R$drawable.class 2KB
MainPage$6.class 2KB
GamePage$2.class 2KB
MainPage$5.class 1KB
CommonUtils$1.class 1KB
GamePage$7.class 1KB
GamePage$1.class 1006B
MainPage$4.class 995B
MainPage$2.class 995B
MainPage$3.class 995B
MainPage$1.class 995B
GamePage$5.class 942B
MainPage$7.class 886B
GamePage$4.class 866B
MainPage$8.class 862B
GamePage$3.class 861B
GamePage$6$2.class 856B
HelpPage.class 705B
Props.class 687B
R.class 659B
R$string.class 656B
ElfStat.class 654B
R$layout.class 539B
ElfActivity.class 517B
Item.class 489B
R$raw.class 456B
ETime.class 441B
Region.class 430B
R$style.class 416B
R$attr.class 352B
.classpath 280B
classes.dex 45KB
GamePage.java 24KB
R.java 9KB
MainPage.java 8KB
OrderPage.java 6KB
CommonUtils.java 5KB
ConstData.java 5KB
GameUtils.java 3KB
Props.java 729B
HelpPage.java 464B
ElfStat.java 440B
ETime.java 417B
ElfActivity.java 403B
Item.java 326B
Region.java 230B
game_bg.jpg 24KB
game_over.jpg 4KB
time.jpg 1014B
bg_music.mp3 782KB
hit.mp3 9KB
nav_start.png 9KB
nav_order.png 9KB
nav_help.png 7KB
nav_exit.png 6KB
elf0.png 6KB
elf1.png 6KB
elf3.png 6KB
nav_start_on.png 6KB
preelf0.png 6KB
preelf1.png 6KB
nav_order_on.png 6KB
preelf3.png 6KB
effect0.png 6KB
elf5.png 6KB
elf7.png 6KB
preelf5.png 5KB
item6.png 5KB
logo.png 5KB
preelf7.png 5KB
elf2.png 5KB
item6_buy.png 5KB
elf4.png 5KB
item1.png 5KB
item5.png 5KB
preelf2.png 5KB
preelf4.png 5KB
nav_help_on.png 5KB
nav_exit_on.png 5KB
item3.png 5KB
elf6.png 4KB
help_title.png 4KB
effect1.png 4KB
item5_buy.png 4KB
preelf6.png 4KB
item0.png 4KB
item6_off.png 4KB
item1_buy.png 4KB
face02.png 4KB
共 134 条
- 1
- 2
妮_梦
- 粉丝: 21
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论10