const CHAR_SX = 8; const CHAR_SY = 8; var std15 = function(drawNode, screen_sx, screen_sy, cb_sx, cb_sy){ var that = {}; var cb_unit = screen_sx / cb_sx / CHAR_SX; var charBuff = new Array(cb_sx*cb_sy); var cursor_x = 0; var cursor_y = 0; var white = cc.color(255, 255, 255); { var font = ichigojamfont_data.split("\n"); var bfont = []; for (var j = 0; j < font.length; j++) { var code = font[j]; var bf = []; for (var i = 0; i < 8; i++) { var n = parseInt(code.substring(i * 2, i * 2 + 2), 16); bf.push(n); } bfont.push(bf); } that.ichigojamfont = bfont; } that.locate = function (x, y) { cursor_x = x; cursor_y = y; } that.putc = function (c) { that.putcLoc(cursor_x, cursor_y, c); } that.putcLoc = function (x, y, c) { charBuff [y*cb_sx+x] = c.charCodeAt(0); } that.scr = function (x, y) { return charBuff [y*cb_sx+x]; } that.cls = function () { for (var y = 0; y < cb_sy; ++y) { for (var x = 0; x < cb_sx; ++x) { charBuff [y*cb_sx+x] = 0; } } } that.scroll = function () { for (var y = 0; y < cb_sy; ++y) { for (var x = 0; x < cb_sx; ++x ) { if (y == cb_sy-1) { charBuff [y*cb_sx+x] = 0; } else { charBuff [y*cb_sx+x] = charBuff [(y+1)*cb_sx+x]; } } } } that.mapchar = function (cx, cy, c) { // [memo] '\0' == 0 -> char of blank var glyph = that.ichigojamfont[c]; for(var y = 0 ; y < CHAR_SY; ++y) { var line = glyph[y]; for(var x = 0 ; x < CHAR_SX; ++x) { if(((line >> (CHAR_SX-x-1)) & 0x1) == 0x1){ var x0 = (cx*CHAR_SX+x)*cb_unit; var y0 = (480-10)-((cy*CHAR_SY+y)*cb_unit); drawNode.drawRect(cc.p(x0, y0), cc.p(x0+cb_unit, y0+cb_unit), white); } } } } that.ccDraw = function() { drawNode.clear(); for (var y = 0; y < cb_sy; ++y) { for (var x = 0; x < cb_sx; ++x) { that.mapchar(x, y, charBuff [y*cb_sx+x]); } } } that.cls(); return that; } var res = { }; var MyLayer = cc.KidspodLayer.extend({ _std15:null, _frameCount:0, _running:true, _x:15, init:function(){ this._super(); this.scheduleUpdate(); var size = cc.director.getWinSize(); var drawNode = new cc.DrawNode(); this._std15 = std15(drawNode,320,470,32,47); this.addChild(drawNode); return true; }, update:function(dt){ if(this._frameCount % 3 == 0) { if(!this._running) return; this._std15.locate(this._x, 5); this._std15.putc('0'); this._std15.locate(Math.floor(Math.random() * Math.floor(32)), 46); this._std15.putc('*'); this._std15.scroll(); if(this._std15.scr(this._x,5) != 0){ this._running = false; } this._std15.ccDraw(); } ++this._frameCount; }, onMouseDown:function(event){ if(event._x < 160) { --this._x; } else { ++this._x; } }, onKeyPressed:function(key, event){ if(key == cc.KEY.left) --this._x; if(key == cc.KEY.right) ++this._x; // if(key == cc.KEY.up) // { // // キーボードの上キーが押されたとき // } // else if(key == cc.KEY.down) // { // // キーボードの下キーが押されたとき // } // else if(key == cc.KEY.left) // { // // キーボードの左キーが押されたとき // } // else if(key == cc.KEY.right) // { // // キーボードの右キーが押されたとき // } }, onTouchBegan:function(touch, event){ if(touch.getLocation().x < 160) { --this._x; } else { ++this._x; } }, onAccelerometer:function(accelero, event){ }, }); var MyScene = cc.Scene.extend({ onEnter:function (){ this._super(); var layer = new MyLayer(); layer.init(); this.addChild(layer); } });
伝統のゲームですね。フォントが揃っているので、違いは画面が横長か縦長かくらいでしょうか。これだけの違いで、ゲームをプレイした感覚が変わるのが面白いですね。まるで難易度も違っているような……。