์˜ค๋Š˜์€ ์–ด์ œ ํ•œ ๋‚ด์šฉ์„ ์กฐ๊ธˆ ์„ธ๋ฐ€ํ•˜๊ฒŒ ํ•ด๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ–๊ธฐ๋กœ ํ–ˆ์—ˆ๋Š”๋ฐ


์ด๋ฒˆ์—๋Š” ๊ฒŒ์ž„ ํ•ด์ƒ๋„๋ฅผ ์ข€๋” ๋ชจ๋ฐ”์ผ ์Šค๋Ÿฝ๊ฒŒ ๋ฐ”๊พธ๊ณ 


์บ๋ฆญํ„ฐ ์กฐ์ž‘์„ ์ข€๋” ์“ธ๋งŒํ•˜๊ฒŒ ๋งŒ๋“ค์–ด๋ณด์ž



viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73cec84fa11d028316f6e59db3d00f81430124d7064e9965d05e8df5870f83ae1f82d31a08390c91e4629836d2e67dc7a053c27239c47752c14bbf0b1

http://aaaga.dothome.co.kr/rpg1/index.html

์˜ค๋Š˜ ์˜ˆ์ œ์˜ ๊ฒฐ๊ณผ๋Š” ์—ฌ๊ธฐ์„œ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Œ



์ด๊ฑด ๋‚ด๊ฐ€ ๋งŒ๋“  ๋ฆฌ์†Œ์Šค์ธ๋ฐ ์ด๋ฒˆ์—๋Š” ์ด๊ฑธ ์จ์„œ ํ• ๊ฒŒ


viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73cec84fa11d028316f6e59db3d00f81430124d7064ea965d8a83271f7131468cc86b5e900625ddc346a34f10c1dff077032240bcafabc2dd84b223a9

viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73cec84fa11d028316f6e59db3d00f81430124d7064ea965d8a83271f7131468cc86b5e900625ddc346a34f10c1dff077047114b5f9fac5d4b6eedd41


์›๋ž˜๋Š” ๊ทธ๋ฆผํŒ์ด๋ž‘ ๋ฉ”๋ชจ์žฅ์œผ๋กœ ๋‹ค ํ• ๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ


๊ทธ๋ฆผํŒ์œผ๋กœ ๊ทธ๋ฆผ ๊ทธ๋ฆฌ๊ธฐ ๊ท€์ฐฎ๋‹ค. ๊ทธ๋ƒฅ ์ด๊ฑฐ ๋‹ค์šด๋ฐ›์•„์„œ ์—ฐ์Šตํ•˜์ž๊ตฌ


viewimage.php?id=2abcdd23dad63db0&no=24b0d769e1d32ca73cec84fa11d028316f6e59db3d00f81430124d7064ea965d8a83271f7131468cc86b5e900625ddc346a34f10c1dff077537e4fb8f9a492d540dd39ff


๊ธฐ์กด img.png ํŒŒ์ผ์„ ์ง€์šฐ๊ณ  ์œ„์— ๋‘๊ฐœ์˜ ํŒŒ์ผ์„ ๋‹ค์šด๋ฐ›์•„์„œ img.png์™€ map.png๋กœ ์ €์žฅํ–ˆ์–ด


์ด์ œ ์—ฌ๊ธฐ์— ๋งž๊ฒŒ main.js ํŒŒ์ผ์„ ์ˆ˜์ •ํ•ด ๋ณด์ž ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„๋งŒ ๋นจ๊ฐ›๊ฒŒ ํ‘œ์‹œํ•ด ๋ณผ๊ฒŒ


