【phina.js】게임 작성 튜토리얼(15퍼즐)(그 1)【피스의 배치】
→ (그 2)【숫자의 표시】
소개
이 튜토리얼에서는 유명한 슬라이드 퍼즐인 15퍼즐을 phina.js로 만들고 싶습니다.
이번 목표
다음과 같이 15퍼즐 조각을 배치합니다.
코드는 다음과 같습니다.
// グローバルに展開
phina.globalize();
// 定数
var SCREEN_WIDTH = 640; // 画面横サイズ
var SCREEN_HEIGHT = 960; // 画面縦サイズ
var GRID_SIZE = SCREEN_WIDTH / 4; // グリッドのサイズ
var PIECE_SIZE = GRID_SIZE * 0.95; // ピースの大きさ
var PIECE_NUM_XY = 4; // 縦横のピース数
var PIECE_OFFSET = GRID_SIZE / 2; // オフセット値
/*
* メインシーン
*/
phina.define('MainScene', {
superClass: 'DisplayScene',
// コンストラクタ
init: function() {
// 親クラス初期化
this.superInit();
// 背景色
this.backgroundColor = 'gray';
// グリッド
var grid = Grid(SCREEN_WIDTH, PIECE_NUM_XY);
// ピースグループ
var pieceGroup = DisplayElement().addChildTo(this);
// ピース配置
PIECE_NUM_XY.times(function(spanX) {
PIECE_NUM_XY.times(function(spanY) {
// ピース作成
var piece = Piece().addChildTo(pieceGroup);
// Gridを利用して配置
piece.x = grid.span(spanX) + PIECE_OFFSET;
piece.y = grid.span(spanY) + PIECE_OFFSET;
});
});
},
});
/*
* ピースクラス
*/
phina.define('Piece', {
// RectangleShapeを継承
superClass: 'RectangleShape',
// コンストラクタ
init: function() {
// 親クラス初期化
this.superInit({
width: PIECE_SIZE,
height: PIECE_SIZE,
cornerRadius: 10,
fill: 'silver',
stroke: 'white',
});
},
});
/*
* メイン処理
*/
phina.main(function() {
// アプリケーションを生成
var app = GameApp({
// MainScene から開始
startLabel: 'main',
});
// fps表示
//app.enableStats();
// 実行
app.run();
});
[runstant로 확인]
코드 설명
상수 정의
메인 장면 앞에 조각 크기 등을 상수로 정의합니다.
// 定数
var SCREEN_WIDTH = 640; // 画面横サイズ
var SCREEN_HEIGHT = 960; // 画面縦サイズ
var GRID_SIZE = SCREEN_WIDTH / 4; // グリッドのサイズ
var PIECE_SIZE = GRID_SIZE * 0.95; // ピースの大きさ
var PIECE_NUM_XY = 4; // 縦横のピース数
var PIECE_OFFSET = GRID_SIZE / 2; // オフセット値
조각 클래스 정의
나중의 편의성을 생각하고 phina.define에서 다음과 같이 클래스화합니다.
// ピースクラス
phina.define('Piece', {
// RectangleShapeを継承
superClass: 'RectangleShape',
// コンストラクタ
init: function() {
// 親クラス初期化
this.superInit({
width: PIECE_SIZE,
height: PIECE_SIZE,
cornerRadius: 10,
fill: 'silver',
stroke: 'white',
});
},
});
Piece 클래스는 phina.js에서 처음부터 준비되어 있는 RectangleShape(사각형) 클래스를 상속해, init 함수내에서 부모 클래스(RectangleShape)에 파라미터를 건네주어 초기화하고 있습니다.
cornerRadius 속성을 설정하여 둥근 사각형을 만들 수 있습니다.
fill은 채우기 색이고 stroke는 테두리 색입니다.
phina.js에는 그 외에도 원이나 삼각형 등의 Shape(기본 도형)가 준비되어 있어, 모두 최소한의 파라미터로 draw 할 수 있으므로, 간단한 동작 확인시에 편리합니다.
Shape의 사용법에 대해서는, 저자인 phi 씨의 기사 phina.js를 사용하여 다양한 도형을 표시해 봅시다. 가 참고가 됩니다.
조각 배치
이번 목적인 피스의 배치에 대해 설명합니다.
// グリッド
var grid = Grid(SCREEN_WIDTH, PIECE_NUM_XY);
// ピースグループ
var pieceGroup = DisplayElement().addChildTo(this);
// ピース配置
PIECE_NUM_XY.times(function(spanX) {
PIECE_NUM_XY.times(function(spanY) {
// ピース作成
var piece = Piece().addChildTo(pieceGroup);
// Gridを利用して配置
piece.x = grid.span(spanX) + PIECE_OFFSET;
piece.y = grid.span(spanY) + PIECE_OFFSET;
});
});
이번에는 여기까지
조각은 배치할 수 있었습니다만, 현시점에서는 단지 타일의 모임이군요.
다음 번에는 조각에 숫자를 표시하고 싶습니다.
→ (그 2)【숫자의 표시】
Reference
이 문제에 관하여(【phina.js】게임 작성 튜토리얼(15퍼즐)(그 1)【피스의 배치】), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/alkn203/items/70c09abc21c60bf75899텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)