完整工程已打包放在我的资源文件中  https://download.csdn.net/download/huangshuai147/11151692

package com.example.pushbox;import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;public class GameMain extends Activity {electricity elect;public LinearLayout ll = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_game_main);ll = (LinearLayout)findViewById(R.id.ll);}/** 通过判断用户点击按钮来做相应的动作* 通过Intent携带数据,Game类根据数据判断应该加载的那类游戏视图* continue= no是新游戏* continue = yes是需要加载存储的游戏状态,来继续上一次未完成的游戏* */public void onClick(View view){Intent in=null;switch (view.getId()) {case R.id.btn_newgame:in=new Intent(GameMain.this, Game.class);in.putExtra("continue", "no");//新游戏startActivity(in);break;case R.id.btn_exit:   //游戏退出isFinish();break;case R.id.btn_about:  //游戏介绍in=new Intent(GameMain.this, about.class);startActivity(in);break;case R.id.btn_continue: //继续游戏in=new Intent(this, Game.class);in.putExtra("continue", "yes");startActivity(in);break;}}public void isFinish(){AlertDialog.Builder dl1 = new AlertDialog.Builder(this);dl1.setTitle("Warnning!");dl1.setMessage("Do you want exit?");dl1.setPositiveButton("yes", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {GameMain.this.finish();}});dl1.setNeutralButton("no", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {}});dl1.create();dl1.show();}@Overrideprotected void onPause(){// TODO Auto-generated method stubsuper.onPause();unregisterReceiver(elect);}@Overrideprotected void onResume(){// TODO Auto-generated method stubsuper.onResume();elect=new electricity();IntentFilter intentFilter=new IntentFilter(Intent.ACTION_BATTERY_CHANGED);registerReceiver(elect, intentFilter);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {MenuInflater inflater =new MenuInflater(this);inflater.inflate(R.menu.activity_game_main, menu);return super.onCreateOptionsMenu(menu);}@Override                     public boolean onOptionsItemSelected(MenuItem item) {// TODO Auto-generated method stubswitch (item.getItemId()) {case R.id.music:ll.setBackgroundResource(R.drawable.pc3);Intent in=new Intent(GameMain.this,music.class);startActivity(in);break;case R.id.help:           Log.i("info", "help");Intent inn=new Intent(GameMain.this,help.class);startActivity(inn);ll.setBackgroundResource(R.drawable.pc4);break;case R.id.bgset:findBgset();ll.setBackgroundResource(R.drawable.pc2);break;case R.id.explain:findAbout();ll.setBackgroundResource(R.drawable.pc1);break;}return super.onOptionsItemSelected(item);}  public void findBgset(){AlertDialog.Builder dll = new AlertDialog.Builder(this);final String[] Bgset = {"跑车1","跑车2","跑车3","跑车4"};dll.setTitle("Which favorite's is select");dll.setIcon(R.id.bgset);dll.setItems(Bgset, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which){String s="你的选择是:";if(Bgset[which]=="跑车1"){s += "跑车1";ll.setBackgroundResource(R.drawable.pc1);}else if(Bgset[which]=="跑车2"){s += "跑车2";ll.setBackgroundResource(R.drawable.pc2);}else if(Bgset[which]=="跑车3"){s += "跑车3";ll.setBackgroundResource(R.drawable.pc3);}else{s += "跑车4";ll.setBackgroundResource(R.drawable.pc4);}Toast.makeText(GameMain.this,s,1000).show();}});dll.create();dll.show();}public void findAbout(){String s="最经典的推箱子游戏,类似的游戏你一定早就玩过。要控制搬运工上下左右移动,来将箱子推到指定地点记得几年前,《推箱子》在PC机上刮起了一股不小的益智类游戏的旋风,现在许多资深玩家也都对《推箱子》赞不绝口,可见有深度的益智类游戏是非常受大家欢迎的。 \n推箱子游戏1981年由日本人今林宏行首创,是在1982年12月由Thinking Rabbit 公司首次发行,名“仓库番”。箱子只可以推, 不可以拉, 而且一次只能推动一个,胜利条件就是把所有的箱子都推到目的地。\n推箱子游戏是一种老少皆宜的益智游戏,既可以开发青少年学生的智力,又可以防止老年痴呆症,全家一起攻关还可以促进家庭和睦,何乐而不为?";Toast.makeText(GameMain.this,s,1000).show();}
}
package com.example.pushbox;
import java.util.ArrayList;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.widget.Toast;public class GameView extends View {public int gate=Game.gate;private int manx;private int many;private float xoff=10;private float yoff=20;private int tilesize;public int maprow=0;public int mapcolumn=0;private int width=0;private int heith=0;private Bitmap pic[]=null;final int WALL=1;final int GOAL=2;final int ROAD=3;final int BOX=4;final int BOXATGOAL=5;final int MAN=6;private Paint paint;private Game game=null;public  int [][]map=null;private int [][]tem;//原来的地图float currentx;float currenty;public GameView(Context context, AttributeSet attrs) {super(context, attrs);//实例化game,后面用game=(Game)context;/*WindowManager = manager = game.getWindowManager();width = manager.getDefaultDisplay().getWidth();heith = manager.getDefaultDisplay().getHeight(); *///上面的那种获取宽高改成下面的那种//获取当前游戏屏幕的宽和高DisplayMetrics dm = getResources().getDisplayMetrics();width= dm.widthPixels;heith= dm.heightPixels;this.setFocusable(true);/** 这里不再是initMap()* 我们需要判断一下,用户单击的时哪个按钮* 如果是continue按钮,则需要使用存储的地图game.stored* 如果是New Game按钮,则直接使用initMap()从MapList中调取地图*/if(game.continue_game){map=game.stored;getMapdetail();getmanposition();}else{initMap();}initpic();  }public void initMap() {map=getmap(gate);getMapdetail();getmanposition();list.clear();}public int [][]getmap(int grate){return MapList.getmap(grate);}//获取地图的行列数,地图边距,每个图片的大小,保存当前游戏的原始地图private void getMapdetail(){maprow=map.length;mapcolumn=map[gate].length;xoff=30;yoff=60;int t=maprow>mapcolumn?maprow:mapcolumn;int s1=(int) Math.floor((width-2*xoff)/t);int s2=(int) Math.floor((heith-xoff)/t);tilesize=s1<s2?s1:s2;tem=MapList.getmap(gate);}public  void getmanposition(){for(int i=0;i<map.length;i++)for(int j=0;j<map[0].length;j++)if(map[i][j]==MAN){manx=i;many=j;break;}}public void initpic(){pic =new Bitmap[7];Resources r=this.getContext().getResources();loadPic(WALL,r.getDrawable(R.drawable.wall));loadPic(GOAL,r.getDrawable(R.drawable.goal));loadPic(ROAD,r.getDrawable(R.drawable.road));loadPic(BOX,r.getDrawable(R.drawable.box));loadPic(BOXATGOAL,r.getDrawable(R.drawable.box_at_goal));loadPic(MAN,r.getDrawable(R.drawable.man));}public void loadPic(int key, Drawable tile) {Bitmap bitmap=Bitmap.createBitmap(tilesize, tilesize, Bitmap.Config.ARGB_8888);Canvas canvas=new Canvas(bitmap);tile.setBounds(0, 0, tilesize, tilesize);tile.draw(canvas);pic[key]=bitmap;}@Overridepublic boolean onTouchEvent(MotionEvent event){currentx=event.getX();currenty=event.getY();float x=(float)(xoff+many*tilesize);float y=(float)(yoff+manx*tilesize);if(currenty>y&&(currenty<y+tilesize)){if(currentx>x+tilesize){moveRight(); }if(currentx<x){moveLeft();}}if(currentx>x&&(currentx<x+tilesize)){if(currenty>y+tilesize){moveDown();}if(currenty<y){moveup();}}if(finished()){nextGate();}this.invalidate();return super.onTouchEvent(event);}private void moveup() {if(map[manx-1][many]==BOX||map[manx-1][many]==BOXATGOAL){if(map[manx-2][many]==GOAL||map[manx-2][many]==ROAD){storyMap(map);map[manx-2][many]=map[manx-2][many]==GOAL?BOXATGOAL:BOX;map[manx-1][many]=MAN;map[manx][many]=roadorgoal(manx,many);manx--;}}else{if(map[manx-1][many]==ROAD||map[manx-1][many]==GOAL){storyMap(map);map[manx-1][many]=MAN;map[manx][many]=roadorgoal(manx,many);manx--;}}}private void moveDown() {if(map[manx+1][many]==BOX||map[manx+1][many]==BOXATGOAL){if(map[manx+2][many]==GOAL||map[manx+2][many]==ROAD){storyMap(map);map[manx+2][many]=map[manx+2][many]==GOAL?BOXATGOAL:BOX;map[manx+1][many]=MAN;map[manx][many]=roadorgoal(manx,many);manx++;}}else{if(map[manx+1][many]==ROAD||map[manx+1][many]==GOAL){storyMap(map);map[manx+1][many]=MAN;map[manx][many]=roadorgoal(manx,many);manx++;}}}private void moveLeft() {if (map[manx][many - 1] == BOX || map[manx][many - 1] == BOXATGOAL) {if (map[manx][many - 2] == GOAL || map[manx][many - 2] == ROAD) {storyMap(map);map[manx][many - 2] = map[manx][many - 2] == GOAL ? BOXATGOAL: BOX;map[manx][many - 1] = MAN;map[manx][many] = roadorgoal(manx, many);many--;}}else {if (map[manx][many - 1] == ROAD || map[manx][many - 1] == GOAL) {storyMap(map);map[manx][many - 1] = MAN;map[manx][many] = roadorgoal(manx, many);many--;}}}private void moveRight() {if(map[manx][many+1]==BOX||map[manx][many+1]==BOXATGOAL){if(map[manx][many+2]==GOAL||map[manx][many+2]==ROAD){storyMap(map);map[manx][many+2]=map[manx][many+2]==GOAL?BOXATGOAL:BOX;map[manx][many+1]=MAN;map[manx][many]=roadorgoal(manx,many);many++;}}else{if(map[manx][many+1]==ROAD||map[manx][many+1]==GOAL){storyMap(map);map[manx][many+1]=MAN;map[manx][many]=roadorgoal(manx,many);many++;}}}private boolean finished() {boolean finish=true;for(int i=0;i<maprow;i++)for(int j=0;j<mapcolumn;j++){if(map[i][j]==GOAL||map[i][j]==BOX)finish= false;}return finish;}public void nextGate() {if(gate<MapList.getcount()-1){gate++;}elseToast.makeText(this.getContext(), "目前是最后一关", 1).show();reinitmap();}public int roadorgoal(int x, int y) {int result=ROAD;if(tem[x][y]==GOAL){result=GOAL;}return result;}private void reinitmap(){initMap();initpic();}@Overrideprotected void onDraw(Canvas canvas) {// TODO Auto-generated method stubsuper.onDraw(canvas);for (int i = 0; i < maprow; i++)for (int j = 0; j < mapcolumn; j++) {if (map[i][j] != 0)canvas.drawBitmap(pic[map[i][j]], xoff + j * tilesize,yoff + i * tilesize, paint);}}class CurrentMap{int[][]currMap;public CurrentMap(int[][] maps){int row=maps.length;int column=maps[0].length;int [][]temp=new int [row][column];for(int i=0;i<row;i++)for(int j=0;j<column;j++){temp[i][j]=maps[i][j];}this.currMap=temp;}public int[][]getmap(){return currMap;}}public ArrayList<CurrentMap> list=new ArrayList<GameView.CurrentMap>();public void back() {if(list.size()>0){CurrentMap proMap=list.get(list.size()-1);map=proMap.getmap();getmanposition();list.remove(list.size()-1);}else{Toast.makeText(getContext(), "You Can't Back", 1).show();}}public void storyMap(int map[][]){CurrentMap cMap=new CurrentMap(map);list.add(cMap);if(list.size()>10)list.remove(0);}}
package com.example.pushbox;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.LinearLayout;
import android.widget.Toast;public class Game extends Activity
{public LinearLayout lll = null;public static int gate=0;GameView gameView;//定义布尔值,表示游戏是继续 还是新游戏public boolean continue_game;private String s;//s用来接收Intent传递的数据@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);//默认是新游戏continue_game=false;//Intent传递过来的值s=getIntent().getStringExtra("continue");/** 假如接收的是yes,说明用户单击的是Continue按钮* 那么,continue_game为真时,使用loadMap()来加载内存数据*/if(s.equals("yes"))continue_game=true;if(continue_game)loadMap();setContentView(R.layout.game);gameView=(GameView) findViewById(R.id.mygameview);lll = (LinearLayout)findViewById(R.id.lll);//接收布局}//当界面运行时,根据用户的爱好//调用Musichandle类的play()方法决定是否播放音乐@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();if(music.isMusicCheck(this))musicHandle.play(this, R.raw.bg);}//游戏暂停,调用Musichandle类的stop()方法停止音乐@Overrideprotected void onPause() {// TODO Auto-generated method stubsuper.onPause();musicHandle.stop(this);/** 游戏暂停时,游戏数据需要存储,游戏的地图信息,行列数都要存储* savegame()的返回值时一个字符串,它的功能就是把二维数组转化为字符串* maprow.mapcolumn保存的时游戏的行列数*///新添的代码getPreferences(MODE_PRIVATE).edit().putLong("gate",gameView.gate).commit();getPreferences(MODE_PRIVATE).edit().putString("maps",saveGame()).commit();getPreferences(MODE_PRIVATE).edit().putLong("maprow",gameView.maprow).commit();getPreferences(MODE_PRIVATE).edit().putLong("mapcolumn",gameView.mapcolumn).commit();}/** saveGame()的返回值时一个字符串,它的功能就是把一个二维数组转化成字符串* 先把二维数组转化为一维数组* 然后把 一维数组使用StringBuilder类的append()方法变为一个StringBuilder* 最后使用Object类中的toString()方法把StringBuilder转化为String对象*/public String saveGame() {int[] saved = new int[gameView.maprow * gameView.mapcolumn];for (int i = 0; i < gameView.maprow; i++)for (int j = 0; j < gameView.mapcolumn; j++){saved[i * gameView.mapcolumn + j] = gameView.map[i][j];}StringBuilder buf = new StringBuilder();for (int element : saved){buf.append(element);}String s=buf.toString();return s;}/** 如果取值不成功,则还是第一关* first就是第一关转化的字符串*/String first="0011100000121000001311111114342112346111111141000001210000011100";public int[][]stored;/** loadMap()的作用时在存储空间里取出字符串的游戏数值,并还原为二维数组*/public void loadMap() {gate = (int)getPreferences(MODE_PRIVATE).getLong("gate",0);String mapstring =getPreferences(MODE_PRIVATE).getString("maps", first);int ii=(int) getPreferences(MODE_PRIVATE).getLong("maprow", 8);int jj=(int) getPreferences(MODE_PRIVATE).getLong("mapcolumn", 8);int []maps=new int [mapstring.length()];for(int i=0;i<maps.length;i++){maps[i]=mapstring.charAt(i)-'0';}stored=new int [ii][jj];int a=0;for(int m=0;m<ii;m++)for(int n=0;n<jj;n++){stored[m][n]=maps[a];a++;}}//本类中添加Menu菜单,使用音乐的控制@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// TODO Auto-generated method stubMenuInflater inflater=new MenuInflater(this);inflater.inflate(R.menu.activity_game_main, menu);return super.onCreateOptionsMenu(menu);}@Override                     public boolean onOptionsItemSelected(MenuItem item) {// TODO Auto-generated method stubswitch (item.getItemId()) {case R.id.music:Intent in=new Intent(Game.this,music.class);startActivity(in);break;case R.id.help:            Log.i("info", "help");Intent inn=new Intent(Game.this,help.class);startActivity(inn);break;case R.id.back:gameView.back();gameView.invalidate();break;case R.id.bgset:findBgset();break;case R.id.explain:findAbout();break;}return super.onOptionsItemSelected(item);}  public void findBgset(){AlertDialog.Builder dll = new AlertDialog.Builder(this);final String[] Bgset = {"跑车1","跑车2","跑车3","跑车4"};dll.setTitle("Which favorite's is select");dll.setIcon(R.id.bgset);dll.setItems(Bgset, new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog,int which){String s="你的选择是:";if(Bgset[which]=="跑车1"){s += "跑车1";lll.setBackgroundResource(R.drawable.pc1);}else if(Bgset[which]=="跑车2"){s += "跑车2";lll.setBackgroundResource(R.drawable.pc2);}else if(Bgset[which]=="跑车3"){s += "跑车3";lll.setBackgroundResource(R.drawable.pc3);}else{s += "跑车4";lll.setBackgroundResource(R.drawable.pc4);}Toast.makeText(Game.this,s,1000).show();}});dll.create();dll.show();}public void findAbout(){String s="最经典的推箱子游戏,类似的游戏你一定早就玩过。要控制搬运工上下左右移动,来将箱子推到指定地点记得几年前,《推箱子》在PC机上刮起了一股不小的益智类游戏的旋风,现在许多资深玩家也都对《推箱子》赞不绝口,可见有深度的益智类游戏是非常受大家欢迎的。 \n推箱子游戏1981年由日本人今林宏行首创,是在1982年12月由Thinking Rabbit 公司首次发行,名“仓库番”。箱子只可以推, 不可以拉, 而且一次只能推动一个,胜利条件就是把所有的箱子都推到目的地。\n推箱子游戏是一种老少皆宜的益智游戏,既可以开发青少年学生的智力,又可以防止老年痴呆症,全家一起攻关还可以促进家庭和睦,何乐而不为?";Toast.makeText(Game.this,s,1000).show();}
}
package com.example.pushbox;import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;public class about extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.about);}
}
package com.example.pushbox;import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;public class electricity extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {if(intent.getAction().equals(intent.ACTION_BATTERY_CHANGED)){int level=intent.getIntExtra("level", 0);int total=intent.getIntExtra("scale", 100);Toast.makeText(context, "当前电量是:"+(level*100)/total+"%",1).show();}}}
package com.example.pushbox;import android.app.Activity;
import android.os.Bundle;
import android.widget.MediaController;
import android.widget.Toast;
import android.widget.VideoView;public class help extends Activity {VideoView vv;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.help);vv=(VideoView) findViewById(R.id.videoview1);vv.setVideoPath("android.resource://"+getPackageName()+"/"+R.raw.gate1);vv.setMediaController(new MediaController(this));vv.start();vv.requestFocus();}
}
package com.example.pushbox;public class MapList {static int map[][][]={{{0,0,1,1,1,0,0,0},{0,0,1,2,1,0,0,0},{0,0,1,3,1,1,1,1},{1,1,1,4,3,4,2,1},{1,2,3,4,6,1,1,1},{1,1,1,1,4,1,0,0},{0,0,0,1,2,1,0,0},{0,0,0,1,1,1,0,0}},{{1,1,1,1,1,0,0,0,0},{1,3,3,6,1,0,0,0,0},{1,3,4,4,1,0,1,1,1},{1,3,4,3,1,0,1,2,1},{1,1,1,3,1,1,1,2,1},{0,1,1,3,3,3,3,2,1},{0,1,3,3,3,1,3,3,1},{0,1,3,3,3,1,1,1,1},{0,1,1,1,1,1,0,0,0}},{{0,1,1,1,1,1,1,1,0,0},{0,1,3,3,3,3,3,1,1,1},{1,1,4,1,1,1,3,3,3,1},{1,6,3,3,4,3,3,4,3,1},{1,3,2,2,1,3,4,3,1,1},{1,1,2,2,1,3,3,3,1,0},{0,1,1,1,1,1,1,1,1,0}},{{0,1,1,1,1,0},{1,1,3,3,1,0},{1,3,6,4,1,0},{1,1,4,3,1,1},{1,1,3,4,3,1},{1,2,4,3,3,1},{1,2,2,3,2,1},{1,1,1,1,1,1}}};static int count=map.length;
public static int [][] getmap(int grade){int temp[][];if(grade>=0&&grade<count){temp=map[grade];}else {temp=map[0];}int row=temp.length;int column=temp[0].length;int [][]result=new int [row][column];for(int i=0;i<row;i++)for(int j=0;j<column;j++)result[i][j]=temp[i][j];return result;
}public static int getcount(){return count;}}
package com.example.pushbox;import android.app.Activity;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.IBinder;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.widget.Toast;public class music extends PreferenceActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);addPreferencesFromResource(R.xml.music_setting);}public static boolean isMusicCheck(Context context) {return PreferenceManager.getDefaultSharedPreferences(context).getBoolean("music", true);}}
package com.example.pushbox;import android.content.Context;
import android.media.MediaPlayer;public class musicHandle {private static MediaPlayer mp=null;public static void play(Context context,int resource){stop(context);if(music.isMusicCheck(context)){mp=MediaPlayer.create(context, resource);mp.setLooping(true);mp.start();}}public static void stop(Context context) {if(mp!=null){mp.stop();mp.release();mp=null;}}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.pushbox"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="9"android:targetSdkVersion="9" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name="com.example.pushbox.GameMain"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter>     </activity><activity android:name="com.example.pushbox.help" ></activity><activity android:name="com.example.pushbox.Game" ></activity><activityandroid:name="music"android:theme="@android:style/Theme.Dialog" ></activity><activityandroid:name="about"android:theme="@android:style/Theme.Dialog" ></activity></application></manifest>

基于Android的推箱子小游戏 源码相关推荐

  1. HTML5推箱子小游戏 源码 共100关哦!

    推箱子 源码链接地址:https://github.com/shunyue1320/sokoban.git 推箱子小游戏展示效果图: 源码链接地址:https://github.com/shunyue ...

  2. 推箱子matlab源代码,C++实现推箱子小游戏源码

    本文实例为大家分享了C++实现推箱子小游戏的具体代码,供大家参考,具体内容如下 功能尚为完善. // ConsoleApplication2.cpp : 定义控制台应用程序的入口点. // #incl ...

  3. android开发--推箱子小游戏(二)

    一.前言 迎来第二章的更新啦:使用ListView实现关卡的选择. 本章的内容有点小复杂,毕竟涉及使用了安卓开发中最难用也是最常用的控件之一:ListView 本章可以说是复杂但是单一吧.主要是想大家 ...

  4. Android 实现扑克牌动画,Android扑克牌猜点小游戏源码

    Android扑克牌猜点小游戏源码分享. 该游戏是简单的猜点游戏, 1点为正确的点数 点重新开始后进行洗牌 每次牌的顺序不同 Java代码: package com.mrzhu.test0109_pr ...

  5. 基于51单片机推箱子小游戏Proteus仿真

    资料编号:118   下面是相关功能视频演示: 118-基于51单片机推箱子小游戏Proteus仿真(源码+仿真+全套资料) 功能讲解: 采用51单片机作为控制CPU,使用独立按键来控制前后左右,使用 ...

  6. 推箱子经典游戏源码 附成品 易语言源码

    介绍: 儿时大家应该都有玩过这个游戏吧? 刚兴趣的可以学习下 网盘下载地址: http://kekewangLuo.net/5BZQNDP9yWH 图片:

  7. [源码和文档分享]基于Java Swing JFream 组件的趣味推箱子小游戏

    一 需求分析 设计一个经典的推箱子小游戏,在窗体里有墙,箱子,胜利的标志,和工人,用户可以通过键盘上的"上"."下"."左"."右 ...

  8. 手把手教你使用Python实现推箱子小游戏(附完整源码)

    文章目录 项目介绍 项目规则 项目接口文档 项目实现过程 前置方法编写 move核心方法编写 项目收尾 项目完善 项目整体源码 项目缺陷分析 项目收获与反思 项目介绍 我们这个项目是一个基于Pytho ...

  9. Android Studio实现推箱子小游戏

    项目目录 一.项目概述 二.开发环境 三.详细设计 四.运行演示 五.项目总结 六.源码获取 一.项目概述 推箱子是一款非常受欢迎的益智游戏,游戏的玩法简单,但是需要玩家具备一定的逻辑思维能力和空间感 ...

最新文章

  1. mongodb中简单的聚合查询
  2. Hibernate的工作原理
  3. Android简易音乐播放器实现代码
  4. Numpy中的堆叠(stack)操作
  5. 利用python中的xlrd和xlwt操作excel
  6. jquery validate使用总结
  7. GlusterFS架构与维护
  8. ajax上传文件 获取失败,Ajax上传文件/照片时报错TypeError :Illegal invocation的解决方法...
  9. 河南农大姚文与中科院北京基因组所章张课题组合作发布真核生物长链反向重复序列数据库...
  10. 数据结构期末复习之二叉排序树
  11. qlistview 自定义控件_qlistview使用自定义模型的复选框
  12. 自动批量删除全部微博(自动翻页加载)
  13. 分析Kvaser驱动安装到Linux系统——Kvaser安装到嵌入式Ubuntu系统的开发板IMX6Q不成功记录
  14. 云服务器的安全防护措施一般有哪些?
  15. python ccf题解 201903-2 二十四点
  16. a股用计算机模拟走势,告诉你A股今后几天惊现千股涨停
  17. 跳槽吗?4月7日18点6大细分领域4家优质名企招聘情报来了
  18. php 字符查询_php中几个常用的字符串查找函数
  19. yelp实现mysql写Kafka_实时将Cassandra数据引流到Kafka(下)
  20. .NET 图片格式转换

热门文章

  1. 武汉智慧工地管理系统能帮助建筑施工提升质量吗?
  2. 51内核单片机实现Bootloader跳转到用户程序,要求两个程序都要支持中断
  3. 为Java应用开启JMX服务
  4. matlab 噪声(随机数)生成函数
  5. mysql报文格式_GitHub - YMBo/sflow_traffic: python解析报文(支持格式sflow、gre等)并存储到mysql...
  6. 【虹科】处理激光雷达数据实现目标检测
  7. Html顶部导航栏实现
  8. **如何在catia工程图中自定义新的制图标准**
  9. 第161天学习打卡(谷粒商城 3 安装powerDesigner软件 下载nodejs)
  10. 【Linux】CentOS安装ifconfig命令