백괴슬라이드/플러그인/메인: 두 판 사이의 차이
둘러보기로 이동
검색으로 이동
(Senouis님이 백괴슬라이드/플러그인/메인 문서의 콘텐츠 모델을 "위키텍스트"에서 "자바스크립트"(으)로 바꾸었습니다: JS 코드 인식) |
(JQuery 처리 + 세미콜론 빠진 곳 추가) |
||
7번째 줄: | 7번째 줄: | ||
* PluginX 이식자: [[사:Senouis|Senouis]] | * PluginX 이식자: [[사:Senouis|Senouis]] | ||
*/ | */ | ||
function plugin_uncyslide() { | |||
var slideable = plugin_Slideable(); | var slideable = plugin_Slideable(); | ||
var create = slideable.create; | var create = slideable.create; | ||
12번째 줄: | 13번째 줄: | ||
var dispose = slideable.dispose; | var dispose = slideable.dispose; | ||
var rankingSystem = plugin_RankingSystem()("백괴슬라이드/랭킹", function(prev,next){ return Number(prev.time) - Number(next.time)}); | var rankingSystem = plugin_RankingSystem()("백괴슬라이드/랭킹", function(prev,next){ return Number(prev.time) - Number(next.time);}); | ||
var outputKeys = {time:"소요시간"}; | var outputKeys = {time:"소요시간"}; | ||
var startMap = localStorage.getItem("uncySlide/startmap") || 0; | var startMap = localStorage.getItem("uncySlide/startmap") || 0; | ||
71번째 줄: | 72번째 줄: | ||
main: { | main: { | ||
center: "<ul><li>아래: 게임시작</li><li>토론: 위</li><li>설명: 오른쪽</li></ul>", | center: "<ul><li>아래: 게임시작</li><li>토론: 위</li><li>설명: 오른쪽</li></ul>", | ||
bottom: function(){ execute("start",{count:100,time:Date.now()}) }, | bottom: function(){ execute("start",{count:100,time:Date.now()}); }, | ||
top: "debate", | top: "debate", | ||
right: "i0", | right: "i0", | ||
109번째 줄: | 110번째 줄: | ||
function getColorCode(count,maxcount){ | function getColorCode(count,maxcount){ | ||
var code = "hsl(" + count / maxcount * 360 +",100%,70%)"; | var code = "hsl(" + count / maxcount * 360 +",100%,70%)"; | ||
return code | return code; | ||
} | } | ||
128번째 줄: | 129번째 줄: | ||
var printableTime = overtime.toFixed(2); | var printableTime = overtime.toFixed(2); | ||
$this.find(".counter").html(printableTime + "초"); | $this.find(".counter").html(printableTime + "초"); | ||
},5) | },5); | ||
return "<div class='counter' style='font-size:5vw;'></div><div style='font-size:20vw;'>" + count + "</div>"; | return "<div class='counter' style='font-size:5vw;'></div><div style='font-size:20vw;'>" + count + "</div>"; | ||
137번째 줄: | 138번째 줄: | ||
clearInterval(timerInterval); | clearInterval(timerInterval); | ||
if(count === 1) return execute("result",{count:count - 1,time:time,maxcount:maxcount}); | if(count === 1) return execute("result",{count:count - 1,time:time,maxcount:maxcount}); | ||
execute("start",{count:count - 1,time:time,maxcount:maxcount}) | execute("start",{count:count - 1,time:time,maxcount:maxcount}) ; | ||
}; | }; | ||
149번째 줄: | 150번째 줄: | ||
name: mw.config.get("wgUserName") | name: mw.config.get("wgUserName") | ||
}; | }; | ||
rankingSystem.update(updateParam,function(rankingScore,thisScore){ return rankingScore.time > thisScore.time},outputKeys); | rankingSystem.update(updateParam,function(rankingScore,thisScore){ return rankingScore.time > thisScore.time; },outputKeys); | ||
create({ | create({ | ||
157번째 줄: | 158번째 줄: | ||
}); | }); | ||
} | } | ||
}; | |||
dispose(game, startMap, {}); | |||
} | } | ||
$(plugin_uncyslide); |
2023년 7월 22일 (토) 16:07 판
/*
* PluginX 대응 uncyslide 코드
* 원작자: [[사:BANIP|BANIP]]
* 원 소스코드: [[백괴슬라이드/플러그인]]
* 버전 : 1.1.02
* RecentChange: 백괴게임 토론 문서 링크 -> 리버티게임 토론 문서 링크로 수정
* PluginX 이식자: [[사:Senouis|Senouis]]
*/
function plugin_uncyslide() {
var slideable = plugin_Slideable();
var create = slideable.create;
var execute = slideable.execute;
var dispose = slideable.dispose;
var rankingSystem = plugin_RankingSystem()("백괴슬라이드/랭킹", function(prev,next){ return Number(prev.time) - Number(next.time);});
var outputKeys = {time:"소요시간"};
var startMap = localStorage.getItem("uncySlide/startmap") || 0;
var game = {
0: {
center: "아래로 밀어주세요.",
bottom: 1
},
1: {
center: "오른쪽으로 밀어보세요.",
right: 2
},
2: {
center: "어디로 밀어보실래요?",
top: 3,
bottom: 3,
},
3: {
center: "반갑습니다. <br>백괴슬라이드입니다.",
bottom: 4,
},
4: {
center: "어디로 당기고 미느냐에 따라, 게임의 결과가 달라집니다.",
bottom: 5,
},
5: {
center: "는 개뿔 이겜 시스템만든다고 그런 장황한거 만들 정신머리는 없었습니다",
bottom: 5.1,
},
5.1: {
center: "진심 힘들었습니다.",
bottom: 5.2,
},
5.2: {
center: "잘했죠?",
bottom: 5.3,
},
5.3: {
center: "위로 밀어서 칭찬하거나 아래로 밀어서 욕해주세요.",
top: 5.4,
bottom: 5.5,
},
5.4: {
center: "감사합니다. 헤헤",
bottom: 6,
},
5.5: {
center: "흑흑.. 힘들었는데..",
bottom: 6,
},
6: {
center: "그래도 미디어위키의 틀에서 벗어난 겜인만큼 최대한 나은 경험을 선사하고자 노력했습니다. 잘부탁드립니다.",
bottom: function(){
localStorage.setItem("uncySlide/startmap","main");
execute("main");
},
},
main: {
center: "<ul><li>아래: 게임시작</li><li>토론: 위</li><li>설명: 오른쪽</li></ul>",
bottom: function(){ execute("start",{count:100,time:Date.now()}); },
top: "debate",
right: "i0",
},
i0: {
center:"가장자리에 화살표 보이죠?",
bottom:"i1"
},
i1: {
center:"화면을 넘겨서 드래그해서 진행하는 게임이에요.",
bottom:"i2"
},
i2: {
center:"원래라면 좀 큰 스케일의 게임으로 만들고 싶었는데..",
bottom:"i3"
},
i3: {
center:"제 역량이 겜 크기에서 다 드러나네요...",
bottom:"i4"
},
i4: {
center:"아무쪼록 힘들게 만들었으니 재밌게 즐겨주세요.",
right:"main"
},
debate: function(){
location.href = "https://liberty.banipest.com/index.php/%ED%86%A0%EB%A1%A0:%EB%B0%B1%EA%B4%B4%EC%8A%AC%EB%9D%BC%EC%9D%B4%EB%93%9C";
},
start: function(arg){
function getRandomDirection(){
switch( Math.ceil(Math.random() * 4) ){
case 1: return "top"; break;
case 2: return "bottom"; break;
case 3: return "left"; break;
case 4: return "right"; break;
}
}
function getColorCode(count,maxcount){
var code = "hsl(" + count / maxcount * 360 +",100%,70%)";
return code;
}
var count = arg.count;
var maxcount = arg.maxcount || count;
var time = arg.time;
var $this = $(this);
var timerInterval;
var slideableItem = {
center: function(){
var $this = $(this);
$this.css({
"background": getColorCode(count,maxcount)
});
timerInterval = setInterval(function(){
var overtime = (Date.now() - time) * 0.001;
var printableTime = overtime.toFixed(2);
$this.find(".counter").html(printableTime + "초");
},5);
return "<div class='counter' style='font-size:5vw;'></div><div style='font-size:20vw;'>" + count + "</div>";
}
};
slideableItem[getRandomDirection()] = function(){
clearInterval(timerInterval);
if(count === 1) return execute("result",{count:count - 1,time:time,maxcount:maxcount});
execute("start",{count:count - 1,time:time,maxcount:maxcount}) ;
};
create(slideableItem);
},
result: function(arg){
var maxcount = arg.maxcount || count;
var time = ( (Date.now() - arg.time) / 1000 ).toFixed(2);
var updateParam = {
time: time,
name: mw.config.get("wgUserName")
};
rankingSystem.update(updateParam,function(rankingScore,thisScore){ return rankingScore.time > thisScore.time; },outputKeys);
create({
center: "갯수: " + maxcount + " <br/>시간: " + time + "<ul><li>왼쪽: 메인으로</li><li>오른쪽: 토론으로</li></ul>",
left:"main",
right:"debate",
});
}
};
dispose(game, startMap, {});
}
$(plugin_uncyslide);