小狐狸大冒险 cocoscreator学习源码

冒险游戏源码 cocoscreator 开发ts

这是一款物理引擎益智休闲小游戏

体验链接:Cocos Creator | fox adventure

收集钥匙开启通关大门

代码 

const {ccclass, property} = cc._decorator;
@ccclass
export class XslSdkCtrl extends rich.BaseCtrl{
    private static _sInstance: XslSdkCtrl = null;
    _reviewVer: string = "1.0.16";
    _adSwitch: number = 0;
    _validAd: number = 0;
    _disFunc: any = null;
    _hasShowNum_exit: number = 0; //退出按钮已经展示次数
    _hasShowNum_bannerMove: number = 0; //banner位移已经展示次数
    _hasShowNum_bannerInit: number = 0; //banner刷新次数
    _hasShowNum_levelPullDrawer: number = 0; //关卡界面拉抽屉次数
    _hasShowNum_randomJump: number = 0; //大图随机跳转次数
    _hasShowNum_nextLevelVideo: number = 0; //下一关视频次数
    _hasShowNum_box: number = 0; //宝箱次数
    _hasShowNum_gamePullDrawer: number = 0; //进入游戏拉取抽屉次数
    _hasShowNum_enterGameVideo: number = 0; //进入游戏拉取视频广告次数
    _hasShowNum_showLevel0: number = 0; //进入第0关次数  
    /**
     * @description: 获取一个全局唯一单例
     * @return: 
     */ 
    static getInstance(): XslSdkCtrl {
        if (this._sInstance == null) {
            this._sInstance = new XslSdkCtrl();
            rich["xslSdkCtrl"] = this._sInstance;
        }
        return this._sInstance;
    }
    initCtrl() {
        rich.BaseCtrl.prototype.initCtrl.call(this);
    }
    /**
     * 请求后台开关
     */
    httpGet() {
        let self = this;
        if (cc.sys.platform == cc.sys.WECHAT_GAME) {
            let launchOption = wx.getLaunchOptionsSync();
            let scene = launchOption.scene;
            let channel = launchOption.query["channel"];
            let request = cc.loader.getXMLHttpRequest();
            let url = "https://wxa.639311.com/api/ban?scene="+scene+"&reviewVer="+this._reviewVer+"&channel="+channel;
            request.open("GET", url, true);
            request.onreadystatechange = function () {
                if (request.readyState == 4 && (request.status >= 200 && request.status < 400)) {
                    let response = JSON.parse(request.responseText);
                    console.log("response ==============", response);
                    self._adSwitch = response.data.adSwitch;
                    self._validAd = response.data.validAd;
                    self._disFunc = response.data.disFunc;
                }
            }
            request.send();
        }
    }
    /**
     * 获取退出胶囊开关
     */
    getExitStatus() {
        if (this._disFunc) {
            let data = this._disFunc[1];
            if (data && data.name == "退出") {
                if (data.status == 1) {
                    // 是否超过次数
                    if (this._hasShowNum_exit >= Number(data.show_num)) {
                        return false;
                    }
                    // 根据概率展示
                    let randomNum = Math.random();
                    if (randomNum <= Number(data.show_per)) {
                        this._hasShowNum_exit++;
                        return true;
                    }
                }
            }
        }
        return false;
    }
    /**
     * 获取banner位移开关
     */
    getBannerMoveStatus() {
        if (this._disFunc) {
            console.log("11111111111", this._disFunc);
            let data = this._disFunc[2];
            console.log("获取banner位移开关 ", data, data.name);
            if (data && data.name == "banner位移") {
                if (data.status == 1) {
                    // 是否超过次数
                    if (this._hasShowNum_bannerMove >= Number(data.show_num)) {
                        console.log("显示次数 ===== ", this._hasShowNum_bannerMove, data.show_num);
                        return false;
                    }
                    // 根据概率展示
                    let randomNum = Math.random();
                    if (randomNum <= Number(data.show_per)) {
                        console.log("根据概率展示 ", randomNum, data.show_per);
                        this._hasShowNum_bannerMove++;
                        return true;
                    }
                }
            }
        }
        return false;
    }
    /**
     * 获取banner刷新开关
     */
    getBannerInitStatus() {
        if (this._disFunc) {
            let data = this._disFunc[3];
            if (data && data.name == "banner刷新") {
                if (data.status == 1) {
                    // 是否超过次数
                    if (this._hasShowNum_bannerInit >= Number(data.show_num)) {
                        return false;
                    }
                    // 根据概率展示
                    let randomNum = Math.random();
                    if (randomNum <= Number(data.show_per)) {
                        this._hasShowNum_bannerInit++;
                        return true;
                    }
                }
            }
        }
        return false;
    }
    /**
     * 进入关卡拉抽屉
     */
    getLevelPullDrawer() {
        if (this._disFunc) {
            let data = this._disFunc[4];
            if (data && data.name == "进入关卡拉抽屉") {
                if (data.status == 1) {
                    // 是否超过次数
                    if (this._hasShowNum_levelPullDrawer >= Number(data.show_num)) {
                        return false;
                    }
                    // 根据概率展示
                    let randomNum = Math.random();
                    if (randomNum <= Number(data.show_per)) {
                        this._hasShowNum_levelPullDrawer++;
                        return true;
                    }
                }
            }
        }
        return false;
    }
    /**
     * 大图随机跳转
     */
    getRandomJump() {
        if (this._disFunc) {
            let data = this._disFunc[5];
            if (data && data.name == "大图随机跳转") {
                // 是否超过次数
                if (this._hasShowNum_randomJump >= Number(data.show_num)) {
                    return false;
                }
                // 根据概率展示
                let randomNum = Math.random();
                if (randomNum <= Number(data.show_per)) {
                    this._hasShowNum_randomJump++;
                    return true;
                }
            }
        }
        return false;
    }
    /**
     * 下一关视频
     */
    getNextLevelVideo() {
        if (this._disFunc) {
            let data = this._disFunc[6];
            if (data && data.name == "下一关视频") {
                // 是否超过次数
                if (this._hasShowNum_nextLevelVideo >= Number(data.show_num)) {
                    return false;
                }
                // 根据概率展示
                let randomNum = Math.random();
                if (randomNum <= Number(data.show_per)) {
                    this._hasShowNum_nextLevelVideo++;
                    return true;
                }
            }
        }
        return false;
    }
    /**
     * 显示宝箱
     */
    getShowBox() {
        if (this._disFunc) {
            let data = this._disFunc[7];
            if (data && data.name == "宝箱") {
                // 是否超过次数
                if (this._hasShowNum_box >= Number(data.show_num)) {
                    return false;
                }
                // 根据概率展示
                let randomNum = Math.random();
                if (randomNum <= Number(data.show_per)) {
                    this._hasShowNum_box++;
                    return true;
                }
            }
        }
        return false;
    }
    /**
     * 进入关卡拉抽屉
     */
    getGamePullDrawer() {
        if (this._disFunc) {
            let data = this._disFunc[8];
            if (data && data.name == "进入游戏抽屉") {
                if (data.status == 1) {
                    // 是否超过次数
                    if (this._hasShowNum_gamePullDrawer >= Number(data.show_num)) {
                        return false;
                    }
                    // 根据概率展示
                    let randomNum = Math.random();
                    if (randomNum <= Number(data.show_per)) {
                        this._hasShowNum_gamePullDrawer++;
                        return true;
                    }
                }
            }
        }
        return false;
    }
    getEnterGameVideo() {
        if (this._disFunc) {
            let data = this._disFunc[9];
            if (data && data.name == "进入游戏视频") {
                if (data.status == 1) {
                    // 是否超过次数
                    if (this._hasShowNum_enterGameVideo >= Number(data.show_num)) {
                        return false;
                    }
                    let randomNum = Math.random();
                    if (randomNum <= Number(data.show_per)) {
                        this._hasShowNum_enterGameVideo++;
                        return true;
                    }
                }
            }
        }
        return false;
    }
    getShowLevel0() {
        if (this._disFunc) {
            let data = this._disFunc[10];
            if (data && data.name == "第0关") {
                if (data.status == 1) {
                    // 是否超过次数
                    if (this._hasShowNum_showLevel0 >= Number(data.show_num)) {
                        return false;
                    }
                    let randomNum = Math.random();
                    if (randomNum <= Number(data.show_per)) {
                        this._hasShowNum_showLevel0++;
                        return true;
                    }
                }
            }
        }
        return false;
    }
}
export enum UIIndex{
    BG = 0,//背景所在层级
    MUTEX,//互斥层 同时只会存在一个节点 比如切换到大厅就会把登录界面移除
    UI,//正常ui层级
    PopUp,//弹窗层级
}
export class UIMgr {
    public static _sInstance:UIMgr=null;
    constructor() {
        console.log("初始化UI管理类");
    }
    /**
     * @description: 获取一个全局唯一的ui管理单例
     * @return: 
     */ 
    public static getInstance():UIMgr{
        if(this._sInstance==null){
            this._sInstance = new UIMgr();
        }
        return this._sInstance;
    }
    /**
     * 添加ui到对应的层级上
     * @param uiName ui名称
     * @param uiIndex ui层级
     * @param uiParam 初始化参数
     * @param uiPos 初始化坐标
     * @param callback 添加成功回调
     */
    public addUI(uiName:string,uiIndex:number,uiParam?:any,uiPos?:cc.Vec2,callback?:Function):void
    {
        uiIndex = uiIndex || UIIndex.UI;
        let uiPath = UI.UI_PATH[uiName];
        let scene = cc.director.getScene();
        if(!uiPath){
            console.log("UI不存在=====",uiName);
        }else{
            let node = scene.getChildByName("node_idx"+uiIndex);
            if(!node){
                node = new cc.Node();
                let widget = node.addComponent(cc.Widget);
                widget.isAlignBottom = true;
                widget.isAlignLeft = true;
                widget.isAlignRight = true;
                widget.isAlignTop = true;
                widget.top = 0;
                widget.left = 0;
                widget.right = 0;
                widget.bottom = 0;
                node.name = "node_idx"+uiIndex;
                node.parent = scene;
                node.zIndex = uiIndex;
            }
            switch(uiIndex){
                case UIIndex.BG:
                    rich.prefabManager.addPrefabToNode(node,uiPath,callback,UI.UI_NAME[uiName],uiParam,uiPos);
                    break;
                case UIIndex.MUTEX:
                    node.destroyAllChildren();
                    rich.prefabManager.addPrefabToNode(node,uiPath,callback,UI.UI_NAME[uiName],uiParam,uiPos);
                    break;
                case UIIndex.UI:
                    rich.prefabManager.addPrefabToNode(node,uiPath,callback,UI.UI_NAME[uiName],uiParam,uiPos);
                    break;
                case UIIndex.PopUp:
                    rich.prefabManager.addPrefabToNode(node,uiPath,callback,UI.UI_NAME[uiName],uiParam,uiPos);
                    break;
                default:
                    console.log("ui层级未定义",uiIndex);
                    break;
            }
        }
    }
 }

