android自定义view实现推箱子小游戏

本文实例为大家分享了android推箱子游戏的具体实现代码,供大家参考,具体内容如下

自定义view:

package com.jisai.materialdesigndemo.tuixiangzhi; 

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.ImageView; 

import com.jisai.materialdesigndemo.R; 

import java.util.ArrayList; 

public class View_tuixiangzhi extends ImageView {
  ArrayList<int[][]> arrayList = new ArrayList<>();
  int[][][] ccc =new int[300][15][15];
  int kk=0;
  Canvas canvas;
  private int mWidth;
  private int mHeight;
  Boolean flag=false;
  Bitmap bitmap0= BitmapFactory.decodeResource(getResources(), R.mipmap.qiang);
  Bitmap bitmap1= BitmapFactory.decodeResource(getResources(),R.mipmap.kong);
  Bitmap bitmap2= BitmapFactory.decodeResource(getResources(),R.mipmap.ren_1);
  Bitmap bitmap3= BitmapFactory.decodeResource(getResources(),R.mipmap.xiang_1);
  Bitmap bitmap4= BitmapFactory.decodeResource(getResources(),R.mipmap.xiang_2);
  Bitmap bitmap5= BitmapFactory.decodeResource(getResources(),R.mipmap.hua);
  Bitmap bitmap6= BitmapFactory.decodeResource(getResources(),R.mipmap.renandhua);
  int [][]aaa= {//0是墙,1是空,2是人,3是空箱子,4是满箱子,5是花,6是人加花
      {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},
      {0,0,0,0,0,0,5,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,0,3,1,3,5,0,0,0,0,0},
      {0,0,0,0,5,3,2,1,0,0,0,0,0,0,0},
      {0,0,0,0,0,0,0,3,0,0,0,0,0,0,0},
      {0,0,0,0,0,0,0,5,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}
  }; 

  public interface PassLitener
  {
    void pass();
  }
  private PassLitener mPassLitener;
  public void setPassLitener(PassLitener mPassLitener)
  {
    this.mPassLitener = mPassLitener;
  } 

  public View_tuixiangzhi(Context context) {
    super(context);
    init("MyImageView(Context context)");
  } 

  public View_tuixiangzhi(Context context, AttributeSet attrs) {
    super(context, attrs);
    init("MyImageView(Context context, AttributeSet attrs)");
  } 

  public View_tuixiangzhi(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    init("MyImageView(Context context, AttributeSet attrs, int defStyle)"); 

  } 

  private void init(String structName) {
  } 

  @Override
  protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    int specSize = MeasureSpec.getSize(widthMeasureSpec); 

    mWidth = specSize;
    specSize = MeasureSpec.getSize(heightMeasureSpec); 

    mHeight = specSize; 

    Log.e("宽高:","宽:"+mWidth+"高:"+mHeight); 

