<html> <script language="JavaScript"> dramreset(); function dramreset() { function dramstop(btn) { |
アイデアを出して、改良してみましょう。 ・得点を大きくしたい。 このようなことをしたいと思います。 |
ここからは変更のない部分は省略して表示することがあります。追記や変更は赤、場所の移動は青です。
(省略) function dramstop(btn) { (省略) |
【改良点:スロットの得点を増やす】 得点は、変数rから取っていました。ということは、これを10倍にすれば良いことが判ります。 dramstop()を見ると、1行目で変数rを取り出していますので、これより下でないといけないことが判ります。
|
(省略) <script language="JavaScript"> dramreset(); function dramreset() { function dramstop(btn) { |
【改良点:スロットの役で得点を加算する】 同じ絵柄がそろったら更に得点を増やしましょう。ここでは乱数から得た数値を20倍にして足しています。 まず、準備段階として、3つの出目が同じ絵柄かどうかを調べるために記録を残しておく必要があります。
次に、dramstop()の中で出目の記録を行います。 そして、表示の前にif文を使って、3つの出目が同じかどうか確認しています。
|
【if文について】
書式:if (条件式) {真の場合の命令文} else {偽の場合の命令文}
if文は、条件式に応じて処理をするかどうか判断するために使います。
例えば、くじ引きのように当たりが出たら「おめでとう」と表示するとか、すごろくでコマが50マス進んだらゴールだという場合に判断が必要です。
与えられた条件が満たされていたり、正しい場合を真(しん)と言います。そうでない場合が偽(ぎ)です。
else以降は省略される場合があります。
判断をするための条件式にはいくつかの種類があります。「==」は、2つのデータが同じかどうかを調べます。同じならば真、同じでなければ偽になります。例えば「a == b」のように2つのデータを比較します。データは文字列でも数値でもかまいません。
また、「>」や「<」のように数値を比べて、大きいか小さいかを判断することもあります。これもはい、いいえと同じように真と偽になります。例えば「a > b」なら、aよりbが大きいという条件ですから、a=3でb=2なら真、a=2でb=3なら偽となります。もし、a=2でb=2ならどうでしょうか。これも偽になります。
「>=」ならば2つの数字が同じときも真になります。「<=」もあります。
「!=」という式もあります。これは2つが同じでない(異なる)ときに真となります。「==」の逆ということです。
2つ以上の条件を比べる場合、「&&」や「||」を使います。各条件は()でくくります。
「&&」は、条件を同時に満たす必要があります。すべての条件が真でなければいけません。ところが「||」はどれか1つの条件が真ならば、全体として真となります。
<form name="slot"> |
【改良点:テーブルに色を着ける】 テーブルの背景に色を着けるには「bgcolor」を使います。 ・<table>内だとテーブル全体。 また優先順位もあり、上の順番に色が塗られて、最後の色が上になって見えます。 【改良点:文字に色を着ける】 文字に色を着ける場合は、<font>タグとcolorオプションを使います。
|
(省略) <script language="JavaScript"> dramreset(); (省略) |
【改良点:スロットの絵柄に色を着ける】 スロットの絵柄は配列変数imgで用意していました。 このとき、注意しなければいけないことがあります。
見やすくするため、改行してあるが、imgは1行で記入します。 |
(省略) <script language="JavaScript"> dramreset(); (省略) |
【改良点:スロットの絵柄を画像にする(1)】 絵柄の記号に替えて画像を使ってみましょう。 下の動物から好きな画像を6つ選んでください。
|
(省略) <script language="JavaScript"> dramreset(); function dramreset() { function dramstop(btn) { (省略) |
【改良点:スロットの絵柄を画像にする(2)】 配列変数imgにタグを直接書かないで、ファイル名だけを書く方法もあります。 画像の数が増えたときや、ファイル名の前にフォルダ名が付くときなど、初期設定が長くなってしまうときに見やすくなります。 今回はこれは使わずに(1)から続けます。 |
(省略) <script language="JavaScript"> dramreset(); function dramreset() { function dramstop(btn) { (省略) |
【改良点:同じ処理を繰り返す】 機能的な違いはないのですが、同じ処理を繰り返す部分をまとめて書き直したいと思います。 dramreset()の中で表示の初期化が3行、ボタンの初期化が3行あります。
繰り返し処理には、for文を使います。
|
【for文について】
書式:for (初期値; 比較式; 増分) {繰り返したい命令文}
任意の変数を使って初期値を設定します。比較式には、その変数の値を比べて条件が真のときに命令文を実行します。増分には、命令文実行の後に、変数に変化を与えます。
例えば、for (i=0; i<5; i++) ならば、変数iは0から始まり、5より小さい間、1ずつ増える、ということになります。変数iは0から4までの間の5回、処理を繰り返すことになります。
また、実行命令中で変数iを使う必要はありません。ただ繰り返すだけの場合もあれば、変数iの変化を利用する場合もあります。
(省略) <hr> <script language="JavaScript"> dramreset(); function dramreset() { (省略) |
【改良点:出目と得点を記録する】 これまでの出目と得点を履歴として記録して表示したいと思います。 まずは、<div>タグを使って、「rireki」という表示場所を作ります。 次に、スクリプトの初期設定で、履歴を記録するために変数rrkを用意します。出目を絵柄(<img>タグ)で記録します。 履歴を表示するタイミングは、リセットボタンを押した時にしたいので、dramreset()内にプログラムを書きます。 まず、 3つの出目は配列変数kirokuに数値で記録されていますので、それを取り出します。 for文が終わってから、3つの出目の後に得点を付け足します。<br>タグは改行の意味です。 あとは、そのまま画面に出力してやれば、履歴として見ることができます。 |
(省略) <script language="JavaScript"> dramreset(); function dramreset() { (省略) |
【問題点:最初に履歴が表示される】 ここで実行してみると、大変な問題点があることが判ります。 そこで、これを制御するためにもう1つの変数を利用します。 「if (rrk_num > 0)」という条件文を使います。 |
(省略) function dramreset() { (省略) |
【問題点:履歴の順番を逆順にしたい】 履歴が増えていくと、とても不便なことが起こります。 履歴の順番を逆にして、新しい履歴が上になった方が変化が目について良くなります。 そこで、まずdramreset()に変数sを用意します。
次に、1つ目のif文の中で変数rrkに出目を取り込んでいましたが、これを変数sで受け取ります。 更に、2つ目のif文では、変数sを得点の前に置いて新しい履歴を作っています。その後ろに前回までの履歴が入った変数rrkを付け足していて、これが新しい履歴になります。 このように変数sを使うことで、表示の直前に順番を決めることができるようになりました。 |
(省略) function dramreset() { (省略) |
【改良点:履歴の縦列を綺麗に揃えたい】 履歴はうまく表示できるようになりました。ここまで来ると、あと1つやりたいことがでてきました。 そこで、整列させるためにテーブルを使いたいと思います。 履歴を変数rrkに入れるところに、タグを足していきます。 表示のときに履歴を全体を<table></table>で囲むことで、全体を1つのテーブルにすることができます。 |
【完成】
見た目の改良がほとんどできあがりました。普通に遊ぶにはもうこれで十分と言えます。
ただ、他の人に遊んでもらおうと思うと、まだ少し手直しをしておいた方が良い部分もあります。あまりにも細かいところの手直しも含めて次回にやっていきたいと思います。