비밀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 attack = 20;
var enemySpeed = 1;
var okdLeft = 0;
var okdRight = 0;
var turn = 0
var timer = null;
var donotrun = 0;
var obstacleList = new Array();
var scr = new Array("Error", "<strong><i>(지잉-)</i></strong><br><br>무언가 장전되는 소리가 들렸다. 그리고 다시는 듣고 싶지 않았던 그 소리가 들리기 시작했다.<br><br><strong><i>(투콰콰콰콰-)</i></strong><br><br><strong><i>(깡!) (팅-)</i></strong><br><br>저걸 어떻게 개조한 건진 모르겠지만, 기관총이 계속 나를 향해 공격하고 있었다.<br>저것에 한 대라도 맞는다면... 상상하기도 싫다.", "<i>(틱- 틱-)</i><br><br>기관총이 총알을 전부 쓴 것 같다. 민수는 이정도는 예상했다는 듯이 코웃음을 치며 총알을 장전하고 있었다.<br><br><strong>민수</strong> : 그래, 이래야지... 이래야 죽이는 맛이 좀 나지!<br><br>그리고서는 이전보다 더 빠른 속도로 기관총 총알을 갈기기 시작했다.", "숨이 조금씩 차기 시작한다. 민수도 이 정도까지는 예상하지 못한 것 같다. 당황한 티가 역력했기 때문이다.<br><br><strong>민수</strong> : 뭐 이런 놈이 다 있어... 망할, 최고 속력이다. 이제 죽어라!");
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 nextTurn = function(){
donotrun = 1;
if(timer !== null) 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();
turn++;
if(turn <= 3){
document.getElementById('scr').innerHTML = scr[turn];
setTimeout(function(){
donotrun = 0;
timer = setInterval(drawField, 30);
enemySpeed = 1 - turn * 0.1;
generateObstacles();
}, 7000);
}
else{
window.location = "https://game.uncyclopedia.kr/w/index.php?title=%EB%B9%84%EB%B0%805:_%EC%B5%9C%ED%9B%84/%EC%83%81%ED%99%A916/3%EC%B8%B5/%EB%AF%BC%EC%88%98&offset=128";
}
}
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(425 < obstacleList[i].y && obstacleList[i].y < 479 &&
x-27 < obstacleList[i].x && obstacleList[i].x < x+27){
gameOver();
return;
}
}
};
var generateObstacles = function(){
if(donotrun) return;
console.log(enemySpeed);
var tmp = {
y : 15,
x : Math.random() * 480 + 16
}
obstacleList.push(tmp);
enemySpeed *= 0.98;
if(enemySpeed < 0.4 - turn * 0.05){
setTimeout(nextTurn, 4000);
return;
}
setTimeout(generateObstacles, 400 * enemySpeed);
}
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();
ctx.fillStyle = "red";
ctx.font = "60px Arial";
ctx.textAlign = "center";
ctx.fillText("GAME OVER", 256, 256);
setTimeout(function(){
window.location = "https://game.uncyclopedia.kr/w/index.php?title=%EB%B9%84%EB%B0%805:_%EC%B5%9C%ED%9B%84/%EC%83%81%ED%99%A915/%EC%95%84%EC%A7%80%ED%8A%B8&offset=2";
}, 1000);
}
nextTurn();
}
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>';
}