    setMeasuredDimension(mWidth, mHeight); 

  } 

  @Override
  protected void onDraw(Canvas canvas) {
    Log.e("onDraw:","onDraw");
    this.canvas=canvas;
    super.onDraw(canvas);
    Paint p=new Paint();
    p.setColor(Color.RED);
    //canvas.drawRect(20,20,100,100,p);
    //canvas.drawColor(Color.RED);
    for(int i=0;i<15;i++){
      for(int k=0;k<15;k++){
        int x=aaa[i][k]; 

        Rect rect = new Rect((mWidth/15)*k,(mWidth/15)*i,(mWidth/15)*(k+1),(mWidth/15)*(i+1));
        switch (x){
          case 0:
            canvas.drawBitmap(bitmap0,null,rect,p);
            break;
          case 1:
            canvas.drawBitmap(bitmap1,null,rect,p);
            break;
          case 2:
            canvas.drawBitmap(bitmap2,null,rect,p);
            break;
          case 3:
            canvas.drawBitmap(bitmap3,null,rect,p);
            break;
          case 4:
            canvas.drawBitmap(bitmap4,null,rect,p);
            break;
          case 5:
            canvas.drawBitmap(bitmap5,null,rect,p);
            break;
          case 6:
            canvas.drawBitmap(bitmap6,null,rect,p);
            break; 

        }
      }
    } 

  } 

  public void setaaa(int [][]xxx){
    for(int i=0;i<15;i++){
      for(int k=0;k<15;k++) {
        aaa[i][k]=xxx[i][k];
      }
    }
    kk=0;
    arrayList.clear();
    postInvalidate();
  }
  public void moveLeft(){
    addBack();
    flag=false;
    for(int i=0;i<15;i++){
      if (flag){
        break;
      }
      for(int k=0;k<15;k++) {
        if (flag){
          break;
        }
        int x = aaa[i][k];
        if(x==2|x==6){
          Log.e("x",""+x+"i:"+i+"k:"+k); 

          switch ( aaa[i][k-1]){
            case 0://左边是墙,不能移动
              break;
            case 1://左边是空,可以移动
              if(x==6){
                aaa[i][k]=5;
              }else{
                aaa[i][k]=1;
              }
              aaa[i][k-1]=2; 

              break;
            case 3://左边是空箱子
              if(aaa[i][k-2]==5){//箱子左边是花
                aaa[i][k-2]=4;
                aaa[i][k-1]=2;
                if(x==6){
                  aaa[i][k]=5;
                }else{
                  aaa[i][k]=1;
                } 

              }else if(aaa[i][k-2]==1){//箱子左边是空
                aaa[i][k-2]=3;
                aaa[i][k-1]=2;
                if(x==6){
                  aaa[i][k]=5;
                }else{
                  aaa[i][k]=1;
                } 

              }else{}//是其他则不能移动 

              break;
            case 4://左边是满箱子
              if(aaa[i][k-2]==5){//箱子左边是花
                aaa[i][k-2]=4;
                aaa[i][k-1]=6;
                if(x==6){
                  aaa[i][k]=5;
                }else{
                  aaa[i][k]=1;
                } 

              }else if(aaa[i][k-2]==1){//箱子左边是空
                aaa[i][k-2]=3;
                aaa[i][k-1]=6;
                if(x==6){
                  aaa[i][k]=5;
                }else{
                  aaa[i][k]=1;
                } 

              }else{}//是其他则不能移动
              break;
            case 5://左边是花
              if(x==6){
                aaa[i][k]=5;
              }else{
                aaa[i][k]=1;
              }
              aaa[i][k-1]=6; 

              break;
          }
          flag=true;
        }
      }
    } 

    postInvalidate();
    ifPass();
  }
  public void moveRight(){
    addBack();
    flag=false;
    for(int i=0;i<15;i++){
      if (flag){
        break;
      }
      for(int k=0;k<15;k++) {
        int x = aaa[i][k];
        if (flag){
          break;
        }
        if(x==2|x==6){
          Log.e("x",""+x+"i:"+i+"k:"+k);
          switch ( aaa[i][k+1]){
            case 0://右边是墙,不能移动
              break;
            case 1://右边是空,可以移动
              if(x==6){
                aaa[i][k]=5;
              }else{
                aaa[i][k]=1;
              }
              aaa[i][k+1]=2;
              break;
            case 3://右边是空箱子
              if(aaa[i][k+2]==5){//箱子右边是花
                aaa[i][k+2]=4;
                aaa[i][k+1]=2;
                if(x==6){
                  aaa[i][k]=5;
                }else{
                  aaa[i][k]=1;
                }
              }else if(aaa[i][k+2]==1){//箱子右边是空
                aaa[i][k+2]=3;
                aaa[i][k+1]=2;
                if(x==6){
                  aaa[i][k]=5;
                }else{
                  aaa[i][k]=1;
                }
              }else{}//是其他则不能移动
              break;
            case 4://右边是满箱子
              if(aaa[i][k+2]==5){//箱子右边是花
                aaa[i][k+2]=4;
                aaa[i][k+1]=6;
                if(x==6){
                  aaa[i][k]=5;
                }else{
                  aaa[i][k]=1;
                }
              }else if(aaa[i][k+2]==1){//箱子右边是空
                aaa[i][k+2]=3;
                aaa[i][k+1]=6;
                if(x==6){
                  aaa[i][k]=5;
                }else{
                  aaa[i][k]=1;
                }
              }else{}//是其他则不能移动
              break;
            case 5://右边是花
              if(x==6){
                aaa[i][k]=5;
              }else{
                aaa[i][k]=1;
              }
              aaa[i][k+1]=6;
              break;
          }
          flag=true;
        }
      }
    } 

    postInvalidate();
    ifPass();
  }
  public void moveUp(){
    addBack();
    flag=false;
    for(int i=0;i<15;i++){
      if (flag){
        break;
      }
      for(int k=0;k<15;k++) {
        int x = aaa[i][k];
        if (flag){
          break;
        }
        if(x==2|x==6){
          Log.e("x",""+x+"i:"+i+"k:"+k);
          switch ( aaa[i-1][k]){
            case 0://上边是墙,不能移动
              break;
            case 1://上边是空,可以移动
              if(x==6){
                aaa[i][k]=5;
              }else{
                aaa[i][k]=1;
              }
              aaa[i-1][k]=2;
              break;
            case 3://上边是空箱子
              if(aaa[i-2][k]==5){//箱子上边是花
                aaa[i-2][k]=4;
                aaa[i-1][k]=2;
                if(x==6){
                  aaa[i][k]=5;
                }else{
                  aaa[i][k]=1;
                }
              }else if(aaa[i-2][k]==1){//箱子上边是空
                aaa[i-2][k]=3;
                aaa[i-1][k]=2;
                if(x==6){
                  aaa[i][k]=5;
                }else{
                  aaa[i][k]=1;
                }
              }else{}//是其他则不能移动
              break;
            case 4://上边是满箱子
              if(aaa[i-2][k]==5){//箱子上边是花
                aaa[i-2][k]=4;
                aaa[i-1][k]=6;
                if(x==6){
                  aaa[i][k]=5;
                }else{
                  aaa[i][k]=1;
                }
              }else if(aaa[i-2][k]==1){//箱子上边是空
                aaa[i-2][k]=3;
                aaa[i-1][k]=6;
                if(x==6){
                  aaa[i][k]=5;
                }else{
                  aaa[i][k]=1;
                }
              }else{}//是其他则不能移动
              break;
            case 5://上边是花
              if(x==6){
                aaa[i][k]=5;
              }else{
                aaa[i][k]=1;
              }
              aaa[i-1][k]=6;
              break;
          }
          flag=true;
        }
      }
    } 

    postInvalidate();
    ifPass();
  }
  public void moveDown(){
    addBack();
    flag=false;
    for(int i=0;i<15;i++){
      if (flag){
        break;
      }
      for(int k=0;k<15;k++) {
        int x = aaa[i][k];
        if (flag){
          break;
        }
        if(x==2|x==6){
          Log.e("x",""+x+"i:"+i+"k:"+k);
          switch ( aaa[i+1][k]){
            case 0://下边是墙,不能移动
              break;
            case 1://下边是空,可以移动
              if(x==6){
                aaa[i][k]=5;
              }else{
                aaa[i][k]=1;
              }
              aaa[i+1][k]=2;
              break;
            case 3://下边是空箱子
              if(aaa[i+2][k]==5){//箱子下边是花
                aaa[i+2][k]=4;
                aaa[i+1][k]=2;
                if(x==6){
                  aaa[i][k]=5;
                }else{
                  aaa[i][k]=1;
                }
              }else if(aaa[i+2][k]==1){//箱子下边是空
                aaa[i+2][k]=3;
                aaa[i+1][k]=2;
                if(x==6){
                  aaa[i][k]=5;
                }else{
                  aaa[i][k]=1;
                }
              }else{}//是其他则不能移动
              break;
            case 4://下边是满箱子
              if(aaa[i+2][k]==5){//箱子下边是花
                aaa[i+2][k]=4;
                aaa[i+1][k]=6;
                if(x==6){
                  aaa[i][k]=5;
                }else{
                  aaa[i][k]=1;
                }
              }else if(aaa[i+2][k]==1){//箱子下边是空
                aaa[i+2][k]=3;
                aaa[i+1][k]=6;
                if(x==6){
                  aaa[i][k]=5;
                }else{
                  aaa[i][k]=1;
                }
              }else{}//是其他则不能移动
              break;
            case 5://下边是花
              if(x==6){
                aaa[i][k]=5;
              }else{
                aaa[i][k]=1;
              }
              aaa[i+1][k]=6;
              break;
          }
          flag=true;
        }
      }
    }
    postInvalidate();
    ifPass();
  } 

  public void ifPass(){
    flag=false;
    for(int i=0;i<15;i++){
      if (flag){
        break;
      }
      for(int k=0;k<15;k++) {
        int x = aaa[i][k];
        if (flag){
          break;
        }
        if(x==3){//还有空箱子
          flag=true;
        }
      }
    } 

    if (!flag){//没有一个空箱子
      mPassLitener.pass();
    }
  } 

  public void moveBack(){
    if(arrayList.size()>0){
      this.aaa=(arrayList.get(arrayList.size()-1));
      postInvalidate();
      arrayList.remove(arrayList.size()-1);
    }
  }
  public void addBack(){
    if(kk>299){
      arrayList.clear();
      kk=0;
    }
    if(arrayList.size()>99){
      arrayList.remove(0);
    }
    for(int i=0;i<15;i++){
      for(int k=0;k<15;k++){
        ccc[kk][i][k]=aaa[i][k];
      }
    }
    arrayList.add(ccc[kk]);
    kk++;
  } 

}

