PHP で作成する 30 種類のゲーム・スクリプト: 第 3 回 10 種類の高度なスクリプトを作成する

PHP は、使いやすく、容易に学ぶことができ、そして幅広く利用できるプログラミング言語です。PHP は、あらゆる種類のゲームに役立つ簡単なスクリプトを作成するのに非常に適しています。紙と鉛筆を使った単純なゲームを 1 人でする場合であれ、複雑なテーブルトーク RPG を何人かのグループでする場合であれ、はたまたどのような種類のオンライン・ゲームをする場合であれ、このシリーズは皆さんにとって何らかの役に立つはずです。この記事は「PHP で作成する 30 種類のゲーム・スクリプト」シリーズの第 1 回と第 2 回の記事を基に、さまざまなタイプのゲームに使用できる 10 種類の優れたスクリプトについて説明します。これらは在庫管理システムやメモを取るためのスクリプト、単語ゲームのスクリプト、画像操作のスクリプト、そしてキノ (Keno) などのゲームのスクリプトです。

Duane O'Brien, PHP developer, 自由职业者

Duane O'Brien はゲーム Oregon Trail がテキストのみで構成されていた頃から、万能な技術者として活躍しています。彼の好きな食べ物は寿司です。彼はまだ月に行ったことがありません。



2008年 12月 02日

この記事では PHP スクリプトの対話性を扱いながら、テーブルトーク RPG 用の在庫管理システムとメモを取るためのスクリプトを作成します。また PHP による画像操作の手始めとして、画像ベースの ID カードを生成するスクリプトを作成します。さらに、複雑な PHP ロジックをいくつか練習できるように、ポーカーのハンドを評価するスクリプトとスロット・マシン生成スクリプト、そしてカジノ銀行のスクリプトを作成します。そして最後に、アナグラムを生成するスクリプトや暗号解読プログラムなどを作成することで、単語ゲームのスクリプトをさらに一歩進めた複雑なロジックを処理する方法を学びます。

これらのスクリプトは第 1 回第 2 回で紹介したスクリプトよりもはるかに複雑なことを行うため、少し難しくなっています。コード・アーカイブには、ここで説明する各スクリプトの完全なソース・コードが含まれており、そうしたスクリプトの実際は http://chaoticneutral.net/3d10 で見ることができます。

第 1 回第 2 回と同様、この記事でも駆け足で上記のスクリプトを説明します。まだ第 1 回と第 2 回を読んでいない方は、この記事を読む前に 2 つの記事を読む必要があります。

基本的な在庫管理システム

キャラクターのステータスを管理するスクリプトを既に作成したので、このスクリプトをさらに一歩進め、基本的な在庫管理の機能を少しばかり追加してみましょう。このスクリプトを使用して、残弾数、使ったたいまつの数、発見したアイテムなどを追跡できるようにします (リスト 1)。ここでは、これまでに発見したすべてのアイテムを配置するのではなく、アイテムの名前とアイテムの個数を入力するための 2 つのフィールドを作成します <input name='newitem' /> <input name='newcount' />。そして、このスクリプトがサブミットされると、新しいアイテムが在庫配列に追加され、在庫配列と共にキャラクター・シートが保存されるようにします。次に在庫配列を調べ、アイテムを保持するための新しい入力フィールドを作成します。

リスト 1. 基本的な在庫管理の機能を追加する
foreach ($character['inventory'] as $name => $count) {
    echo $name . " : <input name='inventory[" . $name . "]' value='" .
$count . "' /><br />";
}

これらの入力名は奇妙に思えるかもしれませんが、このように構成すると PHP は名前と値のペアを備えた「在庫」配列を自動的に作成してくれるのです。スクリプト・アーカイブを見ると、このスクリプトがどのように作られているかを理解できるはずです。


単純なメモ用スクリプト

テーブルトーク RPG をプレイする際には、ちょっとしたメモを書き留められると便利です。ただし重要な部分を書き留めた場所がわからないと、メモはあまり役に立ちません。ゲーム用のメモの保存と発見に役立つスクリプトを作成しましょう。

メモを取るために必要なフォーム・フィールドは 2 つのみです <input name='title' /> <br /> <textarea name='body'> <br />