有兴趣联系邮箱 batchmichaelbxkxyj@gmail.com

Cocos Creator是一款流行的游戏开发引擎,它拥有丰富的功能和强大的性能,适用于各种类型的游戏开发。城建游戏是一种非常受欢迎的游戏类型,它允许玩家建设和管理自己的城市。 Cocos Creator城建源码是基于Cocos Creator引擎开发的城建游戏的源代码。这个源码提供了一个完整的城市建设游戏的基础框架,包含了各种功能和模块,如建筑物的放置和升级、资源的收集和管理、任务系统、UI设计等。 通过使用这个城建源码,开发者可以快速搭建一个城建游戏的基本框架,并在此基础上进行自定义和扩展。源码提供了各种常用的城建游戏功能的实现方法和示例,开发者可以根据自己的需求进行修改和优化。 Cocos Creator城建源码的设计和实现通常遵循一些常见的游戏开发原则,如组件化设计、面向对象编程、事件驱动等。这些原则使得源码的结构清晰、可扩展性强,开发者可以根据自己的实际情况进行修改和扩展。 使用Cocos Creator城建源码可以大大加快城建游戏的开发过程,减少开发的时间和成本。同时,Cocos Creator也提供了丰富的文档和社区支持,开发者可以在开发过程中获得帮助和解决问题。 总之,Cocos Creator城建源码是一个可以帮助开发者快速搭建城建游戏的基础框架,它提供了丰富的功能和示例,开发者可以根据自己的需求进行修改和扩展。使用这个源码可以加快游戏开发的速度,并且可以通过Cocos Creator强大的性能和功能来提升游戏的质量。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

少了个寂寞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值