activity  :

package com.jisai.materialdesigndemo.tuixiangzhi; 

import android.content.DialogInterface;
import android.graphics.Color;
import android.os.Bundle;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button; 

import com.jisai.materialdesigndemo.R; 

import java.util.ArrayList; 

public class MainActivity_tuixiangzhi extends AppCompatActivity
    {
  ArrayList<int[][]> arrayList=new ArrayList<>();
      Button up,down,left,right,back,nextup,nextdown;
      View_tuixiangzhi myImageView_circle;
      Toolbar mToolbar;
      int   LV=1;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_tuixiangzhi);
    LV_data lv_data=new LV_data();
    arrayList=lv_data.arrayList;
    mToolbar = (Toolbar) findViewById(R.id.toolbar);
    // mToolbar.setBackgroundColor(0xFF42B1CD);
    mToolbar.setTitle("推箱子(第"+LV+"关)");    //设置标题
    mToolbar.setTitleTextColor(Color.parseColor("#ffffff"));  //设置标题颜色
    setSupportActionBar(mToolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        // onBackPressed();
        finish();
        //Toast.makeText(getApplicationContext(),"返回",Toast.LENGTH_SHORT).show(); 

      }
    }); 

    myImageView_circle= (View_tuixiangzhi) findViewById(R.id.nnn); 

    myImageView_circle.setPassLitener(new View_tuixiangzhi.PassLitener() {
      @Override
      public void pass() { 

        final AlertDialog.Builder normalDialog =
            new AlertDialog.Builder(MainActivity_tuixiangzhi.this);
        normalDialog.setTitle("恭喜你");
        normalDialog.setMessage("真厉害,你已通过本关!");
        normalDialog.setPositiveButton("下一关",
            new DialogInterface.OnClickListener() {
              @Override
              public void onClick(DialogInterface dialog, int which) {
                if(LV<arrayList.size()){
                  LV=LV+1;
                  myImageView_circle.setaaa(arrayList.get(LV-1));
                  mToolbar.setTitle("推箱子(第"+LV+"关)");    //设置标题
                }else{
                  final Snackbar snackbar = Snackbar.make(up, "已是最后一关", Snackbar
                      .LENGTH_LONG);
                  snackbar.show();
                  snackbar.setAction("确定", new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                      snackbar.dismiss();
                    }
                  });
                } 

              }
            });
        // 显示
        normalDialog.show();
      }
    }); 

    up= (Button) findViewById(R.id.shang);
    down= (Button) findViewById(R.id.xia);
    left= (Button) findViewById(R.id.zuo);
    right= (Button) findViewById(R.id.you);
    back= (Button) findViewById(R.id.back);
    nextup= (Button) findViewById(R.id.shangyi);
    nextdown= (Button) findViewById(R.id.xiayi); 

    up.setOnClickListener(cccc);
    down.setOnClickListener(cccc);
    left.setOnClickListener(cccc);
    right.setOnClickListener(cccc);
    back.setOnClickListener(cccc);
    nextup.setOnClickListener(cccc);
    nextdown.setOnClickListener(cccc); 

  }
      View.OnClickListener cccc = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
          switch (v.getId()){
            case R.id.shang:
              myImageView_circle.moveUp();
              break;
            case R.id.xia:
              myImageView_circle.moveDown();
              break;
            case R.id.zuo:
              myImageView_circle.moveLeft();
              break;
            case R.id.you:
              myImageView_circle.moveRight();
              break;
            case R.id.back:
              myImageView_circle.moveBack();
              break;
            case R.id.shangyi:
              if(LV>1){
                LV=LV-1;
                myImageView_circle.setaaa(arrayList.get(LV-1));
                mToolbar.setTitle("推箱子(第"+LV+"关)");    //设置标题
              }
              break;
            case R.id.xiayi:
              if(LV<arrayList.size()){
                LV=LV+1;
                myImageView_circle.setaaa(arrayList.get(LV-1));
                mToolbar.setTitle("推箱子(第"+LV+"关)");    //设置标题
              }else{
                final Snackbar snackbar = Snackbar.make(up, "已是最后一关", Snackbar
                    .LENGTH_LONG);
                snackbar.show();
                snackbar.setAction("确定", new View.OnClickListener() {
                  @Override
                  public void onClick(View view) {
                    snackbar.dismiss();
                  }
                });
              }
              break;
          } 

        }
      }; 

      @Override
      public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_tuixiangzhi, menu);
        return true;
      } 

      @Override
      public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId(); 

        //noinspection SimplifiableIfStatement
        if (id == R.id.item1) {
          myImageView_circle.setaaa(arrayList.get(LV-1)); 

          return true;
        } 

        return super.onOptionsItemSelected(item);
      } 

}

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  tools:context="com.jisai.materialdesigndemo.caipu.CaipuItemActivity"> 

    <android.support.v7.widget.Toolbar
      android:id="@+id/toolbar"
      android:layout_width="match_parent"
      android:layout_height="?attr/actionBarSize"
      app:layout_collapseMode="pin"
      android:elevation="6dp"
      android:background="?attr/colorPrimary"
      app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
      app:layout_scrollFlags="scroll|enterAlways"
      /> 

  <RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@mipmap/bg3"
    >
    <com.jisai.materialdesigndemo.tuixiangzhi.View_tuixiangzhi
      android:id="@+id/nnn"
      android:layout_width="match_parent"
      android:layout_height="wrap_content" /> 

    <RelativeLayout
      android:layout_alignParentBottom="true"
      android:layout_width="match_parent"
      android:layout_height="150dp"
      >
      <Button
        android:id="@+id/back"
        android:layout_width="40dp"
        android:layout_centerInParent="true"
        android:layout_height="40dp"
        android:background="@drawable/back2"
        android:layout_margin="15dp"/> 

      <Button
        android:id="@+id/shang"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:background="@drawable/s_s"
        android:layout_above="@+id/back"
        android:layout_alignLeft="@+id/back"/>
      <Button
        android:id="@+id/xia"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:background="@drawable/d_s"
        android:layout_below="@+id/back"
        android:layout_alignLeft="@+id/back"/>
      <Button
        android:id="@+id/zuo"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:background="@drawable/l_s"
        android:layout_toLeftOf="@+id/back"
        android:layout_alignTop="@+id/back"/>
      <Button
        android:id="@+id/you"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:background="@drawable/r_s"
        android:layout_toRightOf="@+id/back"
        android:layout_alignTop="@+id/back"/> 

      <Button
        android:id="@+id/shangyi"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:background="@drawable/l_n"
        android:layout_marginBottom="40dp"
        android:layout_marginLeft="15dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        />
      <TextView
        android:layout_width="wrap_content"
        android:layout_height="30dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_marginLeft="20dp"
        android:text="上一关"/> 

      <Button
        android:id="@+id/xiayi"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:background="@drawable/r_n"
        android:layout_marginBottom="40dp"
        android:layout_marginRight="15dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        />
      <TextView
        android:layout_width="wrap_content"
        android:layout_height="30dp"
        android:layout_marginRight="20dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:text="下一关"/> 

    </RelativeLayout> 

  </RelativeLayout> 

