cocos creator编写2048小游戏,发微信小游戏

cocos creator编写2048小游戏,发微信小游戏

cocos creator编写2048小游戏,发微信小游戏

不说废话,先上效果图
在这里插入图片描述
有兴趣的也可以试玩一下微信小程序
在这里插入图片描述

这一篇的基础理论知识,算法相关的都在上一篇文章有讲到,建议去学习一下。

c++编写简易版2048小游戏

先看看我们的游戏对象有哪些:
在这里插入图片描述
其实就一个摄像机,背景,开始按钮,还有一个44的sprite背景。
在这里插入图片描述
我们把4
4的数组和4*4的sprite对应起来。
当数组为0的时候,sprite就为空白。当数组不为0,sprite就显示对应的数字sprite。
只需要动态控制好sprite的变化就行。

//画图
	drawmap:function()
	{
   
		var i =0
		var j =0
		
		var txt ="\n"
		for ( i = 1; i <= 4; i++)
		{
   
			for ( j = 1; j <= 4; j++)
			{
   

				if (this.a[i][j]!=0)			// 如果该位置没有数字,则不绘制
				{
   
					txt = txt+(this.a[i][j]+"*")
					/**/
					if (i==1 && j==1)
					{
   
						cc.loader.loadRes(this.a[i][j]+".png", cc.SpriteFrame, function (err, spriteFrame) {
   
						var backNode = cc.find("Canvas");

						backNode.getComponent("HelloWorld").buttons[1][1].getComponent(cc.Sprite).spriteFrame  =spriteFrame

					})
					}
					else if(i==1 && j==2)
					{
   
						cc.loader.loadRes(this.a[i][j]+".png", cc.SpriteFrame, function (err, spriteFrame) {
   
						var backNode = cc.find("Canvas");
					
						backNode.getComponent("HelloWorld").buttons[1][2].getComponent(cc.Sprite).spriteFrame  =spriteFrame

					})
					}
			}
			//....
		}
}

//判断胜利和失败的条件基本相同

// 判断游戏结束
gameover:function()
{
   
	var i =0
	var j =0
	// 对于任意一个位置,该位置为空 或 四周有位置上的数字与该位置上数字相等,说明可继续移动(游戏可继续)
	for (i = 1; i <= 4; i++)
		for ( j = 1; j <= 4; j++)
			if (!this.a[i][j] || this.a[i][j] == this.a[i + 1][j] || this.a[i][j] == this.a[i - 1][j] || this.a[i][j] == this.a[i][j + 1] || this.a[i][j] == this.a[i][j - 1])return false;
	// 否则游戏结束
	return true;
},

// 判断胜利
win:function()
{
   
	var i =0
	var j =0
	// 有任意一个位置达到 2048,则胜利
	for ( i = 1; i <= 4; i++)
		for ( j = 1; j <= 4; j++)
			if (this.a[i][j] == 2048)return true;
	return false;
},

//移动方面的可以参照简易版的

//移动
move:function(c)
{

var i =0
var j =0
var k =0
var x =0
var y =0
// 将 a 备份至 b
for(i=0;i<=4;i++)
{

for(j=0;j<=4;j++)
{

this.b[i][j]=this.a[i][j]
}
}
// 初始化 this.mov 为 false(所有点均未移动)
for(i=0;i<=4;i++)
{

for(j=0;j<=4;j++)
{

this.mov[i][j]=false
}
}
if(c==8) //向上
{
	
for (j = 1; j <= 4; j++)
for (i = 2; i <= 4; i++)
{

if (this.a[i][j]==0)continue
k = i
while (this.a[k - 1][j]==0 && k >= 2)
{

this.a[k - 1][j] = this.a[k][j]
this.a[k][j] = 0
k--	
}
if (this.a[k][j] == this.a[k - 1][j] && this.mov[k - 1][j]==0)
{

this.a[k - 1][j] = 2 * this.a[k][j]
this.playSound(this.a[k][j]*2)
this.a[k][j] = 0
this.mov[k - 1][j] = true
var anim = this.buttons[k - 1][j].getComponent(cc.Animation);
anim.play();
}
}
}
else if(c==2) //向下 
{

//。。。。

可以说做出了简易版的基本算法,移植到cocos creator是十分简单的。

有需要完整代码的可以联系我。可以一起探讨一下。

在这个平台上有收徒的打算,如果小伙伴刚好需要一个能答疑,能带着你学习的师父,请联系我,q:2316773638

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/2860.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • java list转arraylist_进制数之间的转换方法

    java list转arraylist_进制数之间的转换方法一.Array转为List1.实现方法:java中数组转list使用Arrays.asList(T…a)方法。publicclassArray2List{publicstaticvoidmain(String[]args){List<String>listA=Arrays.asList(“dog”,”cat”,”cow”)…

  • 【Redis】Redis配置文件详解

    【Redis】Redis配置文件详解一、存放位置linux下一定要养成备份配置文件的习惯。我是将配置文件拷贝至/myredis目录下进行操作的;二、Units单位这个在配置文件开始位置1.配置大小单位,开头定义了一些基本的度量单位,只支持bytes,不支持bit;2.对大小写不敏感。三、INCLUDES1.和Struts2配置文件类似,可以通过includes包含,redis.c…

  • 查询oracle视图创建语句及如何向视图中插入数据[通俗易懂]

    今天由于要测试接口,需要在数据库中插入一些测试数据。但当我在向数据库插入数据的时候,发现接口查询的是视图并不是表,所以将遇到的问题在这里记录一下。1.向视图插入数据的时候分两种情况1.1对于简单视图(视图建立在一张表上),跟表一样直接插入数据就好;1.2对于复杂视图(视图建立时包含多表关联、分组、聚合函数),这个时候不能直接插入数据,应该创建一个INSTEAD类型的触发器来操作,将要插入…

  • maven-porm.xml详解

    maven-porm.xml详解什么是POM?POM是项目对象模型(ProjectObjectModel)的简称,它是Maven项目中的文件,使用XML表示,名称叫做pom.xml。作用类似ant的build.xml文件,功能更强大。该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权…

  • 如何查看被占用的端口_java端口被占用怎么解决

    如何查看被占用的端口_java端口被占用怎么解决一、通过命令查找端口被谁占用1、开始—->运行—->cmd,或者是window+R组合键,调出命令窗口2、输入命令:netstat-ano,列出所有端口的情况。在列表中我们观察被占用的端口,比如是49157,首先找到它。3、查看被占用端口对应的PID,输入命令:netstat-aon|findstr”49157″,回车,记下最后一位数字,即PID,这里是27204、继续输…

  • java中jbpm工作流_java activity工作流

    java中jbpm工作流_java activity工作流第一步:导入jbpm需要的jar包第二步:导入需要的配置文件:jbpm.cfg.xml,jbpm.hibernate.cfg.xml,logging.propertiesjbpm.hibernate.cfg.xml:

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号