enchant(); window.onload = function(){


var winsize = window.innerWidth/window.innerHeight; //ํ™”๋ฉด์˜ ๊ฐ€๋กœํฌ๊ธฐ์™€ ์„ธ๋กœํฌ๊ธฐ์˜ ๋น„๋ฅผ winsize์— ๋„ฃ๋Š”๋‹ค


var core = new Core(160*winsize.toFixed(2), 160); // ํ™”๋ฉด์˜ ๊ฐ€๋กœ์‚ฌ์ด์ฆˆ๋Š” 160 ๊ณฑํ•˜๊ธฐ winsize์˜ ์†Œ์ˆ˜์ 2๋ฒˆ์งธ ์ž๋ฆฌ๊นŒ์ง€๋ฅผ ๊ณฑํ•œ๊ฐ’์ด๊ณ  ์„ธ๋กœ๋Š” 160

core.preload ('img.png','map.png'); //map.png ํŒŒ์ผ์„ ์ถ”๊ฐ€๋กœ ๋กœ๋“œํ•จ

core.onload = function(){ core.rootScene.backgroundColor = 'yellow';


var label = new Label('์•ˆ๋…• ์„ธ๊ณ„!')


var sprite = new Sprite(16, 16);

sprite.image = core.assets['img.png'];

sprite.moveTo(16, 16);

sprite.frame = [0,0,0,0,1,1,1,1]; //๋ฐ”๋€ ์†Œ์Šค์— ๋งž๊ฒŒ ํ”„๋ ˆ์ž„์„ ์ˆ˜์ •ํ•จ


//๊ธฐ์กด์— ์žˆ๋˜ up,down,left,right๋Š” ์‚ญ์ œํ•จ


var map = new Map(16, 16);

map.image = core.assets['map.png']; //์ถ”๊ฐ€๋œ ์ด๋ฏธ์ง€ ํŒŒ์ผ๋กœ ๋ณ€๊ฒฝํ•จ

map.loadData([

[0,0,0,0,0,0,0,0,0,0],

[0,7,7,7,7,7,7,7,7,0],

[0,7,7,7,7,7,7,7,7,0],

[0,7,7,7,7,7,7,7,7,0],

[0,7,7,7,7,7,7,7,7,0],

[0,7,7,7,7,7,7,7,7,0],

[0,7,7,7,7,7,7,7,7,0],

[0,7,7,7,7,7,7,7,7,0],

[0,7,7,7,7,7,7,7,7,0],

[0,0,0,0,0,0,0,0,0,0]]); // ๋ฐ”๋€ ํŒŒ์ผ์— ๋งž๊ฒŒ ๊ทธ๋ฆผ๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•ด์คŒ


map.collisionData = [

[0,0,0,0,0,0,0,0,0,0],

[0,1,1,1,1,1,1,1,1,0],

[0,1,1,1,1,1,1,1,1,0],

[0,1,1,1,1,1,1,1,1,0],

[0,1,1,1,1,1,1,1,1,0],

[0,1,1,1,1,1,1,1,1,0],

[0,1,1,1,1,1,1,1,1,0],

[0,1,1,1,1,1,1,1,1,0],

[0,1,1,1,1,1,1,1,1,0],

[0,0,0,0,0,0,0,0,0,0]]; // ๊ฐํƒ€์ผ์ด ์ง€๋‚ ์ˆ˜ ์—†๋Š” ํƒ€์ผ์ด๋ฉด 0, ์ง€๋‚ ์ˆ˜ ์žˆ์œผ๋ฉด 1์„ ์ง‘์–ด๋„ฃ์—ˆ์Œ


var controller0 = new Sprite(32, 32); //controller0 ์ด๋ผ๋Š” ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋งŒ๋“ฌ ๊ทธ๋ฆผ์ด๊ณ  ํฌ๊ธฐ๋Š” 32x32ํ”ฝ์…€

controller0.backgroundColor = 'black'; //๊ทธ๋ฆผ์˜ ์ƒ‰๊น”์„ ๊ฒ€์€์ƒ‰์œผ๋กœ ํ•œ๋‹ค

controller0.opacity = 0.2; //ํˆฌ๋ช…๋„๋ฅผ 20%๋กœ ํ•œ๋‹ค


var controller1 = new Sprite(16, 16); //controller1 ์ด๋ผ๋Š” ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋งŒ๋“ ๋‹ค ๊ทธ๋ฆผ์ด๊ณ  ํฌ๊ธฐ๋Š” 16x16ํ”ฝ์…€

controller1.backgroundColor = 'black'; //์ƒˆ๊น”์„ ๊ฒ€์€์ƒ‰์œผ๋กœ

controller1.opacity = 0.3; //ํˆฌ๋ช…๋„๋ฅผ 30%๋กœ


var movego ={}; //movego ๋ผ๋Š” ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋งŒ๋“ ๋‹ค. ๊ฐ์ฒด(์†์„ฑ์„ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ)์ž„.

var movend ={}; //movend ๋ผ๋Š” ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋งŒ๋“ ๋‹ค.

var angle = 0; //angle ์ด๋ผ๋Š” ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋งŒ๋“ ๋‹ค. ์ˆซ์ž๋ฅผ ์ €์žฅํ•œ๋‹ค.

var toward = 0; //toward ๋ผ๋Š” ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋งŒ๋“ ๋‹ค. ์ˆซ์ž๋ฅผ ์ €์žฅํ•œ๋‹ค.


core.rootScene.on('touchstart', function(e){ //๊ฒŒ์ž„ ํ™”๋ฉด์„ ํ„ฐ์น˜ํ• ๋•Œ ์‹คํ–‰ํ•  ๋‚ด์šฉ (์™€ {๊ฐ€ ์—ด๋ ค์žˆ์Œ์„ ์ฃผ์˜


movego.x = e.x; // movego ๊ฐ์ฒด x์†์„ฑ์— e.x (ํ„ฐ์น˜ํ•œ ๊ณณ์˜ x์ขŒํ‘œ)๋ผ๋Š” ๊ฐ’์„ ๋„ฃ๋Š”๋‹ค.

movego.y = e.y; // movego ๊ฐ์ฒด y์†์„ฑ์— e.yย (ํ„ฐ์น˜ํ•œ ๊ณณ์˜ y์ขŒํ‘œ)๋ผ๋Š” ๊ฐ’์„ ๋„ฃ๋Š”๋‹ค.

controller0.moveTo(movego.x -16, movego.y-16); //controller0๋ฅผ ํ•ด๋‹น ์ขŒํ‘œ๋กœ ์ด๋™์‹œํ‚ด

core.rootScene.addChild(controller0); //controller0๋ฅผ ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚ธ๋‹ค

core.rootScene.addChild(controller1); //controller1์„ ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚ธ๋‹ค


}); //core.rootScene.on('touchstart', function(e){ ์˜๊ด„ํ˜ธ๋ฅผ ๋‹ซ๋Š”๋ถ€๋ถ„



core.rootScene.on('touchmove', function(e){ //๊ฒŒ์ž„ ํ™”๋ฉด์— ์†์„ ๋–ผ์ง€ ์•Š์€ ์ƒํƒœ์—์„œ ์›€์ง์ผ ๊ฒฝ์šฐ ์‹คํ–‰ํ•  ๋‚ด์šฉ (์™€ {๊ฐ€ ์—ด๋ ค์žˆ์Œ์„ ์ฃผ์˜


movend.x = e.x; // movend ๊ฐ์ฒด x์†์„ฑ์— e.x (์›€์ง์ธ ๊ณณ์˜ x์ขŒํ‘œ)๋ผ๋Š” ๊ฐ’์„ ๋„ฃ๋Š”๋‹ค.

movend.y = e.y; // movend ๊ฐ์ฒด y์†์„ฑ์— e.x (์›€์ง์ธ ๊ณณ์˜ y์ขŒํ‘œ)๋ผ๋Š” ๊ฐ’์„ ๋„ฃ๋Š”๋‹ค.

angle = Math.atan2(movego.x-movend.x,movego.y-movend.y); //์ฒ˜์Œ ํ„ฐ์น˜ํ•œ ์ ์—์„œ ๋‚˜์ค‘์— ์›€์ง์ธ ์ ๊นŒ์ง€์˜ ๊ฐ๋„๋ฅผ ์ธก์ •ํ•ด์„œ angle์— ์ €์žฅ

if (-0.78539<angle && angle<0.78539) {toward = 1}; //angle์ด -ฯ€/4 ๋ณด๋‹ค ํฌ๊ณ  ฯ€/4๋ณด๋‹ค ์ž‘์„๊ฒฝ์šฐ์—๋Š” toward์— 1์„ ์ €์žฅํ•œ๋‹ค.

if (-2.35619<angle && angle<-0.78539) {toward = 2}; //angle์ด -3ฯ€/4 ๋ณด๋‹ค ํฌ๊ณ  -ฯ€/4๋ณด๋‹ค ์ž‘์„๊ฒฝ์šฐ์—๋Š” toward์— 2๋ฅผ ์ €์žฅํ•œ๋‹ค.

if (0.78539<angle && angle <2.35619) {toward = 3}; //angle์ด ฯ€/4 ๋ณด๋‹ค ํฌ๊ณ  3ฯ€/4๋ณด๋‹ค ์ž‘์„๊ฒฝ์šฐ์—๋Š” toward์— 3์„ ์ €์žฅํ•œ๋‹ค.

if (2.35619<angle && angle<3.14159 || -3.14159<angle && angle<-2.35619) {toward = 4} //angle์ด 3ฯ€/4 ๋ณด๋‹ค ํฌ๊ณ  ฯ€๋ณด๋‹ค ์ž‘์„๊ฒฝ์šฐ ๋˜๋Š” -ฯ€๋ณด๋‹ค ํฌ๊ณ  -3ฯ€/4๋ณด๋‹ค ์ž‘์„ ๊ฒฝ์šฐ์—๋Š” toward์— 4๋ฅผ ์ €์žฅํ•œ๋‹ค.

controller1.moveTo(movend.x-8, movend.y-8); //controller1์„ ํ•ด๋‹น ์ขŒํ‘œ๋กœ ์ด๋™์‹œํ‚ด


}); //core.rootScene.on('touchmove', function(e){ ์˜๊ด„ํ˜ธ๋ฅผ ๋‹ซ๋Š”๋ถ€๋ถ„



core.rootScene.on('touchend', function(e){ //๊ฒŒ์ž„ ํ™”๋ฉด์— ์†์„ ๋–ผ์—ˆ์„๊ฒฝ์šฐ ์‹คํ–‰ํ•  ๋‚ด์šฉ (์™€ {๊ฐ€ ์—ด๋ ค์žˆ์Œ์„ ์ฃผ์˜


toward = 0; // toward์— 0์„ ์ €์žฅํ•œ๋‹ค.

core.rootScene.removeChild(controller0); //controller0์„ ํ™”๋ฉด์—์„œ ์ œ๊ฑฐํ•œ๋‹ค

core.rootScene.removeChild(controller1); //controller0์„ ํ™”๋ฉด์—์„œ ์ œ๊ฑฐํ•œ๋‹ค


}); //core.rootScene.on('touchend', function(e){ ์˜๊ด„ํ˜ธ๋ฅผ ๋‹ซ๋Š”๋ถ€๋ถ„



core.rootScene.on('enterframe', function(){ //๊ฒŒ์ž„์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ํ•ญ์ƒ ์‹คํ–‰ํ•  ๋‚ด์šฉ (์™€ {๊ฐ€ ์—ด๋ ค์žˆ์Œ์„ ์ฃผ์˜


label.text = toward; // label์˜ ๋‚ด์šฉ์„ toward์— ์ €์žฅ๋œ ๊ฐ’์œผ๋กœ ๋ฐ”๊พผ๋‹ค

switch(toward){ //toward ์ €์žฅ๋œ ์ˆซ์ž์— ๋”ฐ๋ผ ์•„๋ž˜์˜ ๋‚ด์šฉ์„ ์‹คํ–‰ํ•˜๋ผ๋Š” ์˜๋ฏธ {๊ฐ€ ์—ด๋ ค์žˆ์Œ์„ ์ฃผ์˜

case 0: break; // toward๊ฐ€ 0์ผ๊ฒฝ์šฐ ์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€ ์•Š๋Š”๋‹ค.

case 1: sprite.frame = [6,6,6,6,7,7,7,7]; //toward๊ฐ€ 1์ผ๊ฒฝ์šฐ sprite์˜ ๊ทธ๋ฆผ๋ฒˆํ˜ธ๋ฅผ ํ•ด๋‹น๋ฒˆํ˜ธ๋กœ ๋ฐ”๊พผ๋‹ค.

if (map.hitTest(sprite.x, sprite.y-1)){sprite.moveBy(0,-1);}; break; //ํ•ด๋‹น ์ขŒํ‘œ์˜ map.hitTest๊ฐ’์ด true๋ผ๋ฉด sprite๋ฅผ ํ•ด๋‹น ์ขŒํ‘œ๋กœ ์ด๋™

case 2: sprite.frame = [2,2,2,2,3,3,3,3]; //toward๊ฐ€ 2์ผ๊ฒฝ์šฐ sprite์˜ ๊ทธ๋ฆผ๋ฒˆํ˜ธ๋ฅผ ํ•ด๋‹น๋ฒˆํ˜ธ๋กœ ๋ฐ”๊พผ๋‹ค

if (map.hitTest(sprite.x+16, sprite.y)){sprite.moveBy(1,0);}; break; //ํ•ด๋‹น ์ขŒํ‘œ์˜ map.hitTest๊ฐ’์ด true๋ผ๋ฉด sprite๋ฅผ ํ•ด๋‹น ์ขŒํ‘œ๋กœ ์ด๋™

case 3: sprite.frame = [4,4,4,4,5,5,5,5]; //toward๊ฐ€ 3์ผ๊ฒฝ์šฐ sprite์˜ ๊ทธ๋ฆผ๋ฒˆํ˜ธ๋ฅผ ํ•ด๋‹น๋ฒˆํ˜ธ๋กœ ๋ฐ”๊พผ๋‹ค

if (map.hitTest(sprite.x-1, sprite.y)){sprite.moveBy(-1,0);}; break;

case 4: sprite.frame = [0,0,0,0,1,1,1,1]; //toward๊ฐ€ 4์ผ๊ฒฝ์šฐ sprite์˜ ๊ทธ๋ฆผ๋ฒˆํ˜ธ๋ฅผ ํ•ด๋‹น๋ฒˆํ˜ธ๋กœ ๋ฐ”๊พผ๋‹ค;

if (map.hitTest(sprite.x, sprite.y+16)){sprite.moveBy(0,1);}; break; //ํ•ด๋‹น ์ขŒํ‘œ์˜ map.hitTest๊ฐ’์ด true๋ผ๋ฉด sprite๋ฅผ ํ•ด๋‹น ์ขŒํ‘œ๋กœ ์ด๋™

}; // switch(toward){ ์˜ ๊ด„ํ˜ธ๋ฅผ ๋‹ซ๋Š” ๋ถ€๋ถ„


}); //core.rootScene.on('enterframe', function(e){ ์˜๊ด„ํ˜ธ๋ฅผ ๋‹ซ๋Š”๋ถ€๋ถ„


core.rootScene.addChild(map);

core.rootScene.addChild(sprite);

core.rootScene.addChild(label); //๋‘๊ฐœ์˜ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ์—ˆ์Œ. ๋ฐ‘์— ์žˆ๋Š”๊ฒŒ ์ œ์ผ ์œ„์— ๋‚˜ํƒ€๋‚˜

};

core.start();

};




์ด๊ธ€์„ ๋ณด๋ฉฐ ๋”ฐ๋ผํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์€


๊ทธ๋ƒฅ ๋ณต์‚ฌ ๋ถ™์—ฌ๋„ฃ๊ธฐ๋งŒ ํ•˜์ง€ ๋ง๊ณ  ํ•ด๋‹น ๋‚ด์šฉ์„ ์ž๊ธฐ ์ž…๋ง›๋Œ€๋กœ ๋ฐ”๊พธ๋ฉด์„œ ์–ด๋–ป๊ฒŒ ๋ฐ”๋€Œ๋Š”์ง€


์ƒˆ๋กœ๊ณ ์นจ์„ ๋ฐ˜๋ณตํ•˜๋ฉด์„œ ํ™•์ธํ•ด๋ณด๋ฉด ์‹ค๋ ฅ์ด ๊ธˆ๋ฐฉ ๋Š˜๊ฑฐ์•ผ


๋ณต์žกํ•ด ๋ณด์—ฌ๋„ ๋œฏ์–ด๋ณด๋ฉด ์ง„์งœ ๋ณ„๊ฑฐ ์—†๋‹ค. ํ™”์ดํŒ…!