既然是昆特牌遊戲那麼毫無疑問,昆特牌無疑就是重點需要關注的地方,本節主要講解怎樣實現昆特牌
對於昆特牌來說,總共有四種型別的卡,單位卡(包括普通單位卡和英雄單位卡),天氣卡,特殊卡,領導卡,並且單位卡還具有力量值,能力,所屬勢力,卡牌的名稱等屬性,所以單純的sprite是無法實現這些的,需要自定義類來實現,既然是自定義類,那麼就需要有自己的構造方法和create方法,cocos2dx當然也提供了建立create方法的靜態巨集,但create_func巨集為無參巨集,只能處理不放置引數的巨集,所以既然是自定義昆特牌的類,肯定需要傳入引數來初始化卡牌,所以這裡並不能使用巨集,而需要自己寫乙個create函式,這個create函式可以參照巨集的寫法來寫,create_func巨集的寫法如下:
#define create_func(__type__) \
//type即為類名
static __type__* create() \
\ else \
\}
所以自己的create函式可以這麼寫,就是將上面的type全部替換為自己所建立的類名,並填上引數
gwentcard* gwentcard::create(dictionary *dictionary)
cc_safe_delete(card);
return card;
}
接一下是類的構造,這個類的目的是為了建立一張昆特牌,那麼昆特牌的屬性一共有基礎力量,能力,卡牌名稱,卡牌的種類,儲存改變後的力量值,攻擊的範圍,大致需要用到如上所述的幾種屬性,對於這個類來說就必須具備上述引數,並提供外部訪問函式,而cocos恰好提供了乙個非常方便的巨集cc_synthesize,此巨集可以同時定義乙個變數,並提供對該變數進行set和get的函式,定義方法如下:
cc_synthesize(bool,m_isselect,select);//是否已選
//bool為變數的型別,m_isselect為變數名稱,select為函式名稱,使用時的函式為setselect和getselect
基礎部分完畢後,就是需要用到的函式了,完整的類定義如下:
#pragma once
#include "cocos2d.h"
class gamescene;
using_ns_cc;
class gwentcard : public layer
;
首先是init函式,該函式在create中呼叫,目的是初始化卡片的影象要素,以layer為基礎,建立乙個sprite並將其新增到layer上,具體過程如下:
auto layer=layer::create();//建立乙個layer
auto sprite=sprite::create(this->m_imgpath);建立乙個sprite,引數為影象路徑
string
*pow=
string
::createwithformat("%d",newpow);
sprite->setanchorpoint(point::zero);//設定描點
layer->addchild(sprite);
this->addchild(layer);
this->setcontentsize(sprite->getcontentsize());
return
true;
其次就是觸控函式,因為在昆特牌中需要用到多種觸控形式,如果單純只用乙個觸控函式來處理會變得很麻煩,所以在這裡用了多種觸控函式來處理,並提供乙個引數btype來進行控制,具體使用哪種觸控函式,下面是cocos2dx的觸控機制定義,因為要通過引數來控制,而在呼叫create的過程中init函式和建構函式都已經呼叫過了,所以這裡放在onenter中進行定義。
void gwentcard::onenter()else
if(spritetype==
1)else
if(spritetype==
2)else
if(spritetype==
3)}
昆特牌1.0版源** B S備忘錄22 少年,不來一發彈幕嗎
最近做專案做的火熱,自己的學習反而有些落後了,但是沒關係,畢竟現在學習的東西都是以後要一直使用的,在專案中多寫寫調調還是有用的。首先在vs預設的mvc 中加了點東西,把彈出彈幕要用的標籤都寫完。x x之後寫了乙個樣式表,算是給這個簡單的彈幕螢幕加了些預設的樣式。barrage screen barr...
Java面試來一發(一)TopN問題
1 topn問題描述 問題一 找出海量資料 現次數最多的n個資料。問題二 找出兩個超大檔案中的相同字串。問題三 找出超多整數中沒有重複出現的整數,或多少以內沒出現的整數。2 解決方案 通用方案 分而治之的思想,先拆分成很多小檔案,每個檔案分別統計和排序,然後歸併排序。問題一 除分而治之方案外,如果無...
南郵CTF 騷年來一發嗎
來一發!正過程 先翻轉字串 a for b 0 b最後一步,base64加密end,在翻轉字串,在rot13 end 解密 第一步 rot13解密,翻轉字串,base64解密 第二步 把字串中的每個都取出,向前移動一位 第三步 翻轉字串 import base64 codingstr iejqak3...