| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303 |
- cc.Class({
- extends: cc.Component,
- properties: {
- CountDown: {
- default: null,
- type: cc.Node
- },
- CardsData:[],
- CardsList:{
- default: null,
- type: cc.Node
- },
- Card:{
- default: null,
- type: cc.Prefab
- },
- ZhiJingRenDetails:{
- default: null,
- type: cc.Node
- },
- CompareCardsArr:[],
- TimeTimingNode:{
- default: null,
- type: cc.Node
- },
- CurrentCardsNum:20,
- GameOverPage:{
- default: null,
- type: cc.Node
- },
- GamePlayPage:{
- default: null,
- type: cc.Node
- },
- TimingTimerID:null,
- TimingNum:0,
- TimingText:'',
- CardsNodeArr:[],
- EnableTouch:true,
- },
- onLoad(){
- this.EnableTouch = true;
- this.CardsNodeArr = [];
- this.CurrentCardsNum = 20;
- this.CardsData = [
- {
- DimensionID: '1',
- DimensionName: '自然',
- CardsListData: [
- {
- CardName: '袁隆平',
- CardWord: '坚持',
- CardIMG: cc.Color.GREEN,
- CardDetailsText: '袁隆平是杂交水稻研究领域的开创者和带头人,先后成功研发出“三系法”杂交水稻。'
- },
- {
- CardName: '钱学森',
- CardWord: '奋斗',
- CardIMG: cc.Color.RED,
- CardDetailsText: '钱学森发展国防科学技术方面做了大量工作,在我国导弹核武器的研究中建立了功勋。'
- },
- {
- CardName: '熊庆来',
- CardWord: '刻苦',
- CardIMG: cc.Color.YELLOW,
- CardDetailsText: '熊庆来主要从事函数论方面的研究,定义了一个“无穷级函数”,国际上称为熊氏无穷数。'
- },
- {
- CardName: '华罗庚',
- CardWord: '努力',
- CardIMG: cc.Color.BLUE,
- CardDetailsText: '华罗庚是一位只有初中学历的数学家,对数论有很深的研究,得出了著名的华氏定理。'
- }
- ]
- },
- {
- DimensionID: '2',
- DimensionName: '数学',
- CardsListData: [
- {
- CardName: '熊庆来',
- CardWord: '刻苦',
- CardIMG: cc.color.BLUE,
- CardDetailsText: '熊庆来主要从事函数论方面的研究,定义了一个“无穷级函数”,国际上称为熊氏无穷数。'
- },
- {
- CardName: '华罗庚',
- CardWord: '努力',
- CardIMG: cc.color.BLUE,
- CardDetailsText: '华罗庚是一位只有初中学历的数学家,对数论有很深的研究,得出了著名的华氏定理。'
- }
- ]
- }
- ];
- },
- start () {
- },
- ReadyBeforePlay(DimensionID){
- this.CompareCardsArr = [];
- this.CardsNodeArr = [];
- this.CurrentCardsNum = 20;
- this.TimeTimingNode.getComponent(cc.Label).string = '时间:00:00';
- //播放倒计时动画
- var CountDownAnim = this.CountDown.getComponent(cc.Animation);
- CountDownAnim.play();
- CountDownAnim.on('finished',this.TimeTiming,this);
- var CardsListData = this.GetCardsListByDimensionID(DimensionID);
- // console.log(CardsList);
- this.DestroyAllChildren(this.CardsList);
- this.AddCardToCardsList(this.CardsList,this.Card,CardsListData);
- this.ZhiJingRenDetails.active = false;
- },
- //时间计时
- TimeTiming(){
- var Minute = 0;
- var Second = 0;
- var self = this;
- self.TurnCardsToBack(self.CardsNodeArr);
- self.TimingTimerID = setInterval(function(){
- self.TimingNum+=1;
- var TimeText = '';
- if(Second<60){
- Second+=1;
- if(Second==60){
- Second=0;
- Minute+=1;
- }
- }
- if(Minute > 0 && Minute <10){
- TimeText = TimeText+'0'+Minute+':';
- }else if(Minute >= 10){
- TimeText = TimeText+Minute+':';
- }else{
- TimeText += '00:'
- }
- if(Second > 0 && Second <10){
- TimeText = TimeText+'0'+Second;
- }else if(Second >= 10){
- TimeText += Second;
- }else{
- TimeText += '00'
- }
- self.TimeTimingNode.getComponent(cc.Label).string = '时间:'+TimeText;
- self.TimingText = TimeText;
- },1000);
- },
- GetCardsListByDimensionID(DimensionID){
- var CardsDataArrLength = this.CardsData.length;
- var CardsListData = [];
- for(var i=0;i<CardsDataArrLength;i++){
- if(DimensionID == this.CardsData[i].DimensionID){
- CardsListData = this.CardsData[i].CardsListData;
- }
- }
- return CardsListData;
- },
- AddCardToCardsList(CardsList,CardPrefab,CardsListData){
- //1.生成20个空卡放入节点数组;
- this.CardsNodeArr = [];
- for(var i = 0;i<20;i++){
- var newMyPrefab = cc.instantiate( CardPrefab );
- newMyPrefab.parent = CardsList;
- this.CardsNodeArr.push(newMyPrefab);
- }
- //2.随机10个智敬人CardsListData卡片信息,然后存到智敬人数组CardsInfoArr里存2次,这样就是10对卡片了。
- var CardsInfoArr = [];
- var CardsListDataIndex = 0;
- //如果卡库length>=10,则:
- // 设置个index数组=【0-卡库.length】,然后从卡库数组取(随机index数组)位的信息,放入智敬人数组,放入2次,然后该index在数组中移出,直至I=9,
- if(CardsListData.length >= 10){
- var indexArr = [];
- for(var i = 0;i<CardsListData.length;i++){
- indexArr.push(i);
- }
- for(var i = 0;i<10;i++){
- CardsListDataIndex = this.GetRandomNum(0,indexArr.length-1);
- let aIndex = indexArr[CardsListDataIndex];
- CardsInfoArr.push(CardsListData[aIndex]);
- CardsInfoArr.push(CardsListData[aIndex]);
- indexArr.splice(CardsListDataIndex,1);
- }
- }
- //如果卡库length<10,则:
- // 依次保存入对应智敬人数组,完事之后再补随机,直至满10位。
- else{
- for(var i = 0;i<10;i++){
- if(i<CardsListData.length){
- CardsListDataIndex = i;
- }else{
- CardsListDataIndex = this.GetRandomNum(0,CardsListData.length-1);
- }
- CardsInfoArr.push(CardsListData[CardsListDataIndex]);
- CardsInfoArr.push(CardsListData[CardsListDataIndex]);
- }
- }
- //3.设置个CardsInfoArrIndex数组=【0-19】,将智敬人数组顺序打乱, 依次放入节点数组随机index(index数组取随机),该index就从index数组里面移出,
- var CardsInfoIndexArr = [];
- // var DisorderlyCardsInfoArr = [];
- var CardsInfoIndex = 0;
- for(var i = 0;i<20;i++){
- CardsInfoIndexArr.push(i);
- }
- for(var i = 0;i<20;i++){
- CardsInfoIndex = this.GetRandomNum(0,CardsInfoIndexArr.length-1);
- // DisorderlyCardsInfoArr.add(CardsInfoArr[CardsInfoIndex]);
- var CardDetailsScript = this.CardsNodeArr[i].getComponent( 'CardDetails' );
- CardDetailsScript.GamePlayPageJS = this;
- let aIndex = CardsInfoIndexArr[CardsInfoIndex];
- CardDetailsScript.SetDetails(i,CardsInfoArr[aIndex]);
- CardsInfoIndexArr.splice(CardsInfoIndex,1);
- }
- },
- //倒计时结束开始游戏后,所有卡片翻过去,变成背面
- TurnCardsToBack(CardsNodeArr){
- for(var i = 0;i<20;i++){
- CardsNodeArr[i].getChildByName('CardBack').active = true;
- }
- },
- CompareCards(CardID,CardName,Details,CardNode){
- if(this.EnableTouch == false) return;
- CardNode.getChildByName('CardBack').active = false;
- if(this.CompareCardsArr.length == 0){
- var aCard = {CardID,CardName,CardNode};
- this.CompareCardsArr.push(aCard);
- }else if(this.CompareCardsArr.length == 1){
- this.EnableTouch = false;
- if(CardID != this.CompareCardsArr[0].CardID){
- var aCard = {CardID,CardName,CardNode};
- this.CompareCardsArr.push(aCard);
- if(CardName == this.CompareCardsArr[0].CardName){
- this.ZhiJingRenDetails.active = true;
- this.SetZhiJingRenDetails(Details);
- this.scheduleOnce(function() {
- this.CardsClear(this.CompareCardsArr);
- this.EnableTouch = true;
- this.CompareCardsArr.splice(0,2);
- }, 0.5);
- }else{
- this.scheduleOnce(function() {
- this.CardsReset(this.CompareCardsArr);
- this.EnableTouch = true;
- this.CompareCardsArr.splice(0,2);
- }, 0.5);
- }
- }
- }else if(this.CompareCardsArr.length == 2){//当玩家快速点到第三个的时候,就让前两个马上消失
- if(CardName == this.CompareCardsArr[0].CardName){
- this.CardsClear(this.CompareCardsArr);
- }else{
- this.CardsReset(this.CompareCardsArr);
- }
- this.CompareCardsArr.splice(0,2);
- var aCard = {CardID,CardName,CardNode};
- this.CompareCardsArr.push(aCard);
- }
- },
- CardsClear(CompareCardsArr){
- for(var i = 0;i<CompareCardsArr.length;i++){
- var CardNodeJS = CompareCardsArr[i].CardNode.getComponent('CardDetails');
- CardNodeJS.CardClear();
- }
- this.CurrentCardsNum -= 2;
- //20张卡牌全部消除,游戏结束
- if(this.CurrentCardsNum == 0){
- this.GameOverPage.active = true;
- this.GamePlayPage.active = false;
- clearInterval(this.TimingTimerID);
- var GameOverJS = this.GameOverPage.getComponent('GameOverPage');
- GameOverJS.SetGameResut(this.TimingNum,this.TimingText)
- }
- },
- CardsReset(CompareCardsArr){
- for(var i = 0;i<CompareCardsArr.length;i++){
- var CardNodeJS = CompareCardsArr[i].CardNode.getComponent('CardDetails');
- CardNodeJS.CardReset();
- }
- },
- SetZhiJingRenDetails(Details){
- this.ZhiJingRenDetails.getChildByName('DetailsText').getComponent(cc.Label).string = Details.CardDetailsText;
- this.ZhiJingRenDetails.getChildByName('HeadIMG').color = Details.CardIMG;//图片暂时用颜色代替
- },
- DestroyAllChildren(ParentNode){
- var children = ParentNode.children;
- for (var i = 0; i < children.length; i++)
- {
- children[i].destroy();
- }
- },
- //从n到m获取随机整数,包含n,m
- GetRandomNum(n, m) {
- var random = Math.floor(Math.random() * (m - n + 1) + n);
- return random;
- }
- });
|