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


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

    其实就一个摄像机,背景,开始按钮,还有一个44的sprite背景。

    我们把44的数组和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
    
    					})
    					}
    			}
    			//....
    		}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46

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

    // 判断游戏结束
    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;
    },
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

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

    //移动
    	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) //向下 
    		{
       
    		//。。。。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71

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

  • 相关阅读:
    在毕设中,使用vue3+pinia的一些收获
    超级棒,使用 LIME 和 SHAP 可轻松解释机器学习模型的预测
    【杂烩】TeX Live+TeXStudio
    JavaScript 的面向对象基础,设计模式中的原型模式(设计模式与开发实践 P2)
    2023年中国农业机器人行业市场规模及发展趋势分析[图]
    Java安全之CC2
    3. 投票 案例项目(合集)
    爱普生发布一款16位MCU产品用于大电流LED驱动
    异硫氰酸荧光素标记磁性四氧化三铁纳米粒FITC-Hyd-PEG-Fe3O4|近红外染料CY7.5标记纳米二氧化硅CY7.5-SiO2 NPs
    Java.lang.Character类中isSpaceChar()方法具有什么功能呢?
  • 原文地址:https://blog.csdn.net/qq_43966957/article/details/128061776