zoukankan      html  css  js  c++  java
  • 【代码分享】简单html5足球射门游戏分享

    之前空余时间想玩玩html5, 于是使用2.2.2的cocos2d-html5 制作了个简单的足球射门游戏 ,美术是自己在纸上画完用手机拍下再ps扣的图,哈哈,赞一下自己的创意。

    在我的主页可以玩这个游戏: http://www.jd85.net/ballfoot/

    很简单的几个类,就不在这里讲解了。附件里有完整项目源码和cocostudio项目可在本人发布在cocoachina论坛里的帖子内下载: http://www.cocoachina.com/bbs/read.php?tid=213943

    补上代码:

    cocos2d.js中部分需要修改代码:

     1 var c = {
     2         COCOS2D_DEBUG:2, //0 to turn debug off, 1 for basic debug, and 2 for full debug
     3         box2d:false,
     4         chipmunk:false,
     5         showFPS:false,
     6         frameRate:60,
     7         loadExtension:false,
     8         renderMode:0,       //Choose of RenderMode: 0(default), 1(Canvas only), 2(WebGL only)
     9         tag:'gameCanvas', //the dom element to run cocos2d on
    10 //        engineDir:'../cocos2d/',
    11         SingleEngineFile:'Cocos2d-html5-v2.2.2.min.js',
    12         appFiles:[
    13             'src/resource.js',
    14 //            'src/myApp.js'//add your own files in order here
    15             'src/GameScene.js',
    16             'src/StartLayer.js',
    17             'src/GameLayer.js',
    18             'src/GameOverLayer.js',
    19  
    20             'libs/CCNotificationCenter.js',
    21             'libs/MD5.js'
    22         ]
    23     };

    StartLayer.js:

     1 /**
     2  * Created by JiaDing on 14-4-19.
     3  */
     4 var StartLayer = cc.Layer.extend({
     5  
     6     init:function()
     7     {
     8         if(this._super())
     9         {
    10  
    11  
    12  
    13             return true;
    14         }
    15         return false;
    16     },
    17  
    18     onEnter:function()
    19     {
    20         this._super();
    21         var uiLayer = ccs.UILayer.create();
    22         this.addChild(uiLayer);
    23  
    24         var widget = ccs.GUIReader.getInstance().widgetFromJsonFile(s_exportJson_StartPanel);
    25         widget.setPositionX(widget.getPositionX() + 100);
    26         uiLayer.addWidget(widget);
    27  
    28         var titleAction = ccs.ActionManager.getInstance().getActionByName("StartPanel.ExportJson","Animation0");
    29         if(titleAction)
    30         {
    31             titleAction.play();
    32         }
    33  
    34         var startBtn = uiLayer.getWidgetByName("Button_25");
    35         startBtn.addTouchEventListener(function(object,touchType){
    36  
    37             if(touchType == cc.TOUCH_ENDED)
    38             {
    39                 cc.AudioEngine.getInstance().playEffect(s_sound_btn,false);
    40                 cc.NotificationCenter.getInstance().postNotification("changeToGameLayer");
    41             }
    42  
    43         }.bind(this) ,this);
    44     },
    45  
    46  
    47     onExit:function()
    48     {
    49  
    50  
    51         this._super();
    52     }
    53  
    54  
    55  
    56  
    57  
    58 });
    59  
    60 StartLayer.create = function()
    61 {
    62     var obj = new StartLayer();
    63     if(obj && obj.init())
    64     {
    65         return obj;
    66     }
    67     return null;
    68 }

    resource.js:

     1 var s_pic_bg = "res/bg.png";
     2 var s_pic_dashBoard = "res/dashBoard.png";
     3 var s_pic_arrow = "res/arrow.png";
     4 //var s_pic_transitbg = "res/transitbg.png";
     5 var s_pic_transitbg = "res/transitbg.png";
     6 var s_pic_door = "res/door.png";
     7  
     8 var s_sound_win = "res/win.mp3";
     9 var s_sound_lose = "res/lose.mp3";
    10 var s_sound_kick = "res/kick.mp3";
    11 var s_sound_btn = "res/btn.mp3";
    12 var s_sound_bg = "res/bg.mp3";
    13  
    14 var s_exportJson_FootMan = "res/FootMan/FootMan.ExportJson";
    15 var s_plist_FootMan = "res/FootMan/FootMan0.plist";
    16 var s_pic_FootMan = "res/FootMan/FootMan0.png";
    17  
    18 var s_exportJson_LosePanel = "res/Panel/LosePanel.ExportJson";
    19 var s_exportJson_StartPanel = "res/Panel/StartPanel.ExportJson";
    20 var s_exportJson_WinPanel = "res/Panel/WinPanel.ExportJson";
    21 var s_plist_Panel = "res/Panel/Panel0.plist";
    22 var s_pic_Panel = "res/Panel/Panel0.png";
    23  
    24 var s_exportJson_RoundBall = "res/RoundBall/RoundBall.ExportJson";
    25 var s_plist_RoundBall = "res/RoundBall/RoundBall0.plist";
    26 var s_pic_RoundBall = "res/RoundBall/RoundBall0.png";
    27  
    28 var g_resources = [
    29     //image
    30     {src:s_pic_bg},
    31     {src:s_pic_dashBoard},
    32     {src:s_pic_arrow},
    33     {src:s_pic_transitbg},
    34     {src:s_pic_door},
    35  
    36     {src:s_sound_win},
    37     {src:s_sound_lose},
    38     {src:s_sound_kick},
    39     {src:s_sound_btn},
    40     {src:s_sound_bg},
    41  
    42     {src:s_exportJson_FootMan},
    43     {src:s_plist_FootMan},
    44     {src:s_pic_FootMan},
    45  
    46     {src:s_exportJson_LosePanel},
    47     {src:s_exportJson_StartPanel},
    48     {src:s_exportJson_WinPanel},
    49     {src:s_plist_Panel},
    50     {src:s_pic_Panel},
    51     {src:s_exportJson_RoundBall},
    52     {src:s_plist_RoundBall},
    53     {src:s_pic_RoundBall}
    54  
    55     //plist
    56  
    57     //fnt
    58  
    59     //tmx
    60  
    61     //bgm
    62  
    63     //effect
    64  
    65 ];

    GameScene.js:

     1 /**
     2  * Created by JiaDing on 14-4-19.
     3  */
     4  
     5 var GameScene = cc.Scene.extend({
     6  
     7     TAG_CurrentView:1,
     8  
     9    onEnter:function()
    10    {
    11        this._super();
    12  
    13        var winSize = cc.Director.getInstance().getWinSize();
    14        var w = winSize.width;
    15        var h = winSize.height;
    16        var bg = cc.Sprite.create(s_pic_bg);
    17        bg.setAnchorPoint(0,0);
    18        this.addChild(bg,0);
    19  
    20        var startLayer = StartLayer.create();
    21        this.addChild(startLayer,1,this.TAG_CurrentView);
    22  
    23  
    24        cc.AudioEngine.getInstance().preloadSound(s_sound_bg);
    25        cc.AudioEngine.getInstance().preloadSound(s_sound_btn);
    26        cc.AudioEngine.getInstance().preloadSound(s_sound_kick);
    27        cc.AudioEngine.getInstance().preloadSound(s_sound_lose);
    28        cc.AudioEngine.getInstance().preloadSound(s_sound_win);
    29  
    30        cc.AudioEngine.getInstance().playMusic(s_sound_bg,true);
    31  
    32        cc.NotificationCenter.getInstance().addObserver(this,this.changeToGameLayer,"changeToGameLayer");
    33        cc.NotificationCenter.getInstance().addObserver(this,this.gameOver,"gameOver");
    34  
    35    },
    36     changeToGameLayer:function()
    37     {
    38         this.removeChildByTag(this.TAG_CurrentView,true);
    39  
    40         var gameLayer = GameLayer.create();
    41         this.addChild(gameLayer,1,this.TAG_CurrentView);
    42     },
    43     gameOver:function(isWin)
    44     {
    45         this.removeChildByTag(this.TAG_CurrentView,true);
    46         var overLayer = GameOverLayer.create(isWin);
    47         this.addChild(overLayer,1,this.TAG_CurrentView);
    48     }
    49  
    50 });

    GameOverLayer.js:

      1 /**
      2  * Created by JiaDing on 14-4-20.
      3  */
      4  
      5 var GameOverLayer = cc.Layer.extend({
      6  
      7     isWin:false,
      8  
      9     init:function(isWin)
     10     {
     11         if(this._super())
     12         {
     13             this.isWin = isWin;
     14  
     15             return true;
     16         }
     17         return false;
     18     },
     19  
     20     onEnter:function()
     21     {
     22         this._super();
     23         var uiLayer = ccs.UILayer.create();
     24         this.addChild(uiLayer);
     25  
     26         if(this.isWin)
     27         {
     28             cc.AudioEngine.getInstance().playEffect(s_sound_win,false);
     29  
     30             var widget = ccs.GUIReader.getInstance().widgetFromJsonFile(s_exportJson_WinPanel);
     31             widget.setPositionX(widget.getPositionX() + 100);
     32             uiLayer.addWidget(widget);
     33  
     34             var titleAction = ccs.ActionManager.getInstance().getActionByName("WinPanel.ExportJson","QiuJInLe");
     35             if(titleAction)
     36             {
     37                 titleAction.play();
     38             }
     39  
     40             var startBtn = uiLayer.getWidgetByName("Button_35");
     41             startBtn.addTouchEventListener(function(object,touchType){
     42  
     43                 if(touchType == cc.TOUCH_ENDED)
     44                 {
     45                     cc.AudioEngine.getInstance().playEffect(s_sound_btn,false);
     46                     cc.NotificationCenter.getInstance().postNotification("changeToGameLayer");
     47                 }
     48  
     49             }.bind(this) ,this);
     50         }
     51         else
     52         {
     53  
     54             cc.AudioEngine.getInstance().playEffect(s_sound_lose,false);
     55  
     56             var widget = ccs.GUIReader.getInstance().widgetFromJsonFile(s_exportJson_LosePanel);
     57             widget.setPositionX(widget.getPositionX() + 100);
     58             uiLayer.addWidget(widget);
     59  
     60             var titleAction = ccs.ActionManager.getInstance().getActionByName("LosePanel.ExportJson","Animation0");
     61             if(titleAction)
     62             {
     63                 titleAction.play();
     64             }
     65  
     66             var startBtn = uiLayer.getWidgetByName("Button_35_Copy0");
     67             startBtn.addTouchEventListener(function(object,touchType){
     68  
     69                 if(touchType == cc.TOUCH_ENDED)
     70                 {
     71                     cc.AudioEngine.getInstance().playEffect(s_sound_btn,false);
     72                     cc.NotificationCenter.getInstance().postNotification("changeToGameLayer");
     73                 }
     74  
     75             }.bind(this) ,this);
     76         }
     77  
     78     },
     79  
     80  
     81     onExit:function()
     82     {
     83  
     84  
     85         this._super();
     86     }
     87  
     88  
     89  
     90  
     91  
     92 });
     93  
     94 GameOverLayer.create = function(isWin)
     95 {
     96     var obj = new GameOverLayer(isWin);
     97     if(obj && obj.init(isWin))
     98     {
     99         return obj;
    100     }
    101     return null;
    102 }

    GameLayer.js:

      1 /**
      2  * Created by JiaDing on 14-4-20.
      3  */
      4  
      5 var GameLayer = cc.Layer.extend({
      6  
      7     TAG_MAN:1,
      8     TAG_Ball:2,
      9     TAG_DashBoard:3,
     10     TAG_DOOR:4,
     11  
     12     havePcMouseDown:false,
     13     rotationSpeed:11,
     14  
     15     MIN_ROTATION: - 135,
     16     MAX_ROTATION: -45,
     17  
     18     init:function()
     19     {
     20         if(this._super())
     21         {
     22  
     23             var winSize = cc.Director.getInstance().getWinSize();
     24  
     25             var door = cc.Sprite.create(s_pic_door);
     26             var scale = 0.7;
     27             door.setScale(scale);
     28             door.setAnchorPoint(cc.p(0,1));
     29             door.setPosition(cc.p((winSize.width + 30 - door.getContentSize().width * scale)/2,
     30                 winSize.height-150));
     31             this.addChild(door);
     32             door.setTag(this.TAG_DOOR);
     33  
     34             var dashBoardBg = cc.Sprite.create(s_pic_dashBoard);
     35             dashBoardBg.setAnchorPoint(cc.p(0.5,0));
     36             dashBoardBg.setScale(0.7);
     37             dashBoardBg.setPosition(cc.p(winSize.width - dashBoardBg.getContentSize().width * dashBoardBg.getScale()/2,dashBoardBg.getContentSize().height / 2 + 300));
     38             this.addChild(dashBoardBg);
     39             dashBoardBg.setTag(this.TAG_DashBoard);
     40  
     41             var arrow = cc.Sprite.create(s_pic_arrow);
     42             arrow.setAnchorPoint(cc.p(0,0.5));
     43             arrow.setScale(0.55);
     44             arrow.setPositionX(dashBoardBg.getContentSize().width/2);
     45             arrow.setRotation(-90);
     46             dashBoardBg.addChild(arrow);
     47             arrow.setTag(1);
     48  
     49             ccs.ArmatureDataManager.getInstance().addArmatureFileInfo(s_exportJson_FootMan);
     50             ccs.ArmatureDataManager.getInstance().addArmatureFileInfo(s_exportJson_RoundBall);
     51  
     52             var man = ccs.Armature.create("FootMan");
     53             man.setAnchorPoint(cc.p(0,0));
     54             man.setPosition(cc.p(100,20));
     55             this.addChild(man);
     56             man.setTag(this.TAG_MAN);
     57  
     58             var ball= ccs.Armature.create("RoundBall");
     59             ball.setScale(0.6);
     60             ball.setPosition(cc.p(winSize.width/2,200));
     61             this.addChild(ball);
     62             ball.setTag(this.TAG_Ball);
     63  
     64  
     65             var label = cc.LabelTTF.create("你认为我会告诉你鼠标按着不动瞄准,
    松开射门这句话么?","Microsoft Yahei Font",25);
     66             label.setPosition(cc.p(winSize.width/2,70));
     67             label.setColor(cc.c3b(255,0,0));
     68             this.addChild(label);
     69  
     70             if( 'touches' in sys.capabilities )
     71                 this.setTouchEnabled(true);
     72             else if ('mouse' in sys.capabilities )
     73                 this.setMouseEnabled(true);
     74  
     75  
     76  
     77  
     78  
     79             return true;
     80         }
     81         return false;
     82     },
     83  
     84     touchenable:true,
     85     haveMobileTouch:false,
     86  
     87     onTouchesBegan:function()
     88     {
     89         if(!this.touchenable)
     90         {
     91             this.haveMobileTouch = false;
     92             return false;
     93         }
     94         this.touchenable = false;
     95         this.haveMobileTouch = true;
     96         this.ready();
     97         return true;
     98     },
     99     onMouseDown:function (event)
    100     {
    101         if(!this.touchenable)
    102         {
    103             this.havePcMouseDown = false;
    104             return;
    105         }
    106         this.touchenable = false;
    107         this.havePcMouseDown = true;
    108         this.ready();
    109     },
    110  
    111     onTouchesEnded:function()
    112     {
    113         if(this.haveMobileTouch)
    114         {
    115             this.run();
    116         }
    117     },
    118     onMouseUp:function()
    119     {
    120  
    121         if(this.havePcMouseDown)
    122         {
    123             this.run();
    124         }
    125     },
    126  
    127  
    128     ready:function()
    129     {
    130         this.schedule(this.update,0.016);
    131     },
    132     update:function()
    133     {
    134         var arrow = this.getChildByTag(this.TAG_DashBoard).getChildByTag(1);
    135         var rot = arrow.getRotation();
    136         if(rot <= -135 || rot >= -45)
    137         {
    138             this.rotationSpeed = this.rotationSpeed * -1;
    139         }
    140         arrow.setRotation(rot + this.rotationSpeed);
    141     },
    142     run:function()
    143     {
    144         this.unschedule(this.update);
    145  
    146         var man = this.getChildByTag(this.TAG_MAN);
    147         man.getAnimation().playWithIndex(0);
    148  
    149         var action = cc.Sequence.create(
    150             cc.MoveBy.create(2,cc.p(150,50)),
    151             cc.DelayTime.create(0.3),
    152             cc.CallFunc.create(function(){
    153                 this.kick();
    154             }.bind(this),this)
    155         );
    156         man.runAction(action);
    157     },
    158     kick:function()
    159     {
    160         var man = this.getChildByTag(this.TAG_MAN);
    161         man.getAnimation().playWithIndex(1);
    162         man.getAnimation().setMovementEventCallFunc(function(armature, movementType, movementID){
    163             if (movementType == ccs.MovementEventType.complete)
    164             {
    165                 cc.AudioEngine.getInstance().playEffect(s_sound_kick,false);
    166  
    167                 var ball = this.getChildByTag(this.TAG_Ball);
    168                 ball.getAnimation().playWithIndex(0);
    169  
    170                 var arrow = this.getChildByTag(this.TAG_DashBoard).getChildByTag(1);
    171                 var rotation = arrow.getRotation();
    172                 var door = this.getChildByTag(this.TAG_DOOR);
    173                 var doorWidth = door.getContentSize().width * door.getScale();
    174                 var doorHeight = door.getContentSize().height * door.getScale();
    175  
    176                 var doorLeftX = door.getPositionX();
    177                 var doorRightX = door.getPositionX() + doorWidth;
    178  
    179                 var minX = doorLeftX - 300;
    180                 var maxX = doorRightX + 300;
    181                 var targetX = (rotation + (this.MIN_ROTATION * -1)) / (this.MAX_ROTATION + (this.MIN_ROTATION * -1)) * (maxX - minX) + minX;
    182  
    183                 var action = cc.Sequence.create(
    184                     cc.MoveTo.create(1,cc.p(targetX,door.getPositionY() - doorHeight + 30)),
    185                     cc.CallFunc.create(function(){
    186                         var win = false;
    187                         if(targetX > doorLeftX && targetX < doorRightX)
    188                         {
    189                             win = true;
    190                         }
    191                         this.gameOVer(win);
    192                     }.bind(this),this)
    193                 );
    194                 ball.runAction(action);
    195             }
    196         }.bind(this),this);
    197  
    198     },
    199     gameOVer:function(isWin)
    200     {
    201         cc.NotificationCenter.getInstance().postNotification("gameOver",isWin);
    202     }
    203  
    204 });
    205  
    206 GameLayer.create = function()
    207 {
    208     var obj = new GameLayer();
    209     if(obj && obj.init())
    210     {
    211         return obj;
    212     }
    213     return null;
    214 };
  • 相关阅读:
    python3.x学习笔记2018-02-05更新
    网络安全学习资源整理2018-02-02更新
    隔行变色效果
    自制滚动条
    关于ico图标
    CSS实现标题/段落省略效果的三剑客
    第三章(循环) 编程题 2
    第三章(循环) 编程题
    python基础03--基本数据类型(字符串)
    python基础02--运算符与基本数据类型(数字)
  • 原文地址:https://www.cnblogs.com/JD85/p/3871131.html
Copyright © 2011-2022 走看看