経路探索 + enchant.js _shimizu Follow 2012-08-12 04:06:47 License: MIT License Fork3 Fav5 View6641 Play Stop Reload Fullscreen Smart Phone Fork tree Readme JavaScript 87 lines HTML 0 lines CSS 3 lines chrome推奨 クリックした場所へ移動。 フルスクリーンだとステージのサイズが合わなくなって動かない orz 経路探索 + enchant.js enchant.js v0.4.5 route_maze.js enchant(); window.onload = function() { var game = new Game(420, 420); game.bs = 32; game.fps = 15; game.preload('http://jsrun.it/assets/v/4/E/U/v4EUw.png',"http://jsrun.it/assets/i/a/D/e/iaDeH.gif"); game.onload = function() { var maze = new Maze(13,13); var wall = 1; var wall_img = 10; var road = 0; var road_img = 3; var m_col = maze.make(road, wall); var m_data = []; for(var y=0; y < m_col.length; y++){ m_data[y] = []; for(var x=0; x < m_col.length; x++){ switch(m_col[y][x]){ case 1:m_data[y][x] = wall_img;break; case 0:m_data[y][x] = road_img;break; } } } var map = new Map(32, 32); map.image = game.assets['http://jsrun.it/assets/v/4/E/U/v4EUw.png']; //マップの画像を読み込む map.loadData(m_data); map.collisionData = m_col; game.rootScene.addChild(map); // プレイヤーを生成 var player = new Sprite(32, 32); player.image = game.assets["http://jsrun.it/assets/i/a/D/e/iaDeH.gif"]; player.x = game.bs; player.y = game.bs; player.cx = game.bs; player.cy = game.bs; game.rootScene.addChild(player); this.rootScene.addEventListener("touchstart", function(e){ // プレイヤーの位置 var sx = Math.round(player.x / game.bs); var sy = Math.round(player.y / game.bs); //目的地(クリックした場所) var gx = Math.round(e.localX / game.bs); var gy = Math.round(e.localY / game.bs); if( map.collisionData[gy][gx] == wall){ gx = Math.floor(e.localX / game.bs); gy = Math.floor(e.localY / game.bs); } if( map.collisionData[gy][gx] == wall){ gx = Math.ceil(e.localX / game.bs); gy = Math.ceil(e.localY / game.bs); } if( map.collisionData[gy][gx] != wall && gx < 13 && gy < 13){ route.init(gx, gy, sx, sy,false, map.collisionData, wall); route.search(); } }); player.addEventListener(Event.ENTER_FRAME, function(){ if(route.targetNode){ player.cx = route.targetNode.x * game.bs; player.cy = route.targetNode.y * game.bs; if(map.hitTest(player.cx,player.cy)){ //console.log("wall hit"); }else{ player.x = route.targetNode.x * game.bs; player.y = route.targetNode.y * game.bs; route.targetNode = route.targetNode.parent; } } }); } game.start(); } 経路探索 + enchant.js body { margin: 0; } chrome推奨 クリックした場所へ移動。 フルスクリーンだとステージのサイズが合わなくなって動かない orz enchant(); window.onload = function() { var game = new Game(420, 420); game.bs = 32; game.fps = 15; game.preload('http://jsrun.it/assets/v/4/E/U/v4EUw.png',"http://jsrun.it/assets/i/a/D/e/iaDeH.gif"); game.onload = function() { var maze = new Maze(13,13); var wall = 1; var wall_img = 10; var road = 0; var road_img = 3; var m_col = maze.make(road, wall); var m_data = []; for(var y=0; y < m_col.length; y++){ m_data[y] = []; for(var x=0; x < m_col.length; x++){ switch(m_col[y][x]){ case 1:m_data[y][x] = wall_img;break; case 0:m_data[y][x] = road_img;break; } } } var map = new Map(32, 32); map.image = game.assets['http://jsrun.it/assets/v/4/E/U/v4EUw.png']; //マップの画像を読み込む map.loadData(m_data); map.collisionData = m_col; game.rootScene.addChild(map); // プレイヤーを生成 var player = new Sprite(32, 32); player.image = game.assets["http://jsrun.it/assets/i/a/D/e/iaDeH.gif"]; player.x = game.bs; player.y = game.bs; player.cx = game.bs; player.cy = game.bs; game.rootScene.addChild(player); this.rootScene.addEventListener("touchstart", function(e){ // プレイヤーの位置 var sx = Math.round(player.x / game.bs); var sy = Math.round(player.y / game.bs); //目的地(クリックした場所) var gx = Math.round(e.localX / game.bs); var gy = Math.round(e.localY / game.bs); if( map.collisionData[gy][gx] == wall){ gx = Math.floor(e.localX / game.bs); gy = Math.floor(e.localY / game.bs); } if( map.collisionData[gy][gx] == wall){ gx = Math.ceil(e.localX / game.bs); gy = Math.ceil(e.localY / game.bs); } if( map.collisionData[gy][gx] != wall && gx < 13 && gy < 13){ route.init(gx, gy, sx, sy,false, map.collisionData, wall); route.search(); } }); player.addEventListener(Event.ENTER_FRAME, function(){ if(route.targetNode){ player.cx = route.targetNode.x * game.bs; player.cy = route.targetNode.y * game.bs; if(map.hitTest(player.cx,player.cy)){ //console.log("wall hit"); }else{ player.x = route.targetNode.x * game.bs; player.y = route.targetNode.y * game.bs; route.targetNode = route.targetNode.parent; } } }); } game.start(); } body { margin: 0; } use an iframe compat browser, deer Play on jsdo.it games Author Share ブログに埋め込む QR Tag Download Complete! Description What kind of game? chrome推奨 クリックした場所へ移動。 フルスクリーンだとステージのサイズが合わなくなって動かない orz Control Device Smartphone Controllerjsdo.it WebSocket Controller» Mouse Keyboard Touch Device Fullscreen Activated Inactivated jsdo.it games から削除する Submit Author _shimizu URLhttp://shimz.me/blog/ 群馬県高崎市在住のエンジニア 。サーバ管理したり、自動組版のスクリプト組んだり、サイト作ったりして生きてます。データビジュアライゼーションとオープンデータにハマってます。Webデザイン & JS勉強中。 I luv javascript! Tweet Default Panel Auto play Screenshot Readme JavaScript HTML CSS Size Width: px Height: px code <script type="text/javascript" src="http://jsdo.it/blogparts/zdPG/js"></script> enchant.js game Discussion Questions on this code? Tags enchant.js game Favorite by Dan.Collyer nukobito siouxcitizen akm2 Buravo46: enchant.js Forked sort by latest page views favorite forked forked: 経路探索 + enchant.js ozawa4751 11 891 88/1/3 enchant.js game forked: 経路探索 + enchant.js (tl. _shimizu 00 890 100/0/3 enchant.js forked: 経路探索 + enchant.js ggmrikpokpo 01 781 177/24/3 enchant.js game