//このゲームのmain.js
//-----------------------
exports.main = void 0;
function main(param) {
var scene = new g.Scene({
game: g.game,
// このシーンで利用するアセットのIDを列挙し、シーンに通知します
assetIds: ["player", "shot", "switch", "se"]
});
var time = 10; // 制限時間
if (param.sessionParameter.totalTimeLimit) {
time = param.sessionParameter.totalTimeLimit; // セッションパラメータで制限時間が指定されたらその値を使用します
}
//---------------------------------------------------
// 任意に追加した変数
var wawa = 0;//ハートが飛ぶ方向
//---------------------------------------------------
// 市場コンテンツのランキングモードでは、g.game.vars.gameState.score の値をスコアとして扱います
g.game.vars.gameState = { score: 0 };
scene.onLoad.add(function () {
// ここからゲーム内容を記述します
//---------------------------------------------------
// 各アセットオブジェクトを取得します
var playerImageAsset = scene.asset.getImageById("player");
var shotImageAsset = scene.asset.getImageById("shot");
var swImageAsset = scene.asset.getImageById("switch");
var seAudioAsset = scene.asset.getAudioById("se");
//---------------------------------------------------
// フォントの生成
var font = new g.DynamicFont({
game: g.game,
fontFamily: "sans-serif",
size: 48
});
//---------------------------------------------------
// 背景
var bg = new g.FilledRect({
scene: scene,
cssColor: "#CCFFFF",
x: 0,
y: 0,
width: g.game.width,
height: g.game.height
});
scene.append(bg);
//---------------------------------------------------
//ゲームの説明
var label = new g.Label({
scene: scene,
font: font,
text: "画面をクリックせよ!",
textAlign: "center",
width: g.game.width,
widthAutoAdjust: false,
fontSize: 32,
x: 0,
y: g.game.height/1.5
});
scene.append(label);
scene.setTimeout(function() {
// 約10秒後に行う処理
scene.remove(label); //メッセージを消す
}, 9990);
//---------------------------------------------------
// プレイヤーを生成します
var player = new g.Sprite({
scene: scene,
src: scene.asset.getImageById("player"),
width: playerImageAsset.width,
height: playerImageAsset.height
});
// スコア表示用のラベル
var scoreLabel = new g.Label({
scene: scene,
text: "SCORE: 0",
font: font,
fontSize: font.size / 2,
textColor: "black"
});
scene.append(scoreLabel);
// 残り時間表示用ラベル
var timeLabel = new g.Label({
scene: scene,
text: "TIME: 0",
font: font,
fontSize: font.size / 2,
textColor: "black",
x: 0.65 * g.game.width
});
scene.append(timeLabel);
// プレイヤーの初期座標を、画面の中心に設定します
player.x = (g.game.width - player.width) / 2;
player.y = (g.game.height - player.height) / 2;
player.onUpdate.add(function () {
// 毎フレームでY座標を再計算し、プレイヤーの飛んでいる動きを表現します
// ここではMath.sinを利用して、時間経過によって増加するg.game.ageと組み合わせて
//player.y = (g.game.height - player.height) / 2 + Math.sin(g.game.age % (g.game.fps * 10) / 4) * 10;
// プレイヤーの座標に変更があった場合、 modified() を実行して変更をゲームに通知します
// player.modified();
});
scene.append(player);
// 画面をタッチしたとき、
scene.onPointDownCapture.add(function () {
// 制限時間以内であればタッチ1回ごとにSCOREに+1します
if (time > 0) {
g.game.vars.gameState.score++;
scoreLabel.text = "SCORE: " + g.game.vars.gameState.score;
scoreLabel.invalidate();
}
seAudioAsset.play();//SEを鳴らします
// プレイヤーが発射する弾を生成します
var wawa = Math.floor(g.game.random.generate() * 8);//0以上8未満の整数を変数wawaに取得
var shot = new g.Sprite({
scene: scene,
src: shotImageAsset,
width: shotImageAsset.width,
height: shotImageAsset.height
});
// 弾の初期座標を、プレイヤーの少し右に設定します
shot.x = player.x + player.width / 2 -20;
shot.y = player.y + player.height / 2;
shot.onUpdate.add(function () {
// 毎フレームで座標を確認し、画面外に出ていたら弾をシーンから取り除きます
if (shot.x > g.game.width)
shot.destroy();
//---------------------------------------------------
// 弾の動きを表現します
if (wawa == 0) {
shot.x += 10;//変数wawaが0の弾は右へ移動
}
if (wawa == 1) {
shot.x += -10;//変数wawaが1の弾は左へ移動
}
if (wawa == 2) {
shot.y += 10;//変数wawaが2の弾は下へ移動
}
if (wawa == 3) {
shot.y += -10;//変数wawaが3の弾は上へ移動
}
if (wawa == 4) {
shot.y += -10;//変数wawaが4の弾は右上へ移動
shot.x += 10;
}
if (wawa == 5) {
shot.y += -10;//変数wawaが5の弾は左上へ移動
shot.x += -10;
}
if (wawa == 6) {
shot.y += 10;//変数wawaが6の弾は右下へ移動
shot.x += 10;
}
if (wawa == 7) {
shot.y += 10;//変数wawaが0の弾は左下へ移動
shot.x += -10;
}
//---------------------------------------------------
// 変更をゲームに通知します
shot.modified();
});
scene.append(shot);
});
var updateHandler = function () {
if (time <= 0) {
// ゲームアツマール環境であればランキングを表示します
if (param.isAtsumaru) {
var boardId_1 = 1;
window.RPGAtsumaru.experimental.scoreboards.setRecord(boardId_1, g.game.vars.gameState.score).then(function () {
window.RPGAtsumaru.experimental.scoreboards.display(boardId_1);
});
}
scene.onUpdate.remove(updateHandler); // カウントダウンを止めるためにこのイベントハンドラを削除します
//---------------------------------------------------
//ゲームが終わったので、リセットを促すテキストを表示
var label = new g.Label({
scene: scene,
font: font,
text: "おしまーい、リロードしてね",
textAlign: "center",
width: g.game.width,
widthAutoAdjust: false,
fontSize: 32,
x: 0,
y: g.game.height/1.5,
});
scene.append(label);
//ボタンを押すとランキング表示
var sw = new g.Sprite({
scene: scene,
src: scene.asset.getImageById("switch"),
x: 0,
y: g.game.height-48,
touchable: true
});
scene.append(sw);
sw.onPointDown.add(function(e) {
window.RPGAtsumaru.experimental.scoreboards.display(boardId_1);
});
//---------------------------------------------------
}
// カウントダウン処理
time -= 1 / g.game.fps;
timeLabel.text = "TIME: " + Math.ceil(time);
timeLabel.invalidate();
};
scene.onUpdate.add(updateHandler);
//
//
//
// ここまでゲーム内容を記述します
//
//
//
//
});
g.game.pushScene(scene);
}
exports.main = main;
[0回]
PR