キャラクター・シートの場合と同様、メモは配列に追加され、シリアライズされて、テキスト・ファイルに保存されます。メモを保存する際には、単語群についての分析が行われるようにします。また、単語数も同じテキスト・ファイルに保存されます。これを簡単に行うためには、(分析のみを目的として) 文字、数字、空白以外のものをすべて削除し、メモ全体を小文字にします $analyze = preg_replace('/[^0-9a-z\s]/', '', strtolower($_POST['body']));。次に空白で区切り、各単語に対するメモの ID を単語数配列の中に入れます。(訳注: ここで説明している手順はリスト 2 とは若干異なります)

リスト 2. ゲーム用のメモの保存と発見に役立つスクリプト
$noteid = count($masternotes);
$masternotes[] = array('title' => htmlentities($_POST['title']), 
        'body' => htmlentities($_POST['body']));
$words = preg_split('/\s/', $note['body'] . ' ' . $note['title']);
foreach ($words as $word) {
    $word = preg_replace('/[^0-9a-z]/', '', strtolower($word));
    if (!in_array($word, $ignore_these_words)) {
        if (isset($counts[$word])) {
                $counts[$word][$noteid] = $noteid;
        } else {
            $counts[$word] = array($noteid => $noteid);
        }
    }
}

個々のメモを取得する方法や、キーワードに一致するメモを取得する方法は、テスト・スクリプトを試してみるか、あるいはコード・アーカイブを見ると理解できるはずです。


ID カード生成スクリプト

最近のゲームをプレイするのであれば、キャラクター用の実際の ID カードを持っていると友人に自慢することができ、またゲームの現実味が増します。ここでは、ラミネートするのに適した ID カード用の画像を作成できる画像操作コードを PHP で作成します。まず、未記入の ID カードに使用できる基本画像が必要です。ここでは例として、あまり洗練されていませんが、私が作成した次のような未記入の ID カードを使います。

図 1. 未記入の ID カードの例
未記入の ID カードの例

ID カードの各フィールド (Name (名前)、Auth (権限)、Home (住所)、Born (生年月日)、Hair (髪の色)、Eyes (瞳の色)) を収集するための基本となるフォームが必要です。次に、これらの値をストリングとして画像の中に埋め込む必要があります。この作業では文字列の開始位置と終了位置を決める必要があるため、試行錯誤が必要です imagettftext ( $img , 40 , 0 , 600 , 200 , 0 , "tarzeau_-_OCR-A", $_POST['name'] );。すべてが適切に行われると、フォームのすべてのフィールドが埋められ、図 2 のような ID カードができあがるはずです。

図 2. フィールドが埋められた ID カードの例
フィールドが埋められた ID カードの例

ここで指定されたフォントはコード・アーカイブに含まれており、ソースの画像は 300 DPI です。一部のシステムではフォントと ID カードをうまく組み合わせることが難しいかもしれませんが、スクリプト・アーカイブのソースには問題が起こりそうな部分を明示してあります。


タイル・ベースの地図生成スクリプト

初期のコンピューター・ゲームはタイルを使ってゲーム用の地図を作成していました。それと同様のタイルを使った基本的な方法は、現在も一部で使われています。このセクションでは、基本的な地図を生成するためのスクリプトを作成しましょう。この地図はあまり大きなものではありませんが、同じ原理を使うことで、細かな部分がさまざまに異なる大きな地図を作成することもできます。まず、いくつかの異なる地勢タイプを作成し、次に各地勢タイプを表現する非常に基本的な地図タイルを作成します。

図 3. 基本的な地勢タイプ
基本的な地勢タイプ

基本的な地勢タイプが用意できたら、次はご想像のとおり、上図の各行に対する地図タイルの配列を作成します。しかし単に地勢タイプをランダムに選択して配列に入れるだけでは、あまりよい結果は得られません。

では、20 個のタイルで構成される地図を作成しましょう。地勢タイプを選択する際には、周囲のタイルを考慮した上で決定します。既知のタイルのうち、最も近くにある 4 個のタイルを調べます (現在の行の最後のタイルと、現在のタイルのすぐ上にある 3 個のタイル)。地勢の生成方法の決定ルールを複雑に設定することもできますが、とりあえず単純なものから始めましょう。そこで、最も近くにある 4 個のタイルの地勢タイプを配列に追加してから地勢タイプをランダムに選択します。前にある地勢タイプを追加する回数が多ければ多いほど、生成される地域の地勢は同質になります。この結果はリスト 3 のようになります。

