zoukankan      html  css  js  c++  java
  • 是男人就下100层【第五层】——2048游戏从源码到发布市场

    上一篇《是男人就下100层【第五层】——换肤版2048游戏》中阳光小强对2048游戏用自己的方式进行了实现,并分享了核心源码,这一篇阳光小强打算将该项目的所有源代码公开并结合这个实例在这篇文章中介绍一下如何添加广告和实现分享功能。

    最终运行效果如下(更多运行效果请看《是男人就下100层【第五层】——换肤版2048游戏》):


    一、如何实现换肤

    换肤的思路其实很简单,在ActionBar中添加菜单,当用户选择某一个皮肤后就将当前的皮肤状态修改并保存到SharedPreference中,以便后面启动后直接读取皮肤,创建该皮肤的Bitmap对象并在onDraw中绘制。
    	private void changeSkin(int skin) {
    		Editor edit = sharedPreference.edit();
    		edit.putInt("skin", skin);
    		edit.commit();
    		my2048View.changeSkin(skin);
    	}
    	public void changeSkin(int skin){
    		this.skin = skin;
    		switch (skin) {
    		case 0:
    			for(int i=0; i<bitmaps.length; i++){
    				bitmaps[i] = null;
    			}
    			for(int i=0; i<bitmaps_skin3.length; i++){
    				bitmaps_skin3[i] = null;
    			}
    			break;
    		case 1:
    			for(int i=0; i<bitmaps_skin3.length; i++){
    				bitmaps_skin3[i] = null;
    			}
    			initBitmap();
    			break;
    		case 2:
    			for(int i=0; i<bitmaps.length; i++){
    				bitmaps[i] = null;
    			}
    			initBitmap();
    			break;
    		}
    		invalidate();
    	}

    二、如何添加广告

    在添加广告之前有些朋友可能就会问了,什么广告平台比较好?这个问题的答案其实我也不知道,在这之前阳光小强从来没有在app中添加过广告,这次只是尝试,就先用了有米的广告,最后又换成了聚米的广告(个人觉得聚米的广告收益稍高)。
    其实各种平台的广告集成方式基本类似,下面就看看聚米的广告如何集成吧:

    我第一次选择的官方统一PUSH包,集成后发现360很容易检测出来,后来又换成了自定义PUSH的方式(官方文档很详细:http://www.adjumi.com/AppDevPlat/Page/SDKSm.aspx),我这里就不一步步的解释了。
    最后记得开启广告:

    接下来做的事情就很简单了,隔一段时间看看自己的收益吧大笑

    三、如何添加分享功能

    分享功能实现的方式大概有两种,一种是通过启动系统的分析组件(界面不好修改,不易控制),另一种是用第三方的分析组件(容易自定义,界面美观,推荐)。
    第一种方法实现如下:
    			@Override
    			public void onClick(View arg0) {
    				/*my2048View.saveMaxScore();
    				Intent intent=new Intent(Intent.ACTION_SEND);    
                    intent.setType("image/*");    
                    intent.putExtra(Intent.EXTRA_SUBJECT, "LOL版2048"); 
                   // intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File("android:resource://com.example.my2048/"+R.raw.share_img)));
                    intent.putExtra(Intent.EXTRA_TEXT, "我的最高纪录是"+ sharedPreference.getInt("maxScore", 0) +"分,赶快来玩吧,LOL版2048好玩!有木有~~,进去看看:http://blog.csdn.net/dawanganban/article/details/37863693");            
                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);    
                    startActivity(Intent.createChooser(intent, getTitle()));    */
    				// 是否只有已登录用户才能打开分享选择页
    				my2048View.saveMaxScore();
    		        mController.openShare(MainActivity.this, false);
    			}
    第二种方式的实现有多种平台可选(这里选择友盟)
    首先注册为友盟的开发者,并获取到友盟的appkey
    友盟分享的帮助文档(http://dev.umeng.com/social/android/share/quick-integration),在实现分享之前需要做一些准备工作,去各个分享平台申请appkey

    有个分享的详细请参考友盟的API(这里吐槽一下,API文档写的太烂了~~)
    友盟的集成方式有三种,我选择的是官方推荐的第二种方式,所以需要引入一个外部的工程(用于分享的工程),并且将这个工程放到了与该工程同级的目录。
    友盟社会化分享组件工程(项目中用的Git下载地址:git@code.csdn.net:lxq_xsyu/social_sdk_library_project.git)
    这里混淆的时候需要注意一点路径问题:
    -libraryjars ../social_sdk_library_project/libs/SocialSDK_QQZone_2.jar

    四、完整源代码下载

    上面只是抛砖引玉,有关详细和更好的方法请参考该项目,我将项目的所有源代码下载地址贴出(注:请使用Git工具下载,并下载上面的分享组件工程使用如图方式添加)

    Git下载地址:git@code.csdn.net:lxq_xsyu/my2048.git
    最后如果你觉得对你有帮助,别忘了给阳光小强投上一票,投票地址http://vote.blog.csdn.net/article/details?articleid=37863693

    如果有问题请在下面留言~~如果阳光小强看到会及时回复的微笑

  • 相关阅读:
    powershell,系统学习的第一种脚本语言
    mysql的source命令
    timer--计时器
    document.write 方法
    数组去重
    Abdicate
    轮播图
    使用 margin 让div块内容居中
    模运算 NOJ 1037
    模运算 NOJ 1037
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6468853.html
Copyright © 2011-2022 走看看