package flybird.view;
import java.util.ArrayList;
import java.util.List;
import liqiang.flybird.R;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.Rect;
import android.os.Looper;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.widget.Toast;
import flybird.config.Config;
import flybird.config.Constants;
import flybird.object.Bird;
import flybird.object.Column;
import flybird.object.Ground;
import flybird.util.FileManager;
import flybird.util.SoundPlayer;
public class MainView extends BaseView {
private Ground ground;
private Column column1;
private Column column2;
private Column column3;
private Bird bird;
private FileManager fileManager;
private Bitmap bgImg;
private Bitmap startImg;
private Bitmap endImg;
private Bitmap restartButtonImg;
private Bitmap exitButtonImg;
private Bitmap noticeImg;
private Bitmap pauseButtonImg;
private Bitmap bigNumbersImg;
private Bitmap smallNumbersImg;
private Bitmap medalImg;
private float startImgX;
private float startImgY;
private float endImgX;
private float endImgY;
private float noticeImgX;
private float noticeImgY;
private float restartButtonImgX;
private float restartButtonImgY;
private float exitButtonImgX;
private float exitButtonImgY;
private float pauseButtonImgX;
private float pauseButtonImgY;
private float bigNumbersImgX;
private float bigNumbersImgY;
private float smallNumbersImgX;//bestScore位置
private float smallNumbersImgY;
private float smallScoreX;
private float smallScoreY;
private float medalImgX;
private float medalImgY;
private boolean isStart;
private boolean isHit;
private boolean isOver;
private boolean isPause;
private boolean isWrite;
private int score;
private int bestScore;
//private Rect rect;
public MainView(Context context, SoundPlayer soundPlayer) {
super(context, soundPlayer);
isStart = false;
isHit = false;
isOver = false;
isPause = false;
isWrite = false;
//rect = new Rect();
//Toast.makeText(this.mainActivity.getApplicationContext(), Constants.SCREEN_WIDTH " " Constants.SCREEN_HEIGHT, Toast.LENGTH_LONG).show();
fileManager = new FileManager();
if(fileManager.sdIsAvalible()) {
fileManager.initFile();
if(fileManager.fileReader().length() <= 0) {
bestScore = 0;
} else {
bestScore = Integer.parseInt(fileManager.fileReader());
}
} else {
//Looper.prepare();
Toast.makeText(this.mainActivity.getApplicationContext(), "SD卡不可用,将无法保存您的最高纪录", Toast.LENGTH_LONG).show();
//Looper.loop();
}
ground = new Ground(getResources());
column1 = new Column(getResources(), Config.COLUMN_X_GAP * 2, ground.getObjHeight());
column2 = new Column(getResources(), Config.COLUMN_X_GAP column1.getObjMidX(), ground.getObjHeight());
column3 = new Column(getResources(), Config.COLUMN_X_GAP column2.getObjMidX(), ground.getObjHeight());
bird = new Bird(getResources(), ground.getObjHeight());
this.thread = new Thread(this);
}
@Override
public void run() {
while(this.threadFlag) {
if(!isHit && !isOver) {
ground.step();
}
if(isStart && !isHit &&!isOver) {
column1.step();
column2.step();
column3.step();
}
if(isStart) {
bird.step();
}
drawSelf();
if(isOver) {
threadFlag = false;
}
if(isPause) {
synchronized (thread) {
try {
thread.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
try {
Thread.sleep(1000 / 60);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
drawSelf();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
drawNotice();
if(fileManager.sdIsAvalible()) {
if(score > bestScore) {
fileManager.fileWriter(String.valueOf(score));
}
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
for(int i=0; i<=score; i ) {
drawResult(i);
try {
Thread.sleep(1000/60);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized(thread) {
drawMedal();
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
drawButton();
isWrite = true;
}
@Override
public void drawSelf() {
try {
canvas = sfh.lockCanvas();
drawObject();
if(!isHit) {
if(bird.pass(column1) || bird.pass(column2) || bird.pass(column3)) {
soundPlayer.playSound(2, 0);
score ;
}
if(bird.hitColumn(column1) || bird.hitColumn(column2) ||bird.hitColumn(column3)){
soundPlayer.playSound(3, 0);
paint.setAlpha(50);
paint.setColor(Color.WHITE);
canvas.drawRect(0, 0, Constants.SCREEN_WIDTH, Constants.SCREEN_HEIGHT, paint);
isHit = true;
}
}
/*paint.setTextSize(26);
paint.setColor(Color.WHITE);
paint.getTextBounds(String.valueOf(score), 0, String.valueOf(score).length(), rect);
canvas.drawText(String.valueOf(score), 10, rect.height() 5, paint);
*/
if(!isOver) {
drawScore(bigNumbersImg, bigNumbersImgX, bigNumbersImgY, score);
}
if(isOver) {
soundPlayer.playSound(5, 0);
canvas.drawBitmap(endImg, endImgX, endImgY, paint);
}
if(!isOver) {
if(bird.hitGround(ground)){
soundPlayer.playSound(4, 0);
isOver = true;
}
}
if(!isStart) {
if(!isStart) {
canvas.drawBitmap(startImg, startImgX, startImgY, paint);
}
}
if(isStart && !isHit && !isOver) {
if(!isPause) {
canvas.save();
canvas.clipRect(pauseButtonImgX, pauseButtonImgY, pauseButtonImgX pauseButtonImg.getWidth(), pauseButtonImgY pauseButtonImg.getHeight() / 2);
canvas.drawBitmap(pauseButtonImg, pauseButtonImgX, pauseButtonImgY, paint);
canvas.restore();
}
else {
canvas.save();
canvas.clipRect(pauseButtonImgX, pauseButtonImgY, pauseButtonImgX pauseButtonImg.getWidth(), pauseButtonImgY pauseButtonImg.getHeight() / 2);
canvas.drawBitmap(pauseButtonImg, pauseButtonImgX, pauseButtonImgY - pauseButtonImg.getHeight() / 2, paint);
canvas.restore();
}
}
} catch (Exception err) {
err.printStackTrace();
} finally {
if(canvas != null) {
sfh.unlockCanvasAndPost(canvas);
}
}
}
public void drawNotice() {
try {
canvas = sfh.lockCanvas();
drawObject();
soundPlayer.playSound(5, 0);
canvas.drawBitmap(endImg, endImgX, endImgY, paint);
canvas.drawBitmap(noticeImg, noticeImgX, noticeImgY, paint);
} catch (Exception err) {
err.printStackTrace();
} finally {
if(canvas != null) {
sfh.unlockCanvasAndPost(canvas);
}
}
}
public void drawResult(int i) {
try {
canvas = sfh.lockCanvas();
drawObject();
//soundPlayer.playSound(5, 0);
canvas.drawBitmap(endImg, endImgX, endImgY, paint);
canvas.drawBitmap(noticeImg, noticeImgX, noticeImgY, paint);
/*
paint.setTextSize(26);
paint.setColor(Color.WHITE);
paint.getTextBounds(String.valueOf(bestScore), 0, String.valueOf(bestScore).length(), rect);
canvas.drawText(String.valueOf(bestScore), noticeImgX noticeImg.getWidth() - rect.width(), noticeImgY noticeImg.getHeight() - rect.height(), paint);
*/
drawScore(smallNumbersImg, smallScoreX, smallScoreY, i);
//drawScore(smallNumbersImg, smallNumbersImgX, smallNumbersImgY, bestScore);
} catch (Exception err) {
err.printStackTrace();
} finally {
if(canvas != null) {
sfh.unlockCanvasAndPost(canvas);
}
}
}
public void drawMedal() {
try {
canvas = sfh.lockCanvas();
drawObject();
soundPlayer.playSound(5, 0);
canvas.drawBitmap(endImg, endImgX, endImgY, paint);
canvas.drawBitmap(noticeImg, noticeImgX, noticeImgY, paint);
/*
paint.setTextSize(26);
paint.setColor(Color.WHITE);
paint.getTextBounds(String.valueOf(bestScore), 0, String.valueOf(bestScore).length(), rect);
canvas.drawText(String.valueOf(bestScore), noticeImgX noticeImg.getWidth() - rect.width(), noticeImgY noticeImg.getHeight() - rect.height(), paint);
*/
drawScore(smallNumbersImg, smallScoreX, smallScoreY, score);
drawScore(smallNumbersImg, smallNumbersImgX, smallNumbersImgY, bestScore);
drawMedalImg();
} catch (Exception err) {
err.printStackTrace();
} finally {
if(canvas != null) {
sfh.unlockCanvasAndPost(canvas);
}
}
}
public void drawButton() {
try {
canvas = sfh.lockCanvas();
drawObject();
soundPlayer.playSound(5, 0);
canvas.drawBitmap(endImg, endImgX, endImgY, paint);
canvas.drawBitmap(noticeImg, noticeImgX, noticeImgY, paint);
drawScore(smallNumbersImg, smallScoreX, smallScoreY, score);
drawScore(smallNumbersImg, smallNumbersImgX, smallNumbersImgY, bestScore);
drawMedalImg();
canvas.drawBitmap(restartButtonImg, restartButtonImgX, restartButtonImgY, paint);
canvas.drawBitmap(exitButtonImg, exitButtonImgX, exitButtonImgY, paint);
} catch (Exception err) {
err.printStackTrace();
} finally {
if(canvas != null) {
sfh.unlockCanvasAndPost(canvas);
}
}
}
public void drawObject() {
canvas.save();
canvas.scale(scaleX, scaleY);
canvas.drawBitmap(bgImg, 0, 0, paint);
canvas.restore();
column1.drawSelf(canvas);
column2.drawSelf(canvas);
column3.drawSelf(canvas);
bird.drawSelf(canvas);
ground.drawSelf(canvas);
}
public void drawMedalImg() {
canvas.save();
canvas.clipRect(medalImgX, medalImgY, medalImgX medalImg.getWidth(), medalImgY medalImg.getHeight() / 2);
if(score >= 60) {
canvas.drawBitmap(medalImg, medalImgX, medalImgY - medalImg.getHeight() / 2, paint);
}
else {
canvas.drawBitmap(medalImg, medalImgX, medalImgY, paint);
}
canvas.restore();
}
public void drawScore(Bitmap numbersImg, float x, float y, int num) {
List<Integer> list = new ArrayList<Integer>();
int scoreCopy = num;
int quotient = 0;
while((quotient = scoreCopy / 10) != 0) {
list.add(scoreCopy % 10);
scoreCopy = quotient;
}
list.add(scoreCopy % 10);
float posX = x;
float posY = y;
int len = list.size();
float oddNumW = numbersImg.getWidth() / 10;
float oddNumH = numbersImg.getHeight();
posX -= len * oddNumW / 2;
canvas.save();
for(int i=len-1; i>=0; i--) {
switch(list.get(i)) {
case 0:
canvas.clipRect(posX, posY, posX oddNumW, posY oddNumH);
canvas.drawBitmap(numbersImg, posX - 0 * oddNumW, posY, paint);
posX = oddNumW;
canvas.restore();
canvas.save();
break;
case 1:
canvas.clipRect(posX, posY, posX oddNumW, posY oddNumH);
canvas.drawBitmap(numbersImg, posX - 1 * oddNumW, posY, paint);
posX = oddNumW;
canvas.restore();
canvas.save();
break;
case 2:
canvas.clipRect(posX, posY, posX oddNumW, posY oddNumH);
canvas.drawBitmap(numbersImg, posX - 2 * oddNumW, posY, paint);
posX = oddNumW;
canvas.restore();
canvas.save();
break;
case 3:
canvas.clipRect(posX, posY, posX oddNumW, posY oddNumH);
canvas.drawBitmap(numbersImg, posX - 3 * oddNumW, posY, paint);
posX = oddNumW;
canvas.restore();
canvas.save();
break;
case 4:
canvas.clipRect(posX, posY, posX oddNumW, posY oddNumH);
canvas.drawBitmap(numbersImg, posX - 4 * oddNumW, posY, paint);
posX = oddNumW;
canvas.restore();
canvas.save();
break;
case 5:
canvas.clipRect(posX, posY, posX oddNumW, posY oddNumH);
canvas.drawBitmap(numbersImg, posX - 5 * oddNumW, posY, paint);
posX = oddNumW;
canvas.restore();
canvas.save();
break;
case 6:
canvas.clipRect(posX, posY, posX oddNumW, posY oddNumH);
canvas.drawBitmap(numbersImg, posX - 6 * oddNumW, posY, paint);
posX = oddNumW;
canvas.restore();
canvas.save();
break;
case 7:
canvas.clipRect(posX, posY, posX oddNumW, posY oddNumH);
canvas.drawBitmap(numbersImg, posX - 7 * oddNumW, posY, paint);
posX = oddNumW;
canvas.restore();
canvas.save();
break;
case 8:
canvas.clipRect(posX, posY, posX oddNumW, posY oddNumH);
canvas.drawBitmap(numbersImg, posX - 8 * oddNumW, posY, paint);
posX = oddNumW;
canvas.restore();
canvas.save();
break;
case 9:
canvas.clipRect(posX, posY, posX oddNumW, posY oddNumH);
canvas.drawBitmap(numbersImg, posX - 9 * oddNumW, posY, paint);
posX = oddNumW;
canvas.restore();
canvas.save();
break;
}
}
canvas.restore();
}
// 响应触屏事件的方法
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN && event.getPointerCount() == 1) {
float x = event.getX();
float y = event.getY();
if(isWrite) {
if(x >= restartButtonImgX && x <= restartButtonImgX restartButtonImg.getWidth() && y >= restartButtonImgY && y <= restartButtonImgY restartButtonImg.getHeight()) {
mainActivity.getHandler().sendEmptyMessage(Config.TO_MAIN_VIEW);
}
if(x >= exitButtonImgX && x <= exitButtonImgX exitButtonImg.getWidth() && y >= exitButtonImgY && y <= exitButtonImgY exitButtonImg.getHeight()) {
mainActivity.getHandler().sendEmptyMessage(Config.END_GAME);
}
}
if(!isStart) {
isStart = true;
}
if(!isHit && !isOver) {
if(x <= pauseButtonImgX || x>= pauseButtonImgX pauseButtonImg.getWidth() || y <= pauseButtonImgY || y>= pauseButtonImgY pauseButtonImg.getHeight() / 2) {
bird.flappy();
soundPlayer.playSound(1, 0);
}
}
if(isStart && !isHit && !isOver) {
if(x >= pauseButtonImgX && x<= pauseButtonImgX pauseButtonImg.getWidth() && y >= pauseButtonImgY && y<= pauseButtonImgY pauseButtonImg.getHeight() / 2) {
isPause = !isPause;
if(isPause == false) {
synchronized(this.thread) {
thread.notify();
}
}
}
}
return true;
}
return false;
}
@Override
public void surfaceCreated(SurfaceHolder arg0) {
super.surfaceCreated(arg0);
initBitmap();
if(this.thread.isAlive()) {
this.thread.start();
} else {
this.thread = new Thread(this);
this.thread.start();
}
}
@Override
public void initBitmap() {
bgImg = BitmapFactory.decodeResource(getResources(), R.drawable.bg);
startImg = BitmapFactory.decodeResource(getResources(), R.drawable.start);
endImg = BitmapFactory.decodeResource(getResources(), R.drawable.text_gameover);
restartButtonImg = BitmapFactory.decodeResource(getResources(), R.drawable.restartbutton);
exitButtonImg = BitmapFactory.decodeResource(getResources(), R.drawable.exitbutton);
noticeImg = BitmapFactory.decodeResource(getResources(), R.drawable.notice);
pauseButtonImg = BitmapFactory.decodeResource(getResources(), R.drawable.pausebutton);
bigNumbersImg = BitmapFactory.decodeResource(getResources(), R.drawable.bignumbers);
smallNumbersImg = BitmapFactory.decodeResource(getResources(), R.drawable.smallnumbers);
medalImg = BitmapFactory.decodeResource(getResources(), R.drawable.medal);
this.scaleX = Constants.SCREEN_WIDTH / bgImg.getWidth();
this.scaleY = Constants.SCREEN_HEIGHT / bgImg.getHeight();
startImgX = Constants.SCREEN_WIDTH / 2 - startImg.getWidth() / 2;
startImgY = Constants.SCREEN_HEIGHT / 2 - startImg.getHeight() / 2;
endImgX = Constants.SCREEN_WIDTH / 2 - endImg.getWidth() / 2;
endImgY = Constants.SCREEN_HEIGHT / 2 - endImg.getHeight() * 3;
noticeImgX = Constants.SCREEN_WIDTH / 2 - noticeImg.getWidth() / 2;
noticeImgY = Constants.SCREEN_HEIGHT / 2 - endImg.getHeight();
restartButtonImgX = Constants.SCREEN_WIDTH / 2 - restartButtonImg.getWidth() * 5 / 4;
restartButtonImgY = Constants.SCREEN_HEIGHT / 2 noticeImg.getHeight();
exitButtonImgX = Constants.SCREEN_WIDTH / 2 exitButtonImg.getWidth() / 4;
exitButtonImgY = Constants.SCREEN_HEIGHT / 2 noticeImg.getHeight();
pauseButtonImgX = 0;
pauseButtonImgY = Constants.SCREEN_HEIGHT - pauseButtonImg.getHeight() / 2;
bigNumbersImgX = Constants.SCREEN_WIDTH / 2;
bigNumbersImgY = 10;
smallNumbersImgX = noticeImgX noticeImg.getWidth() * 5 / 6;
smallNumbersImgY =noticeImgY noticeImg.getHeight() - smallNumbersImg.getHeight() * 2;
smallScoreX = smallNumbersImgX;
smallScoreY = smallNumbersImgY - smallNumbersImg.getHeight() * 23 / 10;
medalImgX = noticeImgX noticeImg.getWidth() / 8;
medalImgY = noticeImgY noticeImg.getHeight() * 7 / 20;
}
@Override
public void surfaceDestroyed(SurfaceHolder arg0) {
super.surfaceDestroyed(arg0);
release();
}
@Override
public void release() {
if(!bgImg.isRecycled()) {
bgImg.recycle();
}
if(!startImg.isRecycled()) {
startImg.recycle();
}
if(!endImg.isRecycled()) {
endImg.recycle();
}
if(!restartButtonImg.isRecycled()) {
restartButtonImg.recycle();
}
if(!exitButtonImg.isRecycled()) {
exitButtonImg.recycle();
}
if(!noticeImg.isRecycled()) {
noticeImg.recycle();
}
if(!pauseButtonImg.isRecycled()) {
pauseButtonImg.recycle();
}
if(!bigNumbersImg .isRecycled()) {
bigNumbersImg .recycle();
}
if(!smallNumbersImg .isRecycled()) {
smallNumbersImg .recycle();
}
if(!medalImg.isRecycled()) {
medalImg.recycle();
}
ground.release();
column1.release();
column2.release();
column3.release();
bird.release();
}
}
资源文件列表
FlyBird2.0/.classpath , 475
FlyBird2.0/.project , 846
FlyBird2.0/.settings/org.eclipse.jdt.core.prefs , 177
FlyBird2.0/AndroidManifest.xml , 965
FlyBird2.0/bin/AndroidManifest.xml , 965
FlyBird2.0/bin/classes/flybird/config/Config.class , 836
FlyBird2.0/bin/classes/flybird/config/Constants.class , 333
FlyBird2.0/bin/classes/flybird/MainActivity$1.class , 750
FlyBird2.0/bin/classes/flybird/MainActivity.class , 1729
FlyBird2.0/bin/classes/flybird/object/Bird.class , 3820
FlyBird2.0/bin/classes/flybird/object/Column.class , 2441
FlyBird2.0/bin/classes/flybird/object/GameObject.class , 1819
FlyBird2.0/bin/classes/flybird/object/Ground.class , 1909
FlyBird2.0/bin/classes/flybird/util/FileManager.class , 2647
FlyBird2.0/bin/classes/flybird/util/SoundPlayer.class , 1305
FlyBird2.0/bin/classes/flybird/view/BaseView.class , 2134
FlyBird2.0/bin/classes/flybird/view/LoadingView.class , 4244
FlyBird2.0/bin/classes/flybird/view/MainView.class , 13470
FlyBird2.0/bin/classes/liqiang/flybird/BuildConfig.class , 339
FlyBird2.0/bin/classes/liqiang/flybird/R$attr.class , 331
FlyBird2.0/bin/classes/liqiang/flybird/R$dimen.class , 452
FlyBird2.0/bin/classes/liqiang/flybird/R$drawable.class , 933
FlyBird2.0/bin/classes/liqiang/flybird/R$id.class , 384
FlyBird2.0/bin/classes/liqiang/flybird/R$layout.class , 394
FlyBird2.0/bin/classes/liqiang/flybird/R$menu.class , 379
FlyBird2.0/bin/classes/liqiang/flybird/R$raw.class , 493
FlyBird2.0/bin/classes/liqiang/flybird/R$string.class , 463
FlyBird2.0/bin/classes/liqiang/flybird/R$style.class , 422
FlyBird2.0/bin/classes/liqiang/flybird/R.class , 684
FlyBird2.0/bin/classes.dex , 934228
FlyBird2.0/bin/dexedLibs/android-support-v4-7200d5797f0ddfcc76b8a3ad207a91d6.jar , 232555
FlyBird2.0/bin/dexedLibs/android-support-v4-c30964644adb960a66ce30c10600ceb6.jar , 236050
FlyBird2.0/bin/dexedLibs/annotations-04280e9756d9a86f2eb2bb37077655a2.jar , 943
FlyBird2.0/bin/dexedLibs/annotations-5d960d787bdf041834f443f97aae3966.jar , 1265
FlyBird2.0/bin/FlyBird2.0.apk , 560452
FlyBird2.0/bin/jarlist.cache , 120
FlyBird2.0/bin/res/crunch/drawable-hdpi/bg.png , 28925
FlyBird2.0/bin/res/crunch/drawable-hdpi/bignumbers.png , 4518
FlyBird2.0/bin/res/crunch/drawable-hdpi/bird0.png , 2595
FlyBird2.0/bin/res/crunch/drawable-hdpi/bird1.png , 2639
FlyBird2.0/bin/res/crunch/drawable-hdpi/bird2.png , 2565
FlyBird2.0/bin/res/crunch/drawable-hdpi/column.png , 22120
FlyBird2.0/bin/res/crunch/drawable-hdpi/exitbutton.png , 3182
FlyBird2.0/bin/res/crunch/drawable-hdpi/ground.png , 1229
FlyBird2.0/bin/res/crunch/drawable-hdpi/ic_launcher.png , 7022
FlyBird2.0/bin/res/crunch/drawable-hdpi/logo.png , 17482
FlyBird2.0/bin/res/crunch/drawable-hdpi/medal.png , 11536
FlyBird2.0/bin/res/crunch/drawable-hdpi/notice.png , 14302
FlyBird2.0/bin/res/crunch/drawable-hdpi/pausebutton.png , 4448
FlyBird2.0/bin/res/crunch/drawable-hdpi/restartbutton.png , 3544
FlyBird2.0/bin/res/crunch/drawable-hdpi/smallnumbers.png , 4442
FlyBird2.0/bin/res/crunch/drawable-hdpi/start.png , 44226
FlyBird2.0/bin/res/crunch/drawable-hdpi/text_gameover.png , 16693
FlyBird2.0/bin/res/crunch/drawable-hdpi/text_logo.png , 9894
FlyBird2.0/bin/res/crunch/drawable-mdpi/ic_launcher.png , 4008
FlyBird2.0/bin/res/crunch/drawable-xhdpi/ic_launcher.png , 10010
FlyBird2.0/bin/res/crunch/drawable-xxhdpi/ic_launcher.png , 17482
FlyBird2.0/bin/resources.ap_ , 311645
FlyBird2.0/gen/liqiang/flybird/BuildConfig.java , 157
FlyBird2.0/gen/liqiang/flybird/R.java , 3260
FlyBird2.0/ic_launcher-web.png , 51394
FlyBird2.0/libs/android-support-v4.jar , 621451
FlyBird2.0/proguard-project.txt , 781
FlyBird2.0/project.properties , 563
FlyBird2.0/res/drawable-hdpi/bg.png , 31634
FlyBird2.0/res/drawable-hdpi/bignumbers.png , 7236
FlyBird2.0/res/drawable-hdpi/bird0.png , 5311
FlyBird2.0/res/drawable-hdpi/bird1.png , 5354
FlyBird2.0/res/drawable-hdpi/bird2.png , 5280
FlyBird2.0/res/drawable-hdpi/column.png , 24813
FlyBird2.0/res/drawable-hdpi/exitbutton.png , 5899
FlyBird2.0/res/drawable-hdpi/ground.png , 4635
FlyBird2.0/res/drawable-hdpi/ic_launcher.png , 7022
FlyBird2.0/res/drawable-hdpi/logo.png , 17482
FlyBird2.0/res/drawable-hdpi/medal.png , 14240
FlyBird2.0/res/drawable-hdpi/notice.png , 17007
FlyBird2.0/res/drawable-hdpi/pausebutton.png , 7166
FlyBird2.0/res/drawable-hdpi/restartbutton.png , 6261
FlyBird2.0/res/drawable-hdpi/smallnumbers.png , 7159
FlyBird2.0/res/drawable-hdpi/start.png , 46886
FlyBird2.0/res/drawable-hdpi/text_gameover.png , 19386
FlyBird2.0/res/drawable-hdpi/text_logo.png , 12600
FlyBird2.0/res/drawable-mdpi/ic_launcher.png , 4008
FlyBird2.0/res/drawable-xhdpi/ic_launcher.png , 10010
FlyBird2.0/res/drawable-xxhdpi/ic_launcher.png , 17482
FlyBird2.0/res/layout/activity_main.xml , 666
FlyBird2.0/res/menu/main.xml , 225
FlyBird2.0/res/raw/die.ogg , 18942
FlyBird2.0/res/raw/flappy.ogg , 7728
FlyBird2.0/res/raw/hit.ogg , 15670
FlyBird2.0/res/raw/pass.ogg , 13235
FlyBird2.0/res/raw/swooshing.ogg , 13697
FlyBird2.0/res/values/dimens.xml , 220
FlyBird2.0/res/values/strings.xml , 224
FlyBird2.0/res/values/styles.xml , 697
FlyBird2.0/res/values-sw600dp/dimens.xml , 203
FlyBird2.0/res/values-sw720dp-land/dimens.xml , 277
FlyBird2.0/src/flybird/config/Config.java , 800
FlyBird2.0/src/flybird/config/Constants.java , 154
FlyBird2.0/src/flybird/MainActivity.java , 1806
FlyBird2.0/src/flybird/object/Bird.java , 4003
FlyBird2.0/src/flybird/object/Column.java , 2176
FlyBird2.0/src/flybird/object/GameObject.java , 1642
FlyBird2.0/src/flybird/object/Ground.java , 1353
FlyBird2.0/src/flybird/util/FileManager.java , 1905
FlyBird2.0/src/flybird/util/SoundPlayer.java , 1002
FlyBird2.0/src/flybird/view/BaseView.java , 1765
FlyBird2.0/src/flybird/view/LoadingView.java , 3554
FlyBird2.0/src/flybird/view/MainView.java , 18495