リスト 3. 地図タイルの配列
$map = array();
$terrain = array ('plains', 'forest', 'swamp', 'hills', 'mountain', 'water');
for ($row = 0; $row < 20; $row++) {
    $map[] = array();
    for ($column = 0; $column < 20; $column++) {
        $pool = $terrain;
        if (isset($map[$row-1])) {
            if (isset($map[$row-1][$column-1])) {
                $pool[] = $map[$row-1][$column-1];
                $pool[] = $map[$row-1][$column-1];
            }
            $pool[] = $map[$row-1][$column];
            $pool[] = $map[$row-1][$column];
            if (isset($map[$row-1][$column+1])) {
                $pool[] = $map[$row-1][$column+1];
                  $pool[] = $map[$row-1][$column+1];
            }
        }
        if (isset($map[$row][$column-1])) {
                $pool[] = $map[$row][$column-1];
                $pool[] = $map[$row][$column-1];
        }
        shuffle($pool);
        $map[$row][$column] = $pool[0];
    }
}

地図の配列ができたら、各行と列に対して、各地勢タイプの画像を含めて繰り返し処理を行います。テスト・スクリプトを試してみると、このスクリプトによってどんな地図が生成されるのかを理解できるはずです。このスクリプトの可能性は無限です。個々の地勢タイプを複数回プールの中に入れることで個々の地勢タイプに異なる重みを与え、それらの地勢タイプによって作成される地図について複雑なルールを設定することもできます。恐れずに実験してみてください。


ポーカー・ハンドを評価するスクリプト

これまでに、ポーカーのディーラーとブラックジャックのディーラーを作成しました。今度はもう一歩進め、ポーカーのハンドを評価するスクリプトを作成しましょう。これは今までのものよりも複雑であり、同じタイプのハンド (訳注: ハンドとは手札の組み合わせのこと) の分類方法を考えるために少し時間がかかるかもしれません。しかし、スクリプトで 5 枚のカードを調べ、ストレートやフラッシュなどがあるかどうかを調べるのは非常に簡単です。

ハンドを調べる際には、次のような簡単なルールを適用することができます。

  1. 現在のカードのスーツ (訳注: スーツとはトランプのマーク (スペード、ハート、ダイヤ、クラブ) のこと) がその直前のカードのスーツと同じでない場合には、フラッシュはありません。
  2. 任意のカードのフェイス (訳注: フェイスとはマークと数字が書かれたトランプの表面のことで、ここでは単に表面に書かれている数字のこと) が、その前にあった任意のカードのフェイスと一致する場合には、ストレートはありません。
  3. 一致するカードがなく、また $highcard から $lowcard を引いたものが正確に 5 の場合には、ストレートがあります。

これらの簡単なルールを適用したら、次のような簡単なチェックを行い、一致するものがあるかどうかを判断します。

  1. フェイスが 5 種類ある場合には、一致するものはありません。
  2. フェイスが 4 種類ある場合には、ワンペアです。
  3. フェイスが 3 種類ある場合には、ツーペアかスリーカードです。
  4. フェイスが 2 種類ある場合には、フルハウスかフォーカードです。
  5. フェイスが 1 種類しかない場合には、あなたは「イカサマ」をしたのです。

これらのルールの実際は、コード・アーカイブにあるサンプル・スクリプトを見ると理解できるはずです。


スロット・マシン

最近のスロット・マシンは、引くレバーが付いているものは少なくなっていますが、ビデオ・スクリーンや何本ものペイライン、数多くのボタンなどがあり、複雑な形をした怪物のようです。この例では、1 本のペイラインを持つ 3 リールの単純なスロット・マシンをシミュレートします。まず、リールに表示する絵柄を決めるところから始めましょう。

リスト 4. リールに表示する絵柄を決める
$faces = array ('Cherry', 'Bar', 'Double Bar', 'Triple Bar', 'Diamond', 'Seven');

