是男人就下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

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

男人就下100游戏源码,经典的flash游戏《是男人就下100》登录win8平台了,支持surface 以及 surface pro, 操作方式支持键盘左右键和触摸操作,该游戏现在android版,ios版已经上线了,但是wp版现在才开发的,喜欢的朋友可以了解一下吧。 项目介绍 这毕竟是个小游戏,本身其实没有什么技术难点,主要在于项目的设计,分为如下几个小模块 1、玩家 (Player) 玩家类我用了单例模式,继承自CCSprite,因为贯穿游戏一直会有玩家存在,在这个版本里也不会有第二个,所以单例成了我很好的选择。 封装了 运动、血量 等。整体的游戏运动采取了背景运动而人不动的方式,感觉在这里这种要更容易掌控一些,分很明显。 2、平台 这里我参照了 Floyd 的Js版本实现,以 BlockBase 作为所有平台游戏的基类,实现了向上运动,检测玩家碰撞,移除平台等基础功能。 然后根据不同的平台类型,继承该基类实现不同效果,比如跳起,伤害,左右平移等。 分别有:NormalBlock (最普通的平台) 、FlipBlock(让人弹跳的平台)、MissBlock(会破损的平台)、ThornBlock(带刺的平台)、LeftRunBlock、RightRunBlock (左右运动的平台) 还有个 BlockFactory 工厂类, 负责在恰当的时候创建合适的平台,创建的规则是随机类型,位置是从预先定义的几个里面随机取。 对于所有平台的管理, 本来最好应该是做个缓存池的,但是我发现这个性能降低实在是可以忽略,所以。。。 3、输入 输入这里,定义了一个基类,InputBase,因为最终肯定有几种输入的方式:PC(键盘、鼠标)、手势、重力感应等,所以这个从一开始就要考虑到。具体的处理方式是 给定一个固定的运动速度, 然后有输入事件的时候就让玩家按照这个速度来运行, 但是现在实际的效果感觉还不太理想。 4、场景 场景就是那么基础的几个了。。。游戏主界面采用了MVC的模式来设计,CCScene 作为 Controller ,其它的Layer 作为View。其它页面都比较简单,单Layer 实现。逻辑也都放在Layer里了。 另外,专门定义了一个 HideLayer ,目的是实现弹出对话框的效果,考虑到原场景中可能会有CCMenu,我将该 Layer 的 优先级设为了 与 CCMenu 相同,因为后添加的原因,所以总能屏蔽 Menu 的事件, 而且在 Layer 上再添加Menu 也不会有问题。 还有个比较有意思的是: 所有的场景我都继承了 IBackableScene 接口,这是我自己定义的一个抽象类,因为我发现对于 “后退” 按钮的处理在游戏中是非常常见的,所以这个接口里定义了 bool GoBack() = 0 函数, 所有需要响应后退事件的场景都要实现该方法,然后在该方法里实现具体的返回 代码。
评论 34
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值