게임 작성 튜토리얼(마인 스위퍼)(최종회)【마크 기능의 추가】
이번 목표
지난번 에서는 게임 오버와 클리어 처리를 추가했습니다.
이번에는 마지막 시간으로 마크 기능을 추가합니다.
마크 기능은 스스로 폭탄이라고 판단한 패널을 마크하여 열 수 없게 하는 기능입니다.
코드 설명
마크 기능 추가
MainScene의 변경점
// メインシーン
phina.define('MainScene', {
superClass: 'DisplayScene',
// コンストラクタ
init: function() {
// 親クラス初期化
(略)
// ピース配置
PANEL_NUM_XY.times(function(spanX) {
PANEL_NUM_XY.times(function(spanY) {
// パネル作成
(略)
// パネルタッチ時
panel.onpointstart = function() {
// マークモードなら
if (self.mode === 'mark') {
if (!panel.isOpen && !panel.isMark) {
// マーク追加
if (self.markCount < BOMB_NUM) {
Mark().addChildTo(panel);
panel.isMark = true;
self.markCount++;
}
}
else {
if (self.markCount > 0) {
// マーク削除
panel.children[0].remove();
panel.isMark = false;
self.markCount--;
}
}
}
else {
// パネルを開く
self.openPanel(panel);
// クリア判定
self.checkClear();
}
};
});
});
// モード
this.mode = 'normal';
this.mode라는 변수로 모드를 관리합니다.
this.markCount라는 변수로 마크 수가 폭탄 수를 초과하지 않도록합니다.
// マークモードボタン
Button({
width: 120,
height: 64,
text: 'Mark',
fill: 'silver',
}).addChildTo(this)
.setPosition(this.gridX.span(14), this.gridY.span(14.5))
.onpush = function() {
// モード変更
if (self.mode === 'normal') {
this.fill = 'hsl(160, 80%, 50%)';
self.mode = 'mark';
}
else {
this.fill = 'silver';
self.mode = 'normal';
}
};
// 参照用
(略)
// マークの数
this.markCount = 0;
},
onpush 함수에 버튼을 눌렀을 때의 처리를 기술합니다.
// パネルを開く処理
openPanel: function(panel) {
// マークされていた何もしない
if (panel.isMark) return;
(略)
},
결론
6회에 걸쳐 튜토리얼을 써 왔습니다만, 본 엔트리가 phina.js를 사용한 게임 제작의 참고가 되면 다행입니다.
runstant 프로젝트 링크
Reference
이 문제에 관하여(게임 작성 튜토리얼(마인 스위퍼)(최종회)【마크 기능의 추가】), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/alkn203/items/cd1f3deab5e59c9bd6fd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)