次に、当たりを設定します。当たりにはさまざまなバリエーションがありますが、この例では、例えばペイライン上に同じ絵柄が 3 つ並ぶと当たりとします。当たりとペイアウトに対しては、何らかの関連付けを設定する必要があります。これはリスト 5 のようなものになります。

リスト 5. 当たりとペイアウト
$payouts = array (
    'Bar|Bar|Bar' => '5',
    'Double Bar|Double Bar|Double Bar' => '10',
    'Triple Bar|Triple Bar|Triple Bar' => '15',
    'Cherry|Cherry|Cherry' => '20',
    'Seven|Seven|Seven' => '70',
    'Diamond|Diamond|Diamond' => '100',
);

リールを回転させると、最初のリールと 3 番目のリールが同じ方向に回転し、2 番目のリールのみ逆方向に回転します。このことを念頭に置いた上で、リールを設定しましょう。

リスト 6. リールを設定する
$wheel1 = array();
foreach ($faces as $face) {
    $wheel1[] = $face;
}
$wheel2 = array_reverse($wheel1);
$wheel3 = $wheel1;

このコードの中では $wheel2 を設定するために配列を逆にしています。プレイごとにリールの位置を追跡したいのですが、ここから先の演習は非常に簡単です。各リールは少なくとも 1 回転する必要があり、10 回転を超えてはなりません。リールの回転をシミュレートするためにはモジュロを使います $result1 = $wheel1[rand(count($wheel1), 10*count($wheel1)) % count($wheel1)];。最後に、$payouts の中の結果を調べます。

リスト 7. $payouts の中の結果を調べる
if (isset($payouts[$result1.'|'.$result2.'|'.$result3])) {
    // give the payout
}

注意: これは非常に基本的なものです。実際のスロット・マシンはこれよりもはるかに複雑であり、ペイアウトの計算も複雑です。ここに示したものは単に学習用の演習にすぎません。スクリプト・アーカイブのコードを調べ、ペイアウトがもう少し妥当なものになるように調整できないかどうかを検討してみてください。


キノ

キノ (Keno) はビンゴとロトを合わせたようなゲームです。1 から 80 までの数字のなかからランダムに選ばれる 20 個の数字について、プレイヤーは (数字を最大 15 個まで選択して) どの数字が引かれるかに賭けます。キノのペイアウトには非常に大きな幅がありますが、キノのゲームをシミュレートするスクリプトを作成するのは非常に簡単です (特にこのシリーズでは、これと非常に似たことを既に行ってきたので簡単です)。まず、1 から 80 までの数字の配列が必要です。

リスト 8. 1 から 80 までの数字の配列
$balls = array();
for ($i = 1; $i <= 80; $i++) {
    $balls[] = $i;
}

shuffle($balls);

1 つのテキスト・フィールドに、カンマで区切りながら予想される数字を入力します。次に、$balls 配列から単純に 20 個の数字を取り出し、予想した数字と引かれた数字とを比較します。これは容易に行うことができ、コード・アーカイブを見ればわかるはずです。このスクリプトに、さらに手を加え、引かれた数字をキノのスタイルのボードに表示させるようにすることもできます。ここで紹介したスクリプトに慣れたら、それを試してみてください。


クリプトグラム・ヘルパー

クリプトグラムは新聞によく載っているゲームであり (訳注: 米国での話です)、第 2 回で作成したような換字式暗号を使ってエンコードされた特定のフレーズをデコードするゲームです。では、エンコードされたメッセージを基本的な頻度分析を使ってデコードするスクリプトを作成してみましょう。この手法はクリプトグラムの問題を解く際に役に立ちます。

頻度分析というのは、単に「文字を数えること」を大げさに表現したにすぎません。エンコードされていないサンプル・テキストを取り上げ、そのテキストの中に特定の文字が何回現れるかを数え、そしてそれらの文字を、最も頻度が高い文字から頻度の低い文字へと順に並び替えます。次に、同じことをエンコードされたテキストに対して行います。それが終わった後で 2 つの文字列リストを並べてみると、結果として妥当なレベルでデコード・キーを推測することができます。この方法は大きなテキスト・ブロックに最適ですが、短いフレーズを処理する場合にも使用することができます。まず、エンコードされていないテキスト用とクリプトグラム用という、2 つのテキスト・ボックスから始めます。エンコードされていないテキストの中の文字を数え、その文字の配列を頻出順に並び替えます。

