求安卓以学校为百度地图使用场景描述场景的游戏

找个在一个地图上回合制占领的游戏安卓的_百度知道求几个好玩的安卓系统的游戏_百度知道Android&游戏人物与地图滑动
跟MOMO学的,为了快点学完地图都没换,写了两边,这次还是有个小Bug,先标记一下,下次再调试一下吧
写自己的创作去了
package com.android.gameview5;
import java.io.InputS
import android.content.C
import android.graphics.B
import android.graphics.BitmapF
import android.graphics.C
import android.graphics.P
public class Animation {
& & //上一帧的播放时间
private long mLastPlayTime =0;
//播放当前的帧的ID
private int mPlayID =0;
//动画的数量
private int mFrameCount = 0;
// 用于存储动画的资源
private Bitmap[] mFrameBitmap =
//是否是循环播放
private boolean mIsLoop =
//播放结束
private boolean mIsend =
//动画间隔
private static final int ANIM_TIME = 100;
public Animation(Context context,int[] frameBitmapID,boolean
mFrameCount = frameBitmapID.
mFrameBitmap = new Bitmap[mFrameCount];
for(int i =0;i&mFrameCi++){
mFrameBitmap[i]= ReadBitmap(context,frameBitmapID[i]);
mIsLoop = isL
public Animation(Context context,Bitmap[] frameBitmap,boolean
mFrameCount = frameBitmap.
mFrameBitmap = frameB
mIsLoop &= isL
public void DrawFrame(Canvas canvas,Paint paint ,int x, int
y,int frameID){
canvas.drawBitmap(mFrameBitmap[frameID], x,y, paint);
public void DrawAnimtion(Canvas canvas,Paint paint,int x,int
if(!mIsend){
canvas.drawBitmap(mFrameBitmap[mPlayID], x,y, paint);
long time &=
System.currentTimeMillis();
if(time - mLastPlayTime&ANIM_TIME){
mPlayID++;
mLastPlayTime =
if(mPlayID &= mFrameCount){
if(mIsLoop){
mPlayID =0;
public Bitmap ReadBitmap(Context context, int resId){
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inPreferredConfig = Bitmap.Config.RGB_565;
opt.inPurgeable =
opt.inInputShareable =
InputStream is =
context.getResources().openRawResource(resId);
return BitmapFactory.decodeStream(is,null,opt);
package com.android.gameview5;
import java.io.InputS
import android.app.A
import android.content.C
import android.content.res.R
import android.graphics.B
import android.graphics.BitmapF
import android.graphics.C
import android.graphics.P
import android.os.B
import android.view.D
import android.view.KeyE
import android.view.SurfaceH
import android.view.SurfaceHolder.C
import android.view.SurfaceV
import android.view.W
import android.view.WindowM
public class SurfaceViewActivity extends Activity{
&AnimView mAnimView =
& & &public
void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
& & //全屏显示
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
& & //获得屏幕的宽高
& & Display
&display =
getWindowManager().getDefaultDisplay();
& & mAnimView = new
AnimView(this,display.getWidth(),display.getHeight());
setContentView(mAnimView);
& & &public
class AnimView extends SurfaceView implements
Callback,Runnable{
& & public final static int
ANIM_DOWN =0;
& & public final static int
ANIM_LEFT=1;
& & public final static int
ANIM_RIGHT =2;
& & public final static int
ANIM_UP =3;
& & public final static int
ANIM_COUNT =4;
& & Animation
heroAnimation[] = new Animation[ANIM_COUNT];
& & Paint mPaint
& & private boolean
mAllkeyDown =
& & private boolean
mIskeyDown =
& & private boolean
mIskeyLeft =
& & private boolean
mIskeyRight =
& & private boolean mIskeyUp
& & //当前绘制动画的Id
mAnimationState =0;
&//tile块的宽跟高
& & &public
&final static int TILE_WIDTH =32;
& & &public
&final static int TILE_HEIGHT =32;
&//缓冲块的宽和高的数量
& & &public
final static int BUFFER_WIDTH_COUNT =10;
& & &public
final static int BUFFER_HEIGHT_COUNT = 15;
&//场景的宽和高
& & &public
final static int SCENCE_WIDTH = 480;
& & &public
final static int SCENCE_HEIGHT = 800;
&//场景偏移量,未到场景边界地图向回滚动
& & &public
final static int SCENCE_OFFSET = 3;
& & &public
final static int SCENCE_OFFSET_WIDTH =100;
&//场景块的宽和高的数量
& & &public
final static int TILE_WIDTH_COUNT= 15;
& & &public
final static int TILE_HEIGHT_COUNT =25;
&//数组元素为0 则什么都不画
& & &public
final static int TILE_NULL = 0;
& & // 第一层游戏View地图数组
& & public int[][] mMapView
& & { 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1 },
& & { 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1 },
& & { 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1 },
& & { 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1 },
& & { 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1 },
& & { 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1 },
& & { 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1 },
& & { 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1 },
& & { 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1 },
& & { 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1 },
& & { 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1 },
& & { 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1 },
& & { 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1 },
& & { 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1 },
& & { 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1 },
& & { 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1 },
& & { 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1 },
& & { 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1 },
& & { 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1 },
& & { 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1 },
& & { 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1 },
& & { 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1 },
& & { 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1 },
& & { 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1 },
& & { 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1 } };
& & // 第二层游戏实体actor数组
& & public int[][]
mMapAcotor = {
& & { 5, 6, 7, 0, 3, 4, 3,
4, 3, 4, 0, 0, 2, 2, 0 },
& & { 13, 14, 15, 0, 11, 12,
11, 12, 11, 12, 0, 0, 10, 10, 0 },
& & { 21, 22, 23, 0, 19, 20,
19, 20, 19, 20, 0, 0, 18, 18, 0 },
& & { 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0 },
& & { 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0 },
& & { 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0 },
& & { 2, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 2 },
& & { 10, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 10 },
& & { 18, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 18 },
& & { 8, 8, 8, 8, 9, 0, 0,
0, 0, 0, 9, 8, 8, 8, 8 },
& & { 8, 8, 8, 8, 17, 0, 0,
0, 0, 0, 17, 8, 8, 8, 8 },
& & { 3, 4, 0, 0, 0, 0, 0,
0, 0, 0, 0, 2, 5, 6, 7 },
& & { 11, 12, 0, 0, 0, 0, 0,
0, 0, 0, 0, 10, 13, 14, 15 },
& & { 19, 20, 0, 0, 0, 0, 0,
0, 0, 0, 0, 18, 21, 22, 23 },
& & { 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0 },
& & { 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0 },
& & { 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0 },
& & { 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0 },
& & { 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0 },
& & { 8, 8, 8, 8, 9, 0, 0,
0, 0, 0, 9, 8, 8, 8, 8 },
& & { 8, 8, 8, 8, 17, 0, 0,
0, 0, 0, 17, 8, 8, 8, 8 },
& & { 5, 6, 7, 2, 0, 0, 0,
0, 0, 0, 0, 0, 0, 3, 4 },
& & { 13, 14, 15, 10, 0, 0,
0, 0, 0, 0, 0, 0, 0, 11, 12 },
& & { 21, 22, 23, 18, 0, 0,
0, 0, 0, 0, 0, 0, 0, 19, 20 },
& & { 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0 } };
& & // 第三层游戏碰撞物理层数组
& & public int[][]
mCollision = {
& & { -1, -1, -1, 0, -1, -1,
-1, -1, -1, -1, 0, 0, -1, -1, 0 },
& & { -1, -1, -1, 0, -1, -1,
-1, -1, -1, -1, 0, 0, -1, -1, 0 },
& & { -1, -1, -1, 0, -1, -1,
-1, -1, -1, -1, 0, 0, -1, -1, 0 },
& & { 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0 },
& & { 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0 },
& & { 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0 },
& & { -1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -1 },
& & { -1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -1 },
& & { -1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -1 },
& & { -1, -1, -1, -1, -1, 0,
0, 0, 0, 0, -1, -1, -1, -1, -1 },
& & { -1, -1, -1, -1, -1, 0,
0, 0, 0, 0, -1, -1, -1, -1, -1 },
& & { -1, -1, 0, 0, 0, 0, 0,
0, 0, 0, 0, -1, -1, -1, -1 },
& & { -1, -1, 0, 0, 0, 0, 0,
0, 0, 0, 0, -1, -1, -1, -1 },
& & { -1, -1, 0, 0, 0, 0, 0,
0, 0, 0, 0, -1, -1, -1, -1 },
& & { 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0 },
& & { 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0 },
& & { 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0 },
& & { 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0 },
& & { 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0 },
& & { -1, -1, -1, -1, -1, 0,
0, 0, 0, 0, -1, -1, -1, -1, -1 },
& & { -1, -1, -1, -1, -1, 0,
0, 0, 0, 0, -1, -1, -1, -1, -1 },
& & { -1, -1, -1, -1, 0, 0,
0, 0, 0, 0, 0, 0, 0, -1, -1 },
& & { -1, -1, -1, -1, 0, 0,
0, 0, 0, 0, 0, 0, 0, -1, -1 },
& & { -1, -1, -1, -1, 0, 0,
0, 0, 0, 0, 0, 0, 0, -1, -1 },
& & { 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0 } };
&//游戏地图资源
& & &Bitmap
&//资源文件
&Resources mResources =
&//地图资源横向纵向tile块的数量
mWidthTileCount =0;
mHeightTileCount =0;
&//地图横向纵向的大小
mBitMapWidth = 0;
mBitMapHeight =0;
&//英雄在地图中的坐标以英雄脚底中心为原点
mHeroPosX =0;
mHeroPosY =0;
& & // 备份英雄发生碰撞以前的坐标点
& & int mBackHeroPosX =
& & int mBackHeroPosY =
&//备份英雄发生碰撞以前的坐标点
mBackHeroScreenX =0;
mBackHeroScreenY =0;
&//英雄在地图中绘制的坐标
mHeroImageX = 0;
mHeroImageY =0;
&//英雄在行走范围中绘制的坐标
mHeroScreenX =0;
mHeroScreenY =0;
&//英雄在地图二维数组中的索引
mHeroIndexX =0;
mHeroIndexY =0;
&//屏幕的尺寸
mScreenWidth =0;
mScreenHeight =0;
&//缓冲去数据的index
mBufferIndexX = 0;
mBufferIndexY =0;
&//地图坐标
mMapPosX =0;
mMapPosY =0;
&//人物图片资源与实际英雄脚底坐标的便宜
& & &public
final static int OFF_HERO_X = 16;
& & &public
final static int OFF_HERO_Y = 35;
&//主角行走的步长
& & &public
final static int HERO_STEP =8;
&//与实体层发生碰撞
&private boolean isAcotorCollision =
&//与边界发生碰撞
&private boolean isBorderCollision =
&//游戏主线程
&private Thread mThread =
&//循环标志
&private boolean mIsRuning =
&private SurfaceHolder mSurfaceHolder =
&private Canvas mCanvas &=
& & &public
AnimView(Context context,int screenWidth,int screenHeight){
&super(context);
& & &mPaint
&= new Paint();
&mScreenWidth = screenW
&mScreenHeight = screenH
&initAnimation(context);
&initMap(context);
&initHero();
&//获取mSurfaceHolder
&mSurfaceHolder = getHolder();
&mSurfaceHolder.addCallback(this);
&setFocusable(true);
&private void initHero(){
&mHeroImageX =100;
&mHeroImageY =100;
&mHeroPosX = mHeroImageX +OFF_HERO_X;
&mHeroPosY = mHeroImageY +OFF_HERO_Y;
&mHeroIndexX = mHeroPosX/TILE_WIDTH;
&mHeroIndexY = mHeroPosY /TILE_HEIGHT;
&mHeroScreenX = mHeroPosX;
&mHeroScreenY = mHeroPosY;
& & private void
initMap(Context context){
& & mBitmap =
ReaderBitmap(context,R.drawable.map);
& & mBitMapWidth =
mBitmap.getWidth();
& & mBitMapHeight =
mBitmap.getHeight();
& & mWidthTileCount =
mBitMapWidth /TILE_WIDTH;
& & mHeightTileCount =
mBitMapHeight/TILE_HEIGHT;
& & private void
initAnimation(Context context){
& & Bitmap bitmap =
ReaderBitmap(context,R.drawable.hero);
& & Bitmap[][] testBitmap =
new Bitmap[ANIM_COUNT][ANIM_COUNT];
& & int widthTile =
bitmap.getWidth()/ANIM_COUNT;
& & int heightTile =
bitmap.getHeight()/ANIM_COUNT;
& & int i =0,x=0,y =0;
=0;i&ANIM_COUNT;i++){
& & testBitmap[ANIM_DOWN][i]
= BitmapClipBitmap(bitmap,x,y,widthTile,heightTile);
& & y+=heightT
& & testBitmap[ANIM_LEFT][i]
= BitmapClipBitmap(bitmap,x,y,widthTile,heightTile);
& & y+=heightT
testBitmap[ANIM_RIGHT][i] =
BitmapClipBitmap(bitmap,x,y,widthTile,heightTile);
& & y+=heightT
& & testBitmap[ANIM_UP][i] =
BitmapClipBitmap(bitmap,x,y,widthTile,heightTile);
& & x+=widthT
heroAnimation[ANIM_DOWN]= new
Animation(context,testBitmap[ANIM_DOWN],true);&
& & heroAnimation[ANIM_LEFT]
= new Animation(context,testBitmap[ANIM_LEFT],true);
heroAnimation[ANIM_RIGHT] = new
Animation(context,testBitmap[ANIM_RIGHT],true);
& & heroAnimation[ANIM_UP] =
new Animation(context,testBitmap[ANIM_UP],true);
& & protected void
& & //绘制地图
DrawMap(mCanvas,mPaint,mBitmap);
& & //绘制动画
ReaderAnimation(mCanvas);
& & //更新动画
& & UpdateHero();
& & private void
UpdateHero(){
& & if(mAllkeyDown){
& & if(mIskeyDown){
& & mAnimationState =
ANIM_DOWN;
mHeroPosY+=HERO_STEP;
if(mHeroScreenY&=320){
if(mHeroIndexY&=10&&mHeroIndexY&=20){
& & mMapPosY
-=HERO_STEP;
& & }else{
& & mHeroScreenY
+=HERO_STEP;
& & }else{
mHeroScreenY+=HERO_STEP;
if(mIskeyLeft){
& & mAnimationState =
ANIM_LEFT;
& & mHeroPosX
-=HERO_STEP;
if(mHeroScreenX&=96){
if(mHeroIndexX&=3&&mHeroIndexY&=7){
mMapPosX+=HERO_STEP;
& & }else {
& & mHeroScreenX
-=HERO_STEP;
& & }else{
mHeroScreenX-=HERO_STEP;
if(mIskeyRight){
& & mAnimationState =
ANIM_RIGHT;
mHeroPosX+=HERO_STEP;
& & if(mHeroScreenX
if(mHeroIndexX&=6&&mHeroIndexX&=10){
& & mMapPosX
-=HERO_STEP;
& & }else {
& & mHeroScreenX
+=HERO_STEP;
& & }else{
& & mHeroScreenX
+=HERO_STEP;
if(mIskeyUp){
& & mAnimationState =
mHeroPosY-=HERO_STEP;
& & if(mHeroScreenY
& & if(mHeroIndexY
&=5&&mHeroIndexY&=15){
mMapPosY+=HERO_STEP;
& & }else {
mHeroScreenY-=HERO_STEP;
& & }else {
& & mHeroScreenY
-=HERO_STEP;
//算出英雄移动后在地图二位数组中的索引
& & mHeroIndexX =
mHeroPosX/TILE_WIDTH;
& & mHeroIndexY =
mHeroPosY/TILE_HEIGHT;
& & //检测人物是否出屏
& & isBorderCollision =
if(mHeroPosX&=0){
& & mHeroPosX =0;
& & mHeroScreenX = 0;
& & isBorderCollision =
if(mHeroPosX&=TILE_WIDTH*TILE_WIDTH_COUNT){
& & mHeroPosX =
TILE_WIDTH*TILE_WIDTH_COUNT;
& & mHeroScreenX =
& & isBorderCollision =
if(mHeroPosY&=0){
& & mHeroPosY =0;
& & mHeroScreenY =0;
& & isBorderCollision =
& & }else if(mHeroPosY
&=TILE_HEIGHT*TILE_HEIGHT_COUNT){
& & mHeroPosY =
TILE_HEIGHT*TILE_HEIGHT_COUNT;
& & mHeroScreenY =
& & isBorderCollision =
& & //防止地图越界
& & if(mMapPosX
&mMapPosX=0;&
if(mMapPosX&=-(480-320)) {
&mMapPosX = -(480-320);
& & if(mMapPosY
&mMapPosY=0;
if(mMapPosY&= -(800 - 480)) {
&mMapPosY = -(800 - 480);
& & //越界检测
& & int width =
mCollision[0].length-1;
& & int height =
mCollision.length-1;
& & if(mHeroIndexX
& & mHeroIndexX =0;
& & }else if(mHeroIndexX
& & mHeroIndexX
& & if(mHeroIndexY
& & mHeroIndexY =0;
& & }else if(mHeroIndexY
&=height){
& & mHeroIndexY
& & //碰撞检测
if(mCollision[mHeroIndexY][mHeroIndexX]==-1){
& & mHeroPosX =
mBackHeroPosX;
& & mHeroPosY =
mBackHeroPosY;
& & mHeroScreenY =
mBackHeroScreenY;
& & mHeroScreenX =
mBackHeroScreenX;
& & isAcotorCollision=
& & }else{
& & mBackHeroPosX =
mHeroPosX;
& & mBackHeroPosY =
mHeroPosY;
& & mBackHeroScreenX =
mHeroScreenX;
& & mBackHeroScreenY =
mHeroScreenY;
& & isAcotorCollision =
& & mHeroImageX =
mHeroScreenX - OFF_HERO_X;
& & mHeroImageY =
mHeroScreenY - OFF_HERO_Y;
& & private void
ReaderAnimation(Canvas canvas){
& & if(mAllkeyDown){
heroAnimation[mAnimationState].DrawAnimtion(canvas, mPaint,
mHeroImageX, mHeroImageY);
& & }else {
heroAnimation[mAnimationState].DrawFrame(canvas, mPaint,
mHeroImageX, mHeroImageY, 0);
& & public void
setKeyState(int keyCode,boolean state){
& & switch(keyCode){
KeyEvent.KEYCODE_DPAD_DOWN:
& & mIskeyDown =
KeyEvent.KEYCODE_DPAD_LEFT:
& & mIskeyLeft =
KeyEvent.KEYCODE_DPAD_RIGHT:
& & mIskeyRight =
KeyEvent.KEYCODE_DPAD_UP:
& & mIskeyUp =
& & mAllkeyDown =
&private void DrawMap(Canvas canvas,Paint
paint,Bitmap bitmap){
& & &for(i
=0;i&TILE_HEIGHT_COUNT;i++){
& & &for(j
=0;j&TILE_WIDTH_COUNT;j++){
ViewID = mMapView[i][j];
ActorID = mMapAcotor[i][j];
&if(ViewID&TILE_NULL){
&DrawMapTile(ViewID,canvas,paint,bitmap,mMapPosX+(j*TILE_WIDTH),mMapPosY+(i*TILE_HEIGHT));
&//绘制地图第二层
&if(ActorID&TILE_NULL){
&DrawMapTile(ActorID,canvas,paint,bitmap,
mMapPosX+(j*TILE_WIDTH),mMapPosY+(i*TILE_HEIGHT));
&private void DrawMapTile(int id,Canvas
canvas,Paint paint,Bitmap bitmap,int x,int y){
count = id/mWidthTileC
&bitmapX =
(id-(count*mWidthTileCount))*TILE_WIDTH;
bitmapY = count*TILE_HEIGHT;
&DrawClipImage(canvas,paint,bitmap,x,y,bitmapX,bitmapY,TILE_WIDTH,TILE_HEIGHT);
&private void DrawClipImage(Canvas canvas,Paint
paint,Bitmap bitmap,int x,int y,int src_x,int src_y,int width,int
&canvas.save();
&canvas.clipRect(x,y,x+width,y+height);
&canvas.drawBitmap(bitmap, x-src_x, y-src_y,
&canvas.restore();
& & &public
Bitmap BitmapClipBitmap(Bitmap bitmap,int x,int y,int w,int
& & &return
Bitmap.createBitmap(bitmap, x, y, w, h);
& & &public
Bitmap ReaderBitmap(Context context, int resId){
&BitmapFactory.Options opt = new
BitmapFactory.Options();
&opt.inPreferredConfig =
Bitmap.Config.RGB_565;
&opt.inPurgeable =
&opt.inInputShareable =
&InputStream is =
context.getResources().openRawResource(resId);
& & &return
BitmapFactory.decodeStream(is, null, opt);
public void run() {
while(mIsRuning){
synchronized(mSurfaceHolder){
mCanvas = mSurfaceHolder.lockCanvas();
mSurfaceHolder.unlockCanvasAndPost(mCanvas);
public void surfaceChanged(SurfaceHolder holder, int format,
int width,
int height) {
// TODO Auto-generated method stub
public void surfaceCreated(SurfaceHolder holder) {
mIsRuning =
mThread = new Thread(this);
mThread.start();
public void surfaceDestroyed(SurfaceHolder holder) {
mIsRuning =
& & &public
boolean onKeyDown(int keyCode, KeyEvent event){
mAnimView.setKeyState(keyCode, true);
& & return
super.onKeyDown(keyCode, event);
& & &public
boolean onKeyUp(int keyCode, KeyEvent event){
mAnimView.setKeyState(keyCode, false);
& & return
super.onKeyUp(keyCode, event);
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。安卓手机汉化版,所有地图场景+剧情设定详解_这是我的战争吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:54,226贴子:
安卓手机汉化版,所有地图场景+剧情设定详解
我第一次做这种帖子,做的不好请指正,当然,版本有点老,但是在新的汉化版出来之前,我觉得我这个还是有一定价值的,因为吧中从不缺少“爱国者”那么我会告诉你们每个地图会出现什么场景、什么剧情、出现的顺序以及冬天、战争时会被封闭的是哪些场景,场景需要什么工具等,其中一些详解已经有攻略详解出来了,本人只是顺便一起写上,至于如何攻略,请自行
目前最专业,最实用的分...
本人手机三星N7100,从...
安卓手机设置VPN后可以...
很多人更新遇到这个问题...
做了这么长时间的伸手党...
多谢了,如果谁能帮我指...
为什么我一直调不出地图...
原来这游戏不止能玩还有后宫!
饿。。。这种帖子确实太多了。不过很期待
1、目前为止,基地有两种,一种有后花园一种没有,这两者并不影响地图出现何种剧情何种场景2、开局地图初始场景有四个
《洗劫一空的加油站》
《被炮击的屋子》
《废弃小屋》
《公寓废墟》3、以上四个初始场景,决定着后期整张地图会出现什么场景什么剧情
比方初始场景是《废弃小屋》的,第二天会出超市,剧情是扫荡三人组
若是初始场景是《被炮击的屋子》,第二天也出超市,剧情是流氓士兵
这些个场景和剧情都是固定不变的,当然,前提是官方不更新剧情,更新不改变设定4、进入游戏后直接结束白天,可以看到你选到了哪个初始场景,若是满意,点击进入场景,再点击“离开”回到初始页面选择“继续”即可。若是不满意,点击“离开”之后选择“再试一次”即可。5、冬天与战争时会封闭的场景每个地图都不大一样6、不同的开局组合不会直接影响地图场景的封闭。但是!不同的开局组合会直接影响地图的战争时期与冬天来临时间,进而间接影响场景封闭
比方说某个开局组合一来就是冬天(具体是哪个我给忘了),而你很幸运的选到了《废墟公寓》,更幸运的是该地图的“车库”场景冬天是会封闭的。结论:第一天就有车库场景。第一天就下雪.....自个哭去吧7、所有组合一定会经历冬天与犯罪爆发但是战争时期,只有生存天数上限达40天以上的组合才会有“战争时期”原因很简单,“战争时期”与“冬天”都需要运行一段时间,生存天数上限不够的,运行起来就没有正常的日子了,印象中好像有战争时期与冬天一起出现的现象,应该是记错了另外,因为“战争时期”出现的次数过少,下面就不做特别标注。但我探索出,“战争时期”与“冬天”封闭的场景是不相交的,也就是说,冬天会封闭的场景,战争时期出现时,这些场景就不会封闭。如果你想问的是战争时期哪些场景会封闭,答案很简单:凡是冬天不封闭的场景,战争时期就一定会封闭!这也就是我前面所说的“不相交”下面这两张图是我用第一组合刷出【公寓废墟】玩的,可以参考第一张是“战斗时期”封闭,第二张是“冬天封闭”8、凡是不知道放养场景中的物资刷新点在哪的人,直接把所有物资全部另外搜集在一个点,下次去的时候逛遍全图就知道哪里是刷新点了9、本人的操作思路是不拿会导致坏心情的私人物品,也不会乱杀无辜之人,本篇解说以此为前提10、本人用“批次”来区分每一批新的场景,同时代表着出现顺序11、每个地图共有场景15个,分五批出现(一出场就有的几个场景为第一批)12、双老、双女等战五渣开局组合强烈推荐《公寓废墟》。第一天去“车库”换斧头,第二天上“军队哨站”放养拿枪(战五渣无损放养早有教程),没补洞没大门也毫发无损,坐等第13天来人。可刷15格或罗曼,等【第五批次】出妓院场景进行放养,直接进入常规双放养模式,这日子简直是不要太好过了!非常规放养模式则是把“半塌的房屋”“车库”“军队哨站”“妓院”四个场景全部放养,什么地方都不用去了,一天去一个,转下来正好四天一轮,因此,本人认为《公寓废墟》是最无耻变态的地图,没有之一!13、关于战力高的人物放养军营交易员残血依然开枪的问题,我用马尔科(单人开局)按照攻略走,铲子背刺后,AK连射3发子弹,残到不能再残了(实际上不需要那么残也行),交易员依然不求饶,这个时候撒脚丫子跑掉躲起来,下个夜晚再来他就求饶了14、所有场景一旦等到冬天才去,一些原本存在的物资点都会消失比如“贫民窟”屋外的大柜子会整个消失,里面有极珍稀的电子元件
“半塌的房屋交易版”地下通道的私人物品柜会整个消失,里面有武器和钻石
“被洗劫一空的加油站”外面的汽车后备箱物资点会整个消失等等...冬天损耗一些物资是在所难免的,但是某些物资点我们不知道,却在冬天之前把整个场景的物资全部辛辛苦苦的搜集在这个点上,等冬天过来取得时候,那种悲伤无法形容,若是游戏人物有灵,起码得是“面临崩溃”的状态15、因为冬天封闭的缘故,我放养的妓院整整十天没去拿东西,冬天一过立马去拿,结果单单一个刷新点的物资就需要17格跑两次,由此可见,刷新点的物资是持续增长的,并不会一段时间不拿就消失16、场景资源有多有少,差别不是很大,但是在开局的时候,这种更多的资源自然更好过一点。第一个夜晚点击四大初始场景,可以看到旁边有个框框,里面写着“很多药品”“大量零件”“一些食物”,关键词在【大量、很多、一些】,这三个关键词决定着该场景相应资源的多少。而这个多少是随机的,基本上是随机“药品”和“食物”这两项资源,我从来没有刷到“大量”级别的食物或药品,“很多”倒是经常有。最后,这个特点只在四大初始场景上比较明显,后面出现的场景一般不会。17、个人建议最佳组合:砍价姐(买卖东西增益20%),杂木工(建设及制作工具降低损耗20%),罗曼(守家),17格(杀人外带搬物资)。该完美组合仅有一次出场机会,就是“罗曼+砍价姐”开局,剩余两人靠刷~18、建议点击“只看楼主”19、求精注意:本篇解说仅适用于安卓手机1.10汉化版(其他版本未做测试)
《洗劫一空的加油站》【第一批次】场景:洗劫一空的加油站剧情:无工具:撬棍,铲子,锯条一把封闭:提示:四大初始场景之一。只有一个土堆,不带铲子也可以,不过土堆是必须先清理掉场景:剧情:工具:铲子一把,锯条两把封闭:提示:可放养,熟手锯条一把就够,不要去教堂正下方的地下室就没有危险场景:安静的房屋剧情:双老工具:无封闭:冬天封闭提示:社区送温暖一样伤心【第二批次】场景:超市剧情:流氓士兵工具:撬棍,铲子封闭:提示:战力高的背刺秒杀,战力低的背刺一下后立马跑二楼隐匿点暗杀秒杀(因一开始背刺不见一半血得以秒杀成功)场景:被炮击的学校剧情:流浪汉工具:撬棍,铲子,锯条一把封闭:冬天封闭提示:资源多多,不拿私人物品就无危险【第三批次】场景:军队哨站剧情:没有剧情工具:锯条三把,撬棍封闭:无提示:可屠,可交易,可放养。拿私人物品不影响结局,不算偷不算抢场景:半塌的房屋剧情:平民版工具:锯条两把封闭:冬天封闭提示:人物出现在右边,资源在左边的房屋,不走地下通道就只需一把,左边的屋子一般会有一个汉子,不需要理会,他不会妨碍你【第四批次】场景:宾馆剧情:疯子1工具:撬棍,铲子封闭:提示:四大地图中唯一个“疯子”剧情的宾馆,没有撬棍别想轻松加愉快的搜刮场景:施工点剧情:狙击手工具:撬棍、锯条一把封闭:冬天封闭提示:第一次去只需要撬棍,地下室第二次去的时候才能下去。第二次去再带锯条场景:老城区剧情:第一次有一个主人(A),第二次去又多了一个主人(B)工具:锯条两把,撬棍,铲子封闭:提示:两个主人一开始都不在房子里。A会在你搜刮到某个时间点时回来,见你就喊打喊杀的,建议是打残他,这样就不会妨碍到你,而且下次来又多了一个,不打残很难愉快的搜刮第二次来的时候,依然搜刮了一会儿就来了,打残可以,操作跟不上的,我建议第一次来就把二楼三楼的资源全部搬到屋外,因为B的活动范围在二楼与大门口之间有规律的巡逻,第二次来得时候静悄悄的把地下室(一条锯条)打通,可以避过主人愉快的搜刮,B不会去地下室,除非你作死!另外,杀人伤心场景:仓库剧情:土匪3工具:撬棍,锯条两把封闭:冬天封闭提示:可屠,拿私人物品不影响结局,不算偷不算抢【第五批次】场景:中心广场剧情:交易版工具:封闭:提示:可交易,没听说能放养场景:城市医院剧情:无剧情(一般第二次去医院会被炮击,但也有例外)工具:无(第二次去带铲子)封闭:冬天封闭提示:可交易,可放养,随便奔跑没事,第二次去捡到药品不还医生不影响结局。要偷东西自带撬棍场景:破败别墅剧情:逃兵3工具:封闭:提示:可屠,私人物品拿了会伤心,除了军人身上的装备,也有不少元件与木材,数量足够17格跑一趟场景:小公寓楼剧情:土匪3工具:无封闭:冬天封闭提示:拿私人物品会伤心,仅杀土匪拿武器即可,也有不少元件木材
还是挺不错的
《被炮击的屋子》【第一批次】场景:被炮击的屋子剧情:没有剧情工具:铲子,撬棍封闭:无提示:四大初始场景之一。场景:半塌的房屋剧情:平民版工具:锯条两把封闭:无提示:人物出现在右边,资源在左边的房屋,不走地下通道就只需一把,左边的屋子一般会有一个汉子,不需要理会,他不会妨碍你场景:贫民窟剧情:饥饿的画家工具:一个生肉或者(不行),锯子一把,撬棍封闭:冬天封闭提示:把食物白白送给画家有回报(自行百度)【第二批次】场景:车库剧情:没有剧情工具:锯条一把封闭:无提示:可交易,可放养(第一次伤心)。屋顶和后面的车库随便你奔跑前进不会有事,剧情人物不会理会你,当然,你不能跑到人家房子里去,也别去撬地下室的门,不作死就不会死场景:剧情:神父封闭:冬天封闭工具:铲子一把,锯条两把提示:可交易,可放养,熟手锯条一把就够,不要去教堂正下方的地下室就没有危险【第三批次】场景:超市剧情:流氓士兵工具:撬棍,铲子封闭:冬天封闭提示:战力高的背刺秒杀,战力低的背刺一下后立马跑二楼隐匿点暗杀秒杀(因一开始背刺不见一半血得以秒杀成功)场景:安静的房屋剧情:双老工具:无封闭:无提示:社区送温暖一样伤心【第四批次】场景:宾馆剧情:土匪3+人质1工具:撬棍,铲子封闭:冬天封闭提示:一共三个土匪,右上角一个人质,不建议带铲子,地下室里面的东西少的我都不愿意去挖土,我每次都是直接无视它~~场景:城市医院剧情:无剧情(一般第二次去医院会被炮击,但也有例外)工具:无(第二次去带铲子)封闭:无提示:可交易,可放养,随便奔跑没事,第二次去捡到药品不还医生不影响结局。要偷东西自带撬棍场景:被炮击的学校剧情:韦西尼民兵工具:锯条一把,铲子封闭:冬天封闭提示:可交易,可放养场景:小公寓楼剧情:土匪3工具:无封闭:无提示:拿私人物品会伤心,仅杀土匪拿武器即可,也有不少元件木材【第五批次】场景:中心广场剧情:交易版工具:无封闭:冬天封闭提示:可交易,没听说能放养场景:施工点剧情:狙击手工具:撬棍、锯条一把封闭:冬天封闭提示:第一次去只需要撬棍,地下室第二次去的时候才能下去。第二次去再带锯条场景:军队哨站剧情:没有剧情工具:锯条三把,撬棍封闭:无提示:可屠,可交易,可放养。拿私人物品不影响结局,不算偷不算抢场景:破败别墅剧情:逃兵3工具:无封闭:无提示:可屠,私人物品拿了会伤心,除了军人身上的装备,也有不少元件与木材,数量足够17格跑一趟
《废弃小屋》【第一批次】场景:废弃小屋剧情:没有剧情工具:铲子,撬棍封闭:无提示:四大初始场景之一场景:破败别墅剧情:有住民、潜入工具:无封闭:提示:该图可正常拿取的资源可以说全是元件与木材,数量足够17格搬2次(偷得另算),地下室有个柜子是私人物品,不打算偷就不要去撬场景:安静的房屋剧情:双老工具:无封闭:冬天封闭提示:社区送温暖一样伤心【第二批次】场景:超市剧情:扫荡三人组工具:撬棍封闭:提示:推荐人物15格马尔科,进门第一道电梯直上二楼全拿,接着直下地下室最左边全拿。建议预先拿食物、药、零件、电元、水,不要去打开地下室右边的门,下次再来打开。观察发现基本每个物资点都会被三人组一人拿一次→_→所以不推荐慢动作的17格胖子场景:被炮击的学校剧情:流浪汉工具:撬棍,铲子,锯条一把封闭:冬天封闭提示:资源多多,不拿私人物品就无危险【第三批次】场景:狙击点剧情:打通地下道拯救男子工具:锯条两把封闭:提示:前期急需贵重物品进行交易可来,至少5颗钻石和3格药品场景:小公寓楼剧情:有住民、潜入工具:铲子封闭:冬天封闭提示:一楼有三层土堆,资源不多,缺零件和电子元件的可以来一趟(偷得另算)【第四批次】场景:军队哨站剧情:没有剧情工具:锯条三把,撬棍封闭:提示:可屠,可交易,可放养。拿私人物品不影响结局,不算偷不算抢场景:城市医院剧情:无剧情(一般第二次去医院会被炮击,但也有例外)工具:无(第二次去带铲子)封闭:冬天封闭提示:可交易,可放养,随便奔跑没事,第二次去捡到药品不还医生不影响结局。要偷东西自带撬棍场景:圣玛丽教堂剧情:军人1+土匪3工具:铲子、锯条一把封闭:提示:可屠,资源不少,私人物品拿了会伤心场景:宾馆剧情:交易版工具:无封闭:冬天封闭提示:可交易,可放养,房子的右边有不少资源可拿,左边没东西拿(偷的另算)【第五批次】场景:施工点剧情:政府巡逻人员工具:撬棍、锯条两把封闭:提示:第一次去只需要一把锯条,锯掉最顶层的栏杆,地下室第二次去的时候才能下去。第二次去再带一把锯条来场景:妓院剧情:拯救失足少女工具:撬棍、锯条两把封闭:冬天封闭提示:可屠,可交易,可放养,拿私人物品不影响结局,不算偷不算抢。不用枪放养难度大增,且失败率过高,就算成功了,也一定没时间回家,说不定连女人都救不了,本楼主战五渣拿着斧头放养N次才成功了一次,累觉不爱场景:仓库剧情:土匪3工具:撬棍,锯条两把封闭:冬天封闭提示:可屠,拿私人物品不影响结局,不算偷不算抢场景:半塌的房屋剧情:交易版工具:撬棍,铲子封闭:提示:可交易,可放养,地下室有两堆土,挖了可以拿到大量元件木材,有一私人物品柜,里面有武器或钻石,拿了伤心,门不要撬,没东西拿
刘备:军师,此次伐魏你有何妙计?
《公寓废墟》【第一批次】场景:废墟公寓剧情:没有剧情工具:铲子,撬棍,锯条一把封闭:无提示:四大初始场景之一。场景:车库剧情:没有剧情工具:锯条一把封闭:冬天封闭提示:可交易,可放养,屋顶和后面的车库随便你奔跑前进不会有事,剧情人物不会理会你,当然,你不能跑到人家房子里去,也别去撬地下室的门,不作死就不会死场景:贫民窟剧情:饥饿的画家,没有危险工具:一个生肉或者(不行),锯子一把,撬棍封闭:无提示:把食物白白送给画家有回报(自行百度)【第二批次】场景:狙击点剧情:打通地下道拯救男子工具:锯条两把封闭:冬天封闭提示:前期急需贵重物品进行交易可来,至少5颗钻石和3格药品场景:军队哨站剧情:没有剧情工具:锯条三把,撬棍封闭:无提示:可屠,可交易,可放养。拿私人物品不影响结局,不算偷不算抢【第三批次】场景:小公寓楼剧情:有住民、潜入工具:铲子封闭:无提示:一楼有三层土堆,资源不多,缺零件和电子元件的可以来一趟(偷得另算)场景:破败别墅剧情:有住民、潜入工具:无封闭:冬天封闭提示:该图可偷取的资源可以说全是元件与木材,数量足够17格搬2次(偷得另算),地下室有个柜子是私人物品,不打算偷就不要去撬【第四批次】场景:施工点剧情:政府巡逻人员工具:撬棍、锯条两把封闭:冬天封闭提示:第一次去只需要一把锯条,锯掉最顶层的栏杆,地下室第二次去的时候才能下去。第二次去再带一把锯条来场景:宾馆剧情:土匪3+人质1工具:撬棍、铲子封闭:无提示:一共三个土匪,右上角一个人质,不建议带铲子,地下室里面的东西少的我都不愿意去挖土,我每次都是直接无视它~~场景:城市医院剧情:无剧情(一般第二次去医院会被炮击,但也有例外)工具:无(第二次去带铲子),要偷东西自带撬棍封闭:冬天封闭提示:可交易,可放养,随便奔跑没事,第二次去捡到药品不还医生不影响结局。结局要偷东西自带撬棍场景:圣玛丽教堂剧情:军人1+土匪3工具:铲子、锯条一把封闭:无提示:可屠,资源不少,私人物品拿了会伤心【第五批次】场景:妓院剧情:拯救失足少女工具:撬棍、锯条两把封闭:无提示:可屠,可交易,可放养,拿私人物品不影响结局,不算偷不算抢。不用枪放养难度大增,且失败率过高,就算成功了,也一定没时间回家,说不定连女人都救不了,本楼主战五渣拿着斧头放养N次才成功了一次,累觉不爱场景:仓库剧情:土匪3工具:撬棍,锯条两把封闭:无提示:可屠,拿私人物品不影响结局,不算偷不算抢场景:超市剧情:扫荡三人组工具:撬棍封闭:冬天封闭提示:推荐人物15格马尔科,进门第一道电梯直上二楼全拿,接着直下地下室最左边全拿。建议预先拿食物、药、零件、电元、水,不要去打开地下室右边的门,下次再来打开。观察发现基本每个物资点都会被三人组一人拿一次→_→所以不推荐慢动作的17格胖子场景:半塌的房屋剧情:交易版工具:撬棍,铲子封闭:冬天封闭提示:可交易,可放养,地下室有两堆土,挖了可以拿到大量元件木材,有一私人物品柜,里面有武器或钻石,拿了伤心,门不要撬,没东西拿
本篇详解到此结束,我第一次玩的时候,虽然网上吧内都有不少的攻略,但是没有一篇能告诉我,下个场景有什么,是什么剧情,冬天哪里会封闭,我好提前拿完东西,火一大干脆自己研究了字数虽然不多,但是挺耗时间的,因为四大地图都要重新来一次,还要用不同组合玩一次,听说出新版本了,等新版本汉化出来,如果有变动的地方,我再更新一篇,算是有头有尾吧第一次写这个,只是觉得能帮到别人就好,虽然不一定人人满意白白
汉化的安装包
感谢楼主,顺便你要是在交易员面前杀人的话,交易员就算已经残血求饶了也不会停止攻击。
贴吧热议榜
使用签名档&&
保存至快速回贴}

我要回帖

更多关于 百度地图使用场景说明 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信