</LinearLayout>

关卡数据(二位数组),我加了40关,太长这里就贴一点。

package com.jisai.materialdesigndemo.tuixiangzhi; 

import java.util.ArrayList; 

/**
 * Created by Administrator on 17-4-11.
 */
public class LV_data {
 final  ArrayList<int[][]>arrayList = new ArrayList<>(); 

  LV_data(){
    int[][] LV_1 ={//0是墙,1是空,2是人,3是空箱子,4是满箱子,5是花,6是人加花
        {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},
        {0,0,0,0,0,0,5,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,0,3,1,3,5,0,0,0,0,0},
        {0,0,0,0,5,3,2,1,0,0,0,0,0,0,0},
        {0,0,0,0,0,0,0,3,0,0,0,0,0,0,0},
        {0,0,0,0,0,0,0,5,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}
    };
    arrayList.add(LV_1); 

    int[][] LV_2 ={//0是墙,1是空,2是人,3是空箱子,4是满箱子,5是花,6是人加花
        {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,2,1,1,0,0,0,0,0,0,0,0},
        {0,0,0,0,1,3,3,0,0,0,0,0,0,0,0},
        {0,0,0,0,1,3,1,0,0,0,5,0,0,0,0},
        {0,0,0,0,0,0,1,0,0,0,5,0,0,0,0},
        {0,0,0,0,0,0,1,1,1,1,5,0,0,0,0},
        {0,0,0,0,0,1,1,1,0,1,1,0,0,0,0},
        {0,0,0,0,0,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}
    };
    arrayList.add(LV_2); 

    int[][] LV_3 ={//0是墙,1是空,2是人,3是空箱子,4是满箱子,5是花,6是人加花
        {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},
        {0,0,0,0,0,1,1,1,1,1,0,0,0,0,0},
        {0,0,0,0,0,3,0,0,0,1,1,1,0,0,0},
        {0,0,0,0,1,2,1,3,1,1,3,1,0,0,0},
        {0,0,0,0,1,5,5,0,1,3,1,0,0,0,0},
        {0,0,0,0,0,5,5,0,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,0,0,0,0}
    };
    arrayList.add(LV_3); 

    int[][] LV_4 ={//0是墙,1是空,2是人,3是空箱子,4是满箱子,5是花,6是人加花
        {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,0,0,0,0,0,0,0},
        {0,0,0,0,0,2,3,1,0,0,0,0,0,0,0},
        {0,0,0,0,0,0,3,1,0,0,0,0,0,0,0},
        {0,0,0,0,0,0,1,3,1,0,0,0,0,0,0},
        {0,0,0,0,0,5,3,1,1,0,0,0,0,0,0},
        {0,0,0,0,0,5,5,4,5,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,0,0,0,0,0,0}
    };
    arrayList.add(LV_4); 

    int[][] LV_5 ={//0是墙,1是空,2是人,3是空箱子,4是满箱子,5是花,6是人加花
        {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},
        {0,0,0,0,0,2,1,0,0,0,0,0,0,0,0},
        {0,0,0,0,0,1,3,1,1,0,0,0,0,0,0},
        {0,0,0,0,0,0,1,0,1,0,0,0,0,0,0},
        {0,0,0,0,5,0,1,0,1,1,0,0,0,0,0},
        {0,0,0,0,5,3,1,1,0,1,0,0,0,0,0},
        {0,0,0,0,5,1,1,1,3,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}
    };
    arrayList.add(LV_5); 

    int[][] LV_6 ={//0是墙,1是空,2是人,3是空箱子,4是满箱子,5是花,6是人加花
        {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},
        {0,0,1,1,1,5,0,0,0,1,0,0,0,0,0},
        {0,0,1,0,1,0,1,1,1,1,0,0,0,0,0},
        {0,0,1,0,1,3,1,3,0,5,1,0,0,0,0},
        {0,0,1,0,1,1,4,1,1,0,1,0,0,0,0},
        {0,0,1,5,0,3,1,3,1,0,1,0,0,0,0},
        {0,0,0,1,1,1,1,0,1,0,1,0,0,0,0},
        {0,0,0,1,0,0,0,5,1,1,1,1,2,0,0},
        {0,0,0,1,1,1,1,1,0,0,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}
    };
    arrayList.add(LV_6); 

    int[][] LV_7 ={//0是墙,1是空,2是人,3是空箱子,4是满箱子,5是花,6是人加花
        {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},
        {0,0,0,1,1,1,0,0,0,0,0,0,0,0,0},
        {0,0,0,1,3,1,5,5,1,3,1,0,0,0,0},
        {0,0,0,0,3,1,5,5,3,3,2,0,0,0,0},
        {0,0,0,0,1,1,5,5,1,3,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,0,0,0,0},
        {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
    };
    arrayList.add(LV_7); 

    int[][] LV_8 ={//0是墙,1是空,2是人,3是空箱子,4是满箱子,5是花,6是人加花
        {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},
        {0,0,0,0,0,0,0,1,1,1,1,0,0,0,0},
        {0,0,0,0,0,5,1,3,0,0,1,0,0,0,0},
        {0,0,0,0,5,5,3,1,3,1,1,2,0,0,0},
        {0,0,0,0,5,5,1,3,1,3,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,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}
    };
    arrayList.add(LV_8); 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android 自定义View的使用介绍

    在项目开发中,可能系统自带的一些widget不能满足我们的需求,这时就需要自定义View. 通过查看系统中的常用widget如Button,TextView,EditText,他们都继承自View,所以我们在继承自定义View的时候也自然的需要继承View.1.首先新建一个类LView继承自View 复制代码 代码如下: public class LView extends View { private Paint paint; public LView(Context context) {  

  • Android自定义View实现游戏摇杆键盘的方法示例

    前言 本文主要给大家介绍的是关于Android自定义View实现游戏摇杆键盘的相关内容,为什么会有这篇文章呢?因为在之前的一个项目,操作方向的方式为上下左右,左上需要同时按住左键和右键的方式进行操作. 如下图: 近来需要升级项目,操作方式改为类似王者荣耀的摇杆操作. 如下图: 好了,下面话不多说了,跟着小编来一起看看是如何实现的吧. 绘制背景 实现遥感按钮,需要绘制背景,绘制中心的遥感按钮.绘制遥感背景,需要创建一个RemoteViewBg类,存储背景图,减少重复创建bitmap. Remote

  • android自定义view实现推箱子小游戏

    本文实例为大家分享了android推箱子游戏的具体实现代码,供大家参考,具体内容如下 自定义view: package com.jisai.materialdesigndemo.tuixiangzhi; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import androi

  • js推箱子小游戏步骤代码解析

    推箱子小游戏大家肯定都玩过,之所以写这篇文章,是觉得这个小游戏足够简单好理解 demo: 步骤解析: 本文代码已经放在了github上面了,里面也进行了很详细的代码注释,可以copy下来,在本地运行一下看看. 1. 渲染地图 html结构: html结构十分简单,只要弄一堆div,来放置地图的class就可以了,我这里初始化了12*9个div,地图里最多九行高度. 这些div都是同样大小,地图渲染出来区别的只是颜色的不同. 地图函数: var box=$('.box div'); //地图使用的

  • C++实现推箱子小游戏源码

    本文实例为大家分享了C++实现推箱子小游戏的具体代码,供大家参考,具体内容如下 功能尚为完善. // ConsoleApplication2.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include<windows.h> #define KEY_DOWN(vk_code) GetAsyncKeyState(vk_code) & 0x8000 ? 1 : 0 using

  • DEVC++实现推箱子小游戏

    推箱子小游戏(基于DEVC++),供大家参考,具体内容如下 #include<iostream> #include<stdio.h> #include<conio.h> #include <windows.h> using namespace std; void Game_Menu(HANDLE hout); void Game_description(HANDLE hout); void gotoxy(HANDLE hout, int x, int y);

  • java二维数组实现推箱子小游戏

    本文实例为大家分享了java实现推箱子小游戏的具体代码,供大家参考,具体内容如下 二维数组 二维数组:类似于二维表格(有很多层,每一层有多个房间的楼房) 数组声明: 数据类型[][]数据名 = new 数据类型[行数][列数]; 获取二维数组的长度:数组名.lengt 得到的是行数 数组名[行下标].length 得到的是列数 推箱子小游戏 import java.util.Random; import java.util.Scanner; /* * 推箱子的小游戏 */ public clas

  • C语言代码实现推箱子小游戏

    本文实例为大家分享了C语言实现推箱子小游戏的具体代码,供大家参考,具体内容如下 本次游戏是个推箱子第一关最简单的小游戏 有详细注释,下面是做出来的游戏界面 游戏操作说明和功能说明: 1.按wasd控制小人的上下左右移动. 2.按 r 重新开始游戏 3.游戏开始有操作介绍 4.游戏结束有胜利提示 游戏原理分析 1.游戏开始时的星星个数 = 箱子在星星上的个数时 , 游戏胜利. 2.按 r 键重新开始游戏, 我们需要定义一个量 map_1[8][8] 来保存游戏初始时的界面, 操作时我们将其赋值给

  • C++实现推箱子小游戏

    本文实例为大家分享了C++实现推箱子小游戏的具体代码,供大家参考,具体内容如下 游戏效果 简单易懂的推箱子闯关小游戏. 游戏代码 #include <bits/stdc++.h> #include <windows.h> #include <conio.h> using namespace std; #define VERSION "2.2" #define M 55 int n, m, wall[M][M], hole[M][M], box[M][

  • C/C++编写推箱子小游戏

    本文实例为大家分享了C/C++编写推箱子小游戏的具体代码,供大家参考,具体内容如下 我们用' #'来代表墙,'O'来代表箱子,' * '代表终点,'@'代表箱子已经到达终点,'S来表示人'. 注意:W,A,S,D为方向键,而且要在英文格式下 运行示例: 以下为完整代码: /* 推箱子(示例二) */ #include <stdio.h> #include <stdlib.h> #include <windows.h> #include <conio.h> i

  • C/C++实现推箱子小游戏

    本文实例为大家分享了C/C++实现推箱子小游戏的具体代码,供大家参考,具体内容如下 效果演示 实现功能 如上图所示.按键控制小猪的运动,推箱子到达目的地. 如何实现 1.首先思考要保存箱子,小猪等信息,添加多个map可以用到三维数组. 2.定义小猪,箱子,墙,空地等信息在三维数组里的数值. 空地             0       墙               1  目的地           2     箱子             3  猪               4  2+4=6

  • 用C++实现推箱子小游戏

    前言 推箱子小游戏相信是很多人的同年记忆了,今天用c++语言来尝试下,用的是vs编译器. 代码还有很多可以优化的地方,为了更直观了解函数的形参和实参,所以地图没有用全局变量声明了,其实用全局变量声明会简洁很多. 头文件和main函数分享在最下面了. 提示:以下是本篇文章正文内容,下面案例可供参考 一.初始化游戏数据 void GameInit(int(*&pMap)[10][10], int index)//两张地图数据 { // static:返回静态全局区变量 static int loca

随机推荐