비밀5: 최후/plugin
< 비밀5: 최후
var getUrlParameter = function getUrlParameter(sParam) {
var sPageURL = window.location.search.substring(1),
sURLVariables = sPageURL.split('&'),
sParameterName,
i;
for (i = 0; i < sURLVariables.length; i++) {
sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] === sParam) {
return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]);
}
}
};
if(getUrlParameter('offset') == 127){
var cvs = document.getElementById("cvs");
cvs.innerHTML = ('<canvas id="canvas" width="512" height="512"></canvas>');
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var x = 256;
var speed = 0;
var hp = 100;
var attack = 20;
var enemyAttack = 50;
var enemySpeed = 1;
var okdLeft = 0;
var okdRight = 0;
document.onkeydown = function(event) {
if(event.keyCode == 37) {
if(okdLeft) return;
speed -= 10;
okdLeft = 1;
}
else if(event.keyCode == 39) {
if(okdRight) return;
speed += 10;
okdRight = 1;
}
};
document.onkeyup = function(event) {
console.log(1);
if(event.keyCode == 37) {
speed += 10;
okdLeft = 0;
}
else if(event.keyCode == 39) {
speed -= 10;
okdRight = 0;
}
};
var obstacleList = new Array();
var drawField = function(){
ctx.fillStyle = "black";
ctx.fillRect(0, 0, 512, 512);
ctx.strokeStyle = "white";
ctx.strokeRect(40, 432, 432, 40);
x += speed;
if(x < 60) x = 60;
if(x > 452) x = 452;
ctx.fillStyle = "white";
ctx.beginPath();
ctx.arc(x, 452, 17, 0, 2*Math.PI);
ctx.fill();
ctx.fillStyle = "red";
for(var i=0; i<obstacleList.length; i++){
obstacleList[i].y += 4 * Math.sqrt(1 / enemySpeed);
ctx.fillRect(obstacleList[i].x - 10, obstacleList[i].y - 10, 20, 20);
if(422 < obstacleList[i].y && obstacleList[i].y < 482 &&
x-30 < obstacleList[i].x && obstacleList[i].x < x+30){
gameOver();
return;
}
}
};
var generateObstacles = function(){
console.log(enemySpeed);
var tmp = {
y : 15,
x : Math.random() * 480 + 16
}
obstacleList.push(tmp);
enemySpeed *= 0.99;
if(enemySpeed < 0.01){
ending();
return;
}
setTimeout(generateObstacles, 300);
}
var ending = function(){
}
var timer = setInterval(drawField, 30);
var gameOver = function(){
clearInterval(timer);
ctx.fillStyle = "black";
ctx.fillRect(0, 0, 512, 512);
ctx.strokeStyle = "white";
ctx.strokeRect(40, 432, 432, 40);
x += speed;
if(x < 60) x = 60;
if(x > 452) x = 452;
ctx.fillStyle = "white";
ctx.beginPath();
ctx.arc(x, 452, 17, 0, 2*Math.PI);
ctx.fill();
}
generateObstacles();
}
else if(getUrlParameter('offset') == 146){
var password = {
// private property
_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
// public method for encoding
encode : function (input) {
var output = "";
var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
var i = 0;
input = password._utf8_encode(input);
while (i < input.length) {
chr1 = input.charCodeAt(i++);
chr2 = input.charCodeAt(i++);
chr3 = input.charCodeAt(i++);
enc1 = chr1 >> 2;
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
enc4 = chr3 & 63;
if (isNaN(chr2)) {
enc3 = enc4 = 64;
} else if (isNaN(chr3)) {
enc4 = 64;
}
output = output +
this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
}
return output;
},
// public method for decoding
decode : function (input) {
var output = "";
var chr1, chr2, chr3;
var enc1, enc2, enc3, enc4;
var i = 0;
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
while (i < input.length) {
enc1 = this._keyStr.indexOf(input.charAt(i++));
enc2 = this._keyStr.indexOf(input.charAt(i++));
enc3 = this._keyStr.indexOf(input.charAt(i++));
enc4 = this._keyStr.indexOf(input.charAt(i++));
chr1 = (enc1 << 2) | (enc2 >> 4);
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
chr3 = ((enc3 & 3) << 6) | enc4;
output = output + String.fromCharCode(chr1);
if (enc3 != 64) {
output = output + String.fromCharCode(chr2);
}
if (enc4 != 64) {
output = output + String.fromCharCode(chr3);
}
}
output = password._utf8_decode(output);
return output;
},
// private method for UTF-8 encoding
_utf8_encode : function (string) {
string = string.replace(/\r\n/g,"\n");
var utftext = "";
for (var n = 0; n < string.length; n++) {
var c = string.charCodeAt(n);
if (c < 128) {
utftext += String.fromCharCode(c);
}
else if((c > 127) && (c < 2048)) {
utftext += String.fromCharCode((c >> 6) | 192);
utftext += String.fromCharCode((c & 63) | 128);
}
else {
utftext += String.fromCharCode((c >> 12) | 224);
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
utftext += String.fromCharCode((c & 63) | 128);
}
}
return utftext;
},
// private method for UTF-8 decoding
_utf8_decode : function (utftext) {
var string = "";
var i = 0;
var c = c1 = c2 = 0;
while ( i < utftext.length ) {
c = utftext.charCodeAt(i);
if (c < 128) {
string += String.fromCharCode(c);
i++;
}
else if((c > 191) && (c < 224)) {
c2 = utftext.charCodeAt(i+1);
string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
i += 2;
}
else {
c2 = utftext.charCodeAt(i+1);
c3 = utftext.charCodeAt(i+2);
string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
i += 3;
}
}
return string;
}
}
// 출처: 스프링연구소(spring-lab)
document.getElementById(atob('cHQtbXl0YWxr')).innerHTML = atob('PGEgaHJlZj0iaHR0cHM6Ly9nYW1lLnVuY3ljbG9wZWRpYS5rci93L2luZGV4LnBocD90aXRsZT0lRUIlQjklODQlRUIlQjAlODA1Ol8lRUMlQjUlOUMlRUQlOUIlODQvJUVDJTgzJTgxJUVEJTk5JUE5MTYvMyVFQyVCOCVCNS8lRUIlQUYlQkMlRUMlODglOTgmb2Zmc2V0PTE0Ni4xIj4=') + password.decode('7Yag66Gg') + '</a>';
}