asdf-j1
<body bgcolor=black text=white onKeyDown="K=event.keyCode-37">
<tt id=F>
<script>
// オリジナルのJavaScriptコード (関数 R, I, ccc, Y, YY) は変更なし
function R(H){while(D.all["F"+(S=40+Math.ceil(ccc(i)*319))].innerHTML!=C);I(S,H)}
function I(T,H){D.all["F"+T].innerHTML=H}
function ccc(cc){j=j+1;a=Math.sin((cc+0.1+j/100)/24);a=""+a;b=a.slice(-8,-2);a=eval(b)/1000000;return a}
function Y(){if(K+1){M=[-1,0,1,0][K];}Z=P;P=P+M;
X=D.all["F"+P].innerHTML;P2=P+20;XX=D.all["F"+P2].innerHTML;
if(XX==C && M==0){P=P+20;} // M=0 (左右入力なし) なら落下するロジックは残ります
if(X==O || XX==O){alert("GAME OVER SCORE: "+SC*10);return}
if(X==T || XX==T){KY=1;Q="<font color=\"Purple\">●</font>";P=P+20;}
if(X==U || XX==U){if(KY==1){SC++;YY();}else{P=P-20;}}
if(X==W){P=P-M;}
if(X==N || XX==N){P=P-(20*6);while(P<0){P=P+20;}
while(C!=D.all["F"+P].innerHTML){P=P-20;} }
I(Z,C);I(P,Q);K=-1;M=0;ID=setTimeout(Y,100); }
function YY(){D=document;M=0;P=370;S="";K=-1;P2=0;C=" ";
U="<font color=\"Lime\">門</font>";Q="<font color=\"blue\">●</font>";
W="<font color=\"Maroon\">■</font>";N="<font color=\"aqua\">=</font>";
O="<font color=\"white\">*</font>";T="<font color=\"yellow\">ー</font>";
E="<INPUT TYPE=\"button\" VALUE=\"☆\" ONCLICK=\"clearTimeout(ID);YYY()\">";
for(i=0;i<400;i++)
S+=(i%20?"":"<br>")+"<span id=F"+i+">"+((i+1)%20>1&&i<379?C:W)+"</span>";I("",S);
for(i=0;i<51;i++)I(20+Math.ceil(ccc(i)*339),W);for(i=0;i<11;i++)R(N);I(399,E);
for(i=0;i<(2+SC);i++)R(O);for(i=0;i<2;i++)I(Math.ceil(360+ccc(i)*18),N);R(U);R(T);KY=0; }
function YYY(){
j=0;SC=0;
YY();
setupTouchControls(); // タッチコントロールをセットアップ
Y();
}
// ★変更点: ス}ートフォン操作用の{タンをセットアップする関数 (上下{タン削除、左右{タンサイズアップ)
function setupTouchControls() {
let controlsDiv = document.getElementById('touchControls');
if (!controlsDiv) {
controlsDiv = document.createElement('div');
controlsDiv.id = 'touchControls';
controlsDiv.style.position = 'fixed';
controlsDiv.style.bottom = '60px'; // 画面下からの距離を少し調整
controlsDiv.style.left = '50%';
controlsDiv.style.transform = 'translateX(-50%)';
controlsDiv.style.zIndex = '1000';
controlsDiv.style.textAlign = 'center';
// {タンのHTMLを生成 (左右{タンのみ、サイズを大きくする)
controlsDiv.innerHTML = `
<div>
<button id="btnLeft" style="padding: 20px 35px; margin: 10px; font-size: 48px; min-width: 220px;">←</button>
<button id="btnRight" style="padding: 20px 35px; margin: 10px; font-size: 48px; min-width: 220px;">→</button>
</div>
`;
document.body.appendChild(controlsDiv);
}
// 各{タンにクリック(タップ)イベントを設定 (左右{タンのみ)
document.getElementById('btnLeft').onclick = function() { K = 0; }; // K=0: 左
document.getElementById('btnRight').onclick = function() { K = 2; }; // K=2: 右
}
// ゲーム開始
YYY();
</script>
</tt>
</body>
使用変数
<body bgcolor=black text=white onKeyDown="K=event.keyCode-37">
<tt id=F>
<script>
// オリジナルのJavaScriptコード (関数 R, I, ccc, Y, YY) は変更なし
function R(H){while(D.all["F"+(S=40+Math.ceil(ccc(i)*319))].innerHTML!=C);I(S,H)}
function I(T,H){D.all["F"+T].innerHTML=H}
function ccc(cc){j=j+1;a=Math.sin((cc+0.1+j/100)/24);a=""+a;b=a.slice(-8,-2);a=eval(b)/1000000;return a}
function Y(){if(K+1){M=[-1,0,1,0][K];}Z=P;P=P+M;
X=D.all["F"+P].innerHTML;P2=P+20;XX=D.all["F"+P2].innerHTML;
if(XX==C && M==0){P=P+20;} // M=0 (左右入力なし) なら落下するロジックは残ります
if(X==O || XX==O){alert("GAME OVER SCORE: "+SC*10);return}
if(X==T || XX==T){KY=1;Q="<font color=\"Purple\">●</font>";P=P+20;}
if(X==U || XX==U){if(KY==1){SC++;YY();}else{P=P-20;}}
if(X==W){P=P-M;}
if(X==N || XX==N){P=P-(20*6);while(P<0){P=P+20;}
while(C!=D.all["F"+P].innerHTML){P=P-20;} }
I(Z,C);I(P,Q);K=-1;M=0;ID=setTimeout(Y,100); }
function YY(){D=document;M=0;P=370;S="";K=-1;P2=0;C=" ";
U="<font color=\"Lime\">門</font>";Q="<font color=\"blue\">●</font>";
W="<font color=\"Maroon\">■</font>";N="<font color=\"aqua\">=</font>";
O="<font color=\"white\">*</font>";T="<font color=\"yellow\">ー</font>";
E="<INPUT TYPE=\"button\" VALUE=\"☆\" ONCLICK=\"clearTimeout(ID);YYY()\">";
for(i=0;i<400;i++)
S+=(i%20?"":"<br>")+"<span id=F"+i+">"+((i+1)%20>1&&i<379?C:W)+"</span>";I("",S);
for(i=0;i<51;i++)I(20+Math.ceil(ccc(i)*339),W);for(i=0;i<11;i++)R(N);I(399,E);
for(i=0;i<(2+SC);i++)R(O);for(i=0;i<2;i++)I(Math.ceil(360+ccc(i)*18),N);R(U);R(T);KY=0; }
function YYY(){
j=0;SC=0;
YY();
setupTouchControls(); // タッチコントロールをセットアップ
Y();
}
// ★変更点: ス}ートフォン操作用の{タンをセットアップする関数 (上下{タン削除、左右{タンサイズアップ)
function setupTouchControls() {
let controlsDiv = document.getElementById('touchControls');
if (!controlsDiv) {
controlsDiv = document.createElement('div');
controlsDiv.id = 'touchControls';
controlsDiv.style.position = 'fixed';
controlsDiv.style.bottom = '60px'; // 画面下からの距離を少し調整
controlsDiv.style.left = '50%';
controlsDiv.style.transform = 'translateX(-50%)';
controlsDiv.style.zIndex = '1000';
controlsDiv.style.textAlign = 'center';
// {タンのHTMLを生成 (左右{タンのみ、サイズを大きくする)
controlsDiv.innerHTML = `
<div>
<button id="btnLeft" style="padding: 20px 35px; margin: 10px; font-size: 48px; min-width: 220px;">←</button>
<button id="btnRight" style="padding: 20px 35px; margin: 10px; font-size: 48px; min-width: 220px;">→</button>
</div>
`;
document.body.appendChild(controlsDiv);
}
// 各{タンにクリック(タップ)イベントを設定 (左右{タンのみ)
document.getElementById('btnLeft').onclick = function() { K = 0; }; // K=0: 左
document.getElementById('btnRight').onclick = function() { K = 2; }; // K=2: 右
}
// ゲーム開始
YYY();
</script>
</tt>
</body>
使用変数
a | |
b | |
bgcolor | |
bottom | |
C | |
ccc -------( Function ) | |
color | |
controlsDiv | |
D | |
E | |
I -------( Function ) | |
i | |
id | |
ID | |
innerHTML | |
j | |
K | |
KY | |
left | |
M | |
N | |
O | |
ONCLICK | |
onclick | |
onKeyDown | |
P2 | |
P | |
position | |
Q | |
R -------( Function ) | |
S | |
SC | |
setupTouchControls -------( Function ) | |
style | |
T | |
text | |
textAlign | |
transform | |
TYPE | |
U | |
VALUE | |
W | |
X | |
XX | |
Y -------( Function ) | |
YY -------( Function ) | |
YYY -------( Function ) | |
Z | |
zIndex |