Little Strange Software

スマホアプリの開発を行う LittleStrangeSoftware のブログです。

【ゲーム案】環状線制覇双六、なんてのを考えてみました【実験】

 どうも!LSSです!!

 

ふと、双六ゲームのアイデアが浮かびました。

 

「山手線みたいな環状線を、双六の出た目の数だけ移動し、止まった駅を”制覇”したとして、全駅制覇したらゴール」

というゲーム。

 

このままだと完全にただの運ゲーなので、実際にゲームとして仕上げるには色々追加要素を入れてゲーム性を持たせる必要があります。

 

が、その前に、

「そんなゲームがあったとして、実際のところ何回ぐらいサイコロを振る事になるんだろう?」

というのが想像つかなくて(もちろん駅の数によっても違ってくるでしょうし)、ちょっと試作してみる事にしました。

 

 

環状線制覇双六(試作)

 

 

サイコロを振る

 

 

 「サイコロを振る」をクリックすると、1~6の出目分、先に進みます。

右端と左端は繋がっています。

26の駅、最初は全て「0」で、止まったところは「1」に変わります。

 

全ての駅が「1」になったらゲームクリア! 

※あくまで試作品なので、見た目がしょぼいのはごめんなさいですw

 

 

このテストスクリプトのコード 

<div id="gamen" style="border-radius: 15px; border: 3px solid #aaccff; padding: 0.6em;"> </div>
<p> </p>
<p><span id="btn" style="border-radius: 5px; border: 6px outset #ffccaa; padding: 0.6em; background-color: #ffccaa; user-select: none;">サイコロを振る</span></p>
<script>// <![CDATA[
btn.addEventListener('click',clk,false);
masu='0'.repeat(26);
gamen.innerHTML=masu;
s=0;
k=0;
d=0;
nuri(s);
gw();
function nuri(a){masu=masu.substr(0,a)+'1'+masu.substr(a+1);}
function clk(e){
e.preventDefault();
d=Math.floor(Math.random()*6+1);
s=(s+d)%masu.length;
k++;
nuri(s);
gw();
}
function gw(){
cnt=0;
for(i=0;i<masu.length;i++){cnt+=parseInt(masu.substr(i,1));}
gamen.innerHTML=k+'ターン'+(d>0?' サイコロ:'+d:'')+'<br/>'+masu.substr(0,s)+'<span style="color:red;">'+masu.substr(s,1)+'</span>'+masu.substr(s+1)+' '+cnt+'/'+masu.length+'制覇';
if(cnt>=masu.length){btn.removeEventListener('click',clk,false);btn.innerHTML='完全制覇しました!!';}
}
// ]]></script>

 

 

試してみたところ…

だいたい、70ターン前後ぐらいでクリアとなるようです。
(とか書きながら、最後にもっかい試したら120ターン超えましたw)

 

理論上の最小ターン数は25ですが、まぁまぁゲームとして成立するかな…?

例えば、「いざという時に使える、移動マス数指定カード」みたいなアイテムがあれば、その分ターン数減らす事もできそうですし、他プレイヤーと競うゲームにするなら、「妨害カード」とかあっても良さそうですねw

 

 

 

作ってて初めて?見つけたCSSプロパティ

自分がこんな感じのJavaScriptゲームを作っていると、よく

「クリックした際に、そこの文字列が選択状態になってしまう」

という現象が起こります。

 

JavaScriptから対策を打つ事もできますが、今回ふとググってみると、

CSSで文字列選択を拒否するプロパティ」

があるようです!

 

「サイコロを振る」ボタンのところに入れてみましたが、

user-select: none;

を入れておくだけで、その該当要素の文字列が選択不可になります!

 

お手軽ですね^^

こういったゲームにも便利ですし、それ以外に普通のブログ記事にも使える場面があるのかも??

 

 

 

ってなとこで、今回はこのへんで!

次回もまた、よろしくお願いします^^