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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 深度学习超分辨率重建(总结)[通俗易懂]

    本文为概述,详情翻看前面文章。1.SRCNN:—2,3改进开山之作,三个卷积层,输入图像是低分辨率图像经过双三次(bicubic)插值和高分辨率一个尺寸后输入CNN。图像块的提取和特征表示,特征非线性映射和最终的重建。使用均方误差(MSE)作为损失函数。2.FSRCNN特征提取:低分辨率图像,选取的核9×9设置为5×5。收缩:1×1的卷积核进行降维。非线性映射:用两个串联的3×3的卷积核可以…

    2022年4月1日
    41
  • QTableView样式

    控件的成员函数styleSheet()可以获取控件的风格样式ui-&gt;tableView_contact_1-&gt;setWindowTitle("ContactList1");ui-&gt;tableView_contact_1-&gt;setShowGrid(false);//隐藏网格//选择整行ui-&gt;tableView_contact_1-&gt;setSelect…

    2022年4月12日
    112
  • 激光雷达和超声波雷达区别_雷达是超声波还是电磁波

    激光雷达和超声波雷达区别_雷达是超声波还是电磁波转自:http://www.sohu.com/a/201826967_524185不知何时,自动驾驶技术从电影中跳出来,直接被拉到人们视野中。不过,去年特斯拉却因为几起自动驾驶事故,官网不得不把自动驾驶字眼改为辅助驾驶。本期《汽车总动员》讨论的不是自动驾驶,而是被称为自动驾驶汽车“眼睛”的雷达。目前主流的“眼睛”有四类——毫米波雷达、激光雷达、超声波雷达、摄像头。他们各自都有自己的特点,比如摄像头…

    2025年10月31日
    2
  • android广播注册方式_安卓广播接收器

    android广播注册方式_安卓广播接收器前面分析了Android系统的广播机制,从本质来说,它是一种消息订阅/发布机制。因此,使用这种消息驱动模型的第一步便是订阅消息;而对Android应用程序来说,订阅消息其实就是注册广播接收器。       接下来,我们继续分析Android应用程序是如何注册广播接收器的,以及把广播接收器注册到哪里去的。       在Android的广播机制中,ActivityManagerServi

    2025年10月26日
    2
  • 关于tempdb的一些注意事项

    关于tempdb的一些注意事项

    2021年11月25日
    44

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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