リスト 9. エンコードされていないテキストの中の文字を数え、その文字の配列を頻出順に並び替える
$unencoded = str_split(preg_replace('/[^a-z]/', '', strtolower($_POST['unencoded'])));
foreach ($unencoded as $letter) {
    $lettercount[$letter]++;
}

arsort($lettercount);

次に、同じことをエンコードされたテキストに対して行います。文字の頻出順にソートされた配列が用意できたら、エンコードされたテキストとエンコードされていないテキストの文字群の対応マップを作成し、それらの文字群を使ってテキストをデコードしてみます。非常に幸運であれば 1 回でテキストをデコードできますが、それを期待してはいけません。結果はおそらく、部分的にデコードされたテキストになり、パズルを解くための出発点としては適切です。詳細についてはスクリプトのサンプルを調べてみてください。このスクリプトには大いに改善の余地があります。


マスターマインド

マスターマインドは (古いゲームを基にした) ボード・ゲームであり、プレイヤーは出題者が設定したピンの順序と色を当てるゲームです。ここではスクリプトが出題者であり、皆さんが当てる側です。このスクリプトは、色は正しくても位置が誤っている推測の数と、完全に正しい推測の数を表示します。マスターマインドでは、それぞれ色の異なる 6 種類のピンを使用し、プレイヤーは同じ色のピンを何度も使うことができます。まず、以下のようなコードを設定します。

リスト 10. 色の異なる 6 種類のピンの配列
$pegs = array ('R','O','Y','G','B','V');
$code = array();
for ($i = 0; $i < 4; $i++) {
    $code[] = $pegs[rand(0,5)];
}

次に、推測を分析するものが必要です (リスト 11)。推測は 1 つのテキスト・フィールド (例えば OOGBVR など) に入力されます。

リスト 11. 推測を分析する
$guess = str_split($_POST['guess']);
if ($guess == $code) {
    // the code has been guessed.
} else {
    for ($i = 0;$i < 4;$i++) {
        if ($guess[$i] == $code[$i]) {
            // A correct guess
        } else {
            // Keep track of the guessed colors, for output later
        }
    }
}

サンプル・スクリプトを見ると、これがどのように作成されているかを理解できるはずです。これはちょっとした楽しいゲームであり、さまざまな方法で改造することができます。


単語チェーン

おそらく皆さんはこのゲームで遊んだことがあるはずです。このゲームは、通常 1 つの単語の中の 1 つの文字だけを変更して別の単語を作るゲームです。例えば BIKE という単語から FATE というに単語に変更する場合には、BIKE、LIKE、LAKE、LATE、FATE という単語チェーンを使います。では、1 つの単語から単語チェーンを生成するスクリプトを、クロスワード・ヘルパー用に作成したコードの一部を使って作成しましょう (リスト 12)。例えば BIKE という単語を指定すると、1 文字欠けた 4 種類の単語 (.IKE、B.KE、BI.E、BIK.) を作成することができ、これをクロスワード・ヘルパーに渡すと、一致しそうなものを見つけることができます。

リスト 12. 1 つの単語から単語チェーンを生成する
$letters = str_split($link);
foreach ($letters as $key => $letter) {
    foreach ($words as $word) {
        if ($key == 0) {
            $guess =  '.' . substr($link, 1);
        } else if ($key+1 == count($letters)) {
            $guess =  substr($link, 0, $key) . '.';
        } else {
            $guess =  substr($link, 0, $key) . '.' . substr($link, $key+1);
        }
        if (preg_match("/^" . $guess . "$/",$word)) {
            $matches[] = $word;
        }
    }
}

一致するものが見つかったら、その一致するものを使って同じことをします (同じ単語にならないようにします)。一致するものが見つかる限りこのロジックを続けます。さらに、一致しそうなものがあるたびに分岐させることもできます。これはよい演習になり、また無限再帰のレッスンとしても役立ちます。サンプル・スクリプトに慣れたら、ぜひそれを試してみてください。


まとめ

