์ด๋ฒ์๋ ์ด๊ฐ๋จ ์์ดํ ํ๋์ด๋ ๋ชฌ์คํฐ๋ ์ ํฌ๋ฅผ ๊ตฌํํด๋ด
http://aaaga.dothome.co.kr/rpg2/index.html
์ด๋ฒ ์์ ๊ฒฐ๊ณผ๋ฌผ์ ์ฌ๊ธฐ๋ฅผ ํด๋ฆญํ๋ฉด ๋ณผ์ ์์
๋๊ฐ์ด ๋ณ๊ฒฝ๋ ๋ถ๋ถ์ ๋นจ๊ฐ๊ฒ ํ์ํด์ ์ค๋ช ํด ์ค๊ฒ
enchant();
window.onload = function(){
var winsize = window.innerWidth/window.innerHeight;
var core = new Core(160*winsize.toFixed(2), 160);
core.preload ('img.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];
var controller0 = new Sprite(32, 32);
controller0.backgroundColor = 'black';
controller0.opacity = 0.2;
var controller1 = new Sprite(16, 16);
controller1.backgroundColor = 'black';
controller1.opacity = 0.3;
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,0,0,0,0,0,0,0,0,0],
[0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0],
[0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0],
[0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0],
[0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0],
[0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0],
[0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0],
[0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0],
[0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0],
[0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0],
[0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0],
[0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0],
[0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0],
[0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0],
[0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0],
[0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0],
[0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0],
[0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0],
[0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]);ย
map.collisionData = [
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0],
[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0],
[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0],
[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0],
[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0],
[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0],
[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0],
[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0],
[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0],
[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0],
[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0],
[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0],
[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0],
[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0],
[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0],
[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0],
[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0],
[0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]];
var movego ={};
var movend ={};
var angle = 0;
var toward = 0;
var tox = 0;ย
var toy = 0;
var item = {count: 0};ย //item์ด๋ผ๋ ์ค๋ธ์ ํธ๋ฅผ ๋ง๋ค๊ณ ๊ทธ์์ count์์ฑ์ ์ถ๊ฐ
var mon = {}; // mon์ด๋ผ๋ ์ค๋ธ์ ํธ๋ฅผ ๋ง๋ฌ. ์์ฑ์ ๊ฐ์ง๊ณ ์์.
var hp = 10; // hp๋ผ๋ ์ค๋ธ์ ํธ์ ์ซ์๋ฅผ ์ ๋ ฅํจ ์ด๊ธฐ๊ฐ์ 10
var box0 = new Sprite(16, 16); //box0 ์ด๋ผ๋ ์ค๋ธ์ ํธ๋ฅผ ์์ฑ ๊ทธ๋ฆผ์ ์ฌ์ด์ฆ๋ 16.16
box0.image = core.assets['map.png']; //box0์ ํ์ผ์ ์ง์
box0.frame =23; // box0์ ๊ทธ๋ฆผ๋ฒํธ๋ฅผ ์ง์
box0.moveTo (80, 80); //box0์ ์์น๋ฅผ ์ง์
var box1 = new Sprite(16, 16); //box1 ์ด๋ผ๋ ์ค๋ธ์ ํธ๋ฅผ ์์ฑ ๊ทธ๋ฆผ์ ์ฌ์ด์ฆ๋ 16.16
box1.image = core.assets['map.png']; //box1์ ํ์ผ์ ์ง์
box1.frame =23; // box1์ ๊ทธ๋ฆผ๋ฒํธ๋ฅผ ์ง์
box1.moveTo (160, 160);ย //box1์ ์์น๋ฅผ ์ง์
var mon0 = new Sprite(16, 16); //mon0 ์ด๋ผ๋ ์ค๋ธ์ ํธ๋ฅผ ์์ฑ ๊ทธ๋ฆผ์ ์ฌ์ด์ฆ๋ 16.16
mon0.image = core.assets['img.png']; //mon0์ ํ์ผ์ ์ง์
mon0.frame =[16,16,17,17,18,18]; // mon0์ ๊ทธ๋ฆผ๋ฒํธ๋ฅผ ์ง์
mon0.moveTo (192, 80);ย //mon0์ ์์น๋ฅผ ์ง์
var mon1 = new Sprite(16, 16); //mon1 ์ด๋ผ๋ ์ค๋ธ์ ํธ๋ฅผ ์์ฑ ๊ทธ๋ฆผ์ ์ฌ์ด์ฆ๋ 16.16
mon1.image = core.assets['img.png']; //mon1์ ํ์ผ์ ์ง์
mon1.frame =[16,16,17,17,18,18]; // mon1์ ๊ทธ๋ฆผ๋ฒํธ๋ฅผ ์ง์
mon1.moveTo (64, 192);ย //mon1์ ์์น๋ฅผ ์ง์
core.rootScene.on('touchstart', function(e){
movego.x = e.x;
movego.y = e.y;
core.rootScene.addChild(controller0);
core.rootScene.addChild(controller1);
});
core.rootScene.on('touchmove', function(e){
movend.x = e.x;
movend.y = e.y;
angle = Math.atan2(movego.x-movend.x,movego.y-movend.y);
if (-0.78539<angle && angle<0.78539) {toward = 1};
if (-2.35619<angle && angle<-0.78539) {toward = 2};
if (0.78539<angle && angle <2.35619) {toward = 3};
if (2.35619<angle && angle<3.14159 || -3.14159<angle && angle<-2.35619) {toward = 4}
});
core.rootScene.on('touchend', function(e){
toward = 0;
core.rootScene.removeChild(controller0);
core.rootScene.removeChild(controller1);
});
core.rootScene.on('enterframe', function(){
label.text = '์์ดํ ' + item.count + '๊ฐ' +'<br>์ฒด๋ ฅ '+hp; //label์ ํ ์คํธ ๋ด์ฉ์ ํด๋น ๋ด์ฉ์ผ๋ก ๋ณ๊ฒฝ
switch(toward){
case 0: break;
case 1: sprite.frame = [6,6,6,6,7,7,7,7];
if (map.hitTest(sprite.x, sprite.y-1)){sprite.moveBy(0,-1);}; break;
case 2: sprite.frame = [2,2,2,2,3,3,3,3];
if (map.hitTest(sprite.x+16, sprite.y)){sprite.moveBy(1,0);}; break;
case 3: sprite.frame = [4,4,4,4,5,5,5,5];
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];
if (map.hitTest(sprite.x, sprite.y+16)){sprite.moveBy(0,1);}; break;
};
tox = Math.min((core.width) / 2 - sprite.x, 0);ย
toy = Math.min((core.height) / 2 - sprite.y, 0);ย
tox = Math.max(core.width, tox + map.width) - map.width;ย
toy = Math.max(core.height, toy + map.height) - map.height;ย
core.rootScene.x = tox;ย
core.rootScene.y = toy;ย
controller0.moveTo(-tox +movego.x -16,-toy + movego.y-16);
controller1.moveTo(-tox +movend.x-8, -toy + movend.y-8);
label.moveTo(-core.rootScene.x, -core.rootScene.y) //label์ด ๊ฒ์ํ๋ฉด์ ๋ฐ๋ผ์ค๊ฒ ์ค์
if(box0.x-16 <= sprite.x && sprite.x <box0.x+16 && box0.y-16 <= sprite.y && sprite.y <box0.y+16){ //sprite์ ์ขํ๊ฐ ์ง์ ๋ ์์น์ ์ฌ ๊ฒฝ์ฐ {}์์ ๋ด์ฉ์ ์คํํจ {๊ฐ ์ด๋ ค์๋๊ฒ์ ์ฃผ์
if(!item.box0){ //item.box0์ด๋ผ๋ ๊ฐ์ด ์ง์ ๋์ง ์์์๋ {}์์ ๋ด์ฉ์ ์คํ {๊ฐ ์ด๋ ค์๋๊ฒ์ ์ฃผ์
item.count++ // item.count ๊ฐ์ 1๋ํ๋ค
item.box0 =1; // item.box0์ 1์ด๋ผ๋ ๊ฐ์ ์ ๋ ฅํ๋ค.
core.rootScene.removeChild(box0); //box0์ ๋ณด์ด์ง ์๊ฒ ํ๋ค.
}; //if(!item.box0){๋ฅผ ๋ซ๋ ๊ดํธ
}; //if(box0.x-16...box0.y+16){ ๋ฅผ ๋ซ๋ ๊ดํธ
if(box1.x-16 <= sprite.x && sprite.x <box1.x+16 && box1.y-16 <= sprite.y && sprite.y <box1.y+16){ //sprite์ ์ขํ๊ฐ ์ง์ ๋ ์์น์ ์ฌ ๊ฒฝ์ฐ {}์์ ๋ด์ฉ์ ์คํํจ {๊ฐ ์ด๋ ค์๋๊ฒ์ ์ฃผ์
if(!item.box1){ //item.box1์ด๋ผ๋ ๊ฐ์ด ์ง์ ๋์ง ์์์๋ {}์์ ๋ด์ฉ์ ์คํ {๊ฐ ์ด๋ ค์๋๊ฒ์ ์ฃผ์
item.count++ // item.count ๊ฐ์ 1๋ํ๋ค
item.box1 =1; // item.box1์ 1์ด๋ผ๋ ๊ฐ์ ์ ๋ ฅํ๋ค.
core.rootScene.removeChild(box1); //box1์ ๋ณด์ด์ง ์๊ฒ ํ๋ค.
};ย //if(!item.box1){๋ฅผ ๋ซ๋ ๊ดํธ
}; //if(box1.x-16...box1.y+16){ ๋ฅผ ๋ซ๋ ๊ดํธ
if(mon0.x-16 <= sprite.x && sprite.x <mon0.x+16 && mon0.y-16 <= sprite.y && sprite.y <mon0.y+16){ //sprite์ ์ขํ๊ฐ ์ง์ ๋ ์์น์ ์ฌ ๊ฒฝ์ฐ {}์์ ๋ด์ฉ์ ์คํํจ {๊ฐ ์ด๋ ค์๋๊ฒ์ ์ฃผ์
if(!mon.mon0){ย //mon.mon0์ด๋ผ๋ ๊ฐ์ด ์ง์ ๋์ง ์์์๋ {}์์ ๋ด์ฉ์ ์คํ {๊ฐ ์ด๋ ค์๋๊ฒ์ ์ฃผ์
if(Math.random()>0.2){hp --;} // ๋๋ค์ผ๋ก ์์ฑํ ์๊ฐ 0.2๋ณด๋ค ํด๊ฒฝ์ฐ hp๋ฅผ 1์ค์ธ๋ค
if(Math.random()<=0.2){ //๋๋ค์ผ๋ก ์์ฑํ ์๊ฐ 0.2๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์๊ฒฝ์ฐ {}์์ ๋ด์ฉ์ ์คํ. {๊ฐ ์ด๋ ค์์์ ์ฃผ์
mon.mon0 =1; //mon.mon0์ 1์ด๋ผ๋ ๊ฐ์ ์ ๋ ฅํ๋ค.
core.rootScene.removeChild(mon0); //mon0์ ๋ณด์ด์ง ์๊ฒ ํ๋ค.
}; //if(Math.random()<=0.2){ ๋ฅผ ๋ซ๋ ๊ดํธ
}; // if(!mon.mon0){ ๋ฅผ ๋ซ๋ ๊ดํธ
}; //if(mon0.x-16...mon0.y+16){์ ๋ซ๋ ๊ดํธย
if(mon1.x-16 <= sprite.x && sprite.x <mon1.x+16 && mon1.y-16 <= sprite.y && sprite.y <mon1.y+16){ //sprite์ ์ขํ๊ฐ ์ง์ ๋ ์์น์ ์ฌ ๊ฒฝ์ฐ {}์์ ๋ด์ฉ์ ์คํํจ {๊ฐ ์ด๋ ค์๋๊ฒ์ ์ฃผ์
if(!mon.mon1){ย //mon.mon1์ด๋ผ๋ ๊ฐ์ด ์ง์ ๋์ง ์์์๋ {}์์ ๋ด์ฉ์ ์คํ {๊ฐ ์ด๋ ค์๋๊ฒ์ ์ฃผ์
if(Math.random()>0.2){hp --;} // ๋๋ค์ผ๋ก ์์ฑํ ์๊ฐ 0.2๋ณด๋ค ํด๊ฒฝ์ฐ hp๋ฅผ 1์ค์ธ๋ค
if(Math.random()<=0.2){ย //๋๋ค์ผ๋ก ์์ฑํ ์๊ฐ 0.2๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์๊ฒฝ์ฐ {}์์ ๋ด์ฉ์ ์คํ. {๊ฐ ์ด๋ ค์์์ ์ฃผ์
mon.mon1 =1; //mon.mon1์ 1์ด๋ผ๋ ๊ฐ์ ์ ๋ ฅํ๋ค.
core.rootScene.removeChild(mon1); //mon1์ ๋ณด์ด์ง ์๊ฒ ํ๋ค
}; //if(Math.random()<=0.2){ ๋ฅผ ๋ซ๋ ๊ดํธ
}; // if(!mon.mon1){ ๋ฅผ ๋ซ๋ ๊ดํธ
}; //if(mon1.x-16...mon1.y+16){์ ๋ซ๋ ๊ดํธย
});
core.rootScene.addChild(map);
core.rootScene.addChild(box0); //box0์ ํ๋ฉด์ ๋ํ๋ธ๋ค
core.rootScene.addChild(box1); //box1์ ํ๋ฉด์ ๋ํ๋ธ๋ค
core.rootScene.addChild(mon0); //mon0์ ํ๋ฉด์ ๋ํ๋ธ๋ค
core.rootScene.addChild(mon1); //mon1์ ํ๋ฉด์ ๋ํ๋ธ๋ค
core.rootScene.addChild(sprite);
core.rootScene.addChild(label);
};
core.start();
};
์ด๋ ๊ฒ ์์ฃผ ๊ฐ๋จํ rpg ๊ฒ์์ ๋ง๋ค์ด ๋ดค์ด ใ
ใ
ใ
ใ
์ ๋ถ ๋คํด์ 200์ค๋ ์๋๋ ์์ฃผ ๊ฐ๋จํ ๊ตฌ์กฐ์
์ง๊ธ๊น์ง์ ๊ธ์ ๋ณด๊ณ ๋ฐ๋ผํ ์ฌ๋์ ์๋ง ์์ฉํด์ ์ฌ๋ฌ๊ฐ์ง ๋ค๋ฅด๊ฒ ๋ง๋ค์ด ๋ณผ์ ์์๊ฑฐ์ผ
ํน์๋ผ๋ ๊ถ๊ธํ์ ์ด ์์ผ๋ฉด 1๋ฒ๊ธ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ค์ด๋ฐ์์ผ๋ฉด ๊ทธ์์ text๋ผ๋ ํด๋๊ฐ ์๋๋ฐ
๊ฑฐ๊ธฐ์ ์ค๋ช ์๊ฐ ์์ผ๋ ํ์ํ๊ฑธ ์ฐพ์๋ณด๋๋ก ํ๊ณ
๊ตฌ๊ธ์๋ ์์ฃผ ์ ์ง๋ง enchant.js ๊ด๋ จ ๋ฌธ์๊ฐ ์์ผ๋ ์ฐธ์กฐํด๋ณด๋๊ฒ๋ ์ข์๊ฑฐ ๊ฐ์
๋ค์์๋ ์ด๋ ๊ฒ ๋ง๋ค์ด์ง htmlํ์ผ์ apk๋ก ๋ง๋ค์ด์ ์ค๋งํธํฐ์ ์ค์นํ๋๋ฒ์ ์ธ๊ฑฐ ๊ฐ์
์ฝ๋๊ฐ ์ด๊ฑด ์ง์ง ์๋ ๊ฒ์์์ง ์๋ ์์ ์ ๊ฐ๋ฐํ๋ ๋ฐฉ์์ด๋ค
๋ ๊น๋ํ๊ฒ๋ ์ถฉ๋ถํ ๋ ํ ๋ฐ ๋ด๊ฐ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ ๋ชจ๋ฆ