この「PHP で作成する 30 種類のゲーム・スクリプト」シリーズを読んで、興味深いゲーム・スクリプトを PHP で作成する気になったようであれば幸いです。どのようにプレイするかにかかわらず、このシリーズで紹介した単純なユーティリティーを使用することで、ゲームのエクスペリエンスを豊かにすることができます。PHP はこのシリーズで紹介したようなタスクを行うための言語として最適の選択肢であり、このシリーズを最後まで読んだ人は、楽しみながら確実に PHP プログラミングのスキルを磨くことができたはずです。


ダウンロード

内容ファイル名サイズ
10 advanced PHP scriptsos-php-gamescripts3.zip844KB

参考文献

学ぶために

  • developerWorks の記事、「PHP で作成する 30 種類のゲーム・スクリプト: 第 1 回 基本的な 10 種類のスクリプトを作成する」を読み、さまざまなゲームで使用できる 10 種類の基本的なスクリプトを学んでください。
  • さらに PHP プログラミングのスキルを磨き、またゲーム・マスターとしての地位を高める複雑なスクリプトを学ぶために「第 2 回 10 種類の中級スクリプトを作成する」を読んでください。
  • この記事で紹介したすべてのスクリプトの実際の例を調べてみてください。
  • Open Font Library は ID カード・プリンターで使用されている OCR-A フォントのソースです (他にもさまざまなフォントを入手することができます)。
  • スロット・マシンについての基本情報を入手してください。
  • キノについて学んでください。
  • Cryptograms.org には、ありとあらゆる暗号文が用意されています。
  • マスターマインドについて学んでください。
  • Linux で Apache V2 と PHP V4.x を一緒に動作させるための方法を解説した記事、「Apache V2 and PHP Installation」を読んでください (PHP V5.x も使うかもしれません)。
  • Connecting PHP applications to Apache Derby」は、Windows に PHP をインストールして構成する方法を解説しています (一部のステップは Linux にも応用することができます)。
  • Learning PHP, Part 1」を読み、PHP の基本を学んでください。次に「Part 2」を読み、Web にアクセスできない場所から DOM と SAX を使ってファイルをアップロードする方法を学んでください。そして「第 3 回」ではワークフロー・アプリケーションを完成させます。
  • PHP Manual を調べ、PHP のデータ・オブジェクトとそれらの機能について学んでください。
  • PHP.net は PHP 開発者のための中心的なリソースです。
  • Recommended PHP reading list」を調べてみてください。
  • developerWorks には他にも PHP に関する資料が豊富に用意されています。
  • IBM developerWorks の PHP project resources を利用して PHP のスキルを磨いてください。
  • developerWorks podcasts では、ソフトウェア開発者のための興味深いインタビューや議論を聞くことができます。
  • PHP でデータベースを使うのであれば、Zend Core for IBM を調べてみてください。これはシームレスでそのまま使用でき、インストールも容易な、IBM DB2 V9 をサポートする PHP の開発環境であり実動環境です。
  • developerWorks の Technical events and webcasts で最新情報を入手してください。
  • IBM オープンソース開発者にとって関心のある、世界中で今後開催される会議や業界展示会、ウェブキャスト、その他のイベントについて調べてみてください。
  • developerWorks の Open source ゾーンをご覧ください。オープンソース技術を使った開発や、IBM 製品でオープンソース技術を使用するためのハウ・ツー情報やツール、プロジェクトの更新情報など、豊富な情報が用意されています。
  • IBM とオープンソース技術、そして製品機能を調べ、学ぶために、無料の developerWorks On demand demos をご覧ください。

製品や技術を入手するために

  • 皆さんの次期オープンソース開発プロジェクトを IBM ソフトウェアの試用版を使って革新してください。ダウンロード、あるいは DVD で入手することができます。
  • IBM 製品の評価版をダウンロードし、DB2® や Lotus®、Rational®、Tivoli®、WebSphere® などが提供するアプリケーション開発ツールやミドルウェア製品をお試しください。

議論するために

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Open source
ArticleID=363856
ArticleTitle=PHP で作成する 30 種類のゲーム・スクリプト: 第 3 回 10 種類の高度なスクリプトを作成する
publish-date=12022008