90.応用

基本構文などを利用したアプリケーションの作成として、トランプやゲームをいくつか記載する。

90-1

Hit&Blow

ルール

0から9までの互いに異なる数字を使った3桁の数を正解として用意する。
正解の数字は、画面上には表示させない。
システム利用者は、正解を予想し、数字を入力する。

例)
1桁目の数字は?
->入力
2桁目の数字は?
ー>入力
3桁目の数字は?
ー>入力

正解と入力された数字を比較して、Hit数とBlow数を数える。

  • Hit数:同じ数字が同じ桁に出現する回数
  • Blow数:同じ数字が違う桁に出現する回数 正解であれば終了だが、不正解の場合は、Hit数とBlow数をヒントとして表示する。
    次の入力を促し、正解するまで繰り返す。
    システム利用者はなるべく少ない入力で正解を当てる。

イメージ画像

※あくまで一例です。


90-2

High&Low

ルール

2枚のカードを引く。
1枚目のカードを画面表示し、2枚目のカードは伏せたまま(画面表示しない)とする。
2枚目のカードが1枚目よりHigh か Lowかをあてる。

  • カードの強さ
    2→3→4→5→6→7→8→9→10→J→Q→K→A
    ※Jokerは無視してもよい
  • 1枚目と2枚目が同じ数値の扱い
    ドローとする。
  • 終了条件
    1回勝負とする。
    結果(プレイヤーの勝利 or ディーラーの勝利 or ドロー)を表示する。

補足

今の段階では、カードは乱数を使って表現する。

Random r = new System.Random();
var num = r.Next(生成する乱数の最低値を指定, 生成する乱数の最大値+1を指定);

例1)
Random r = new System.Random();
var num1 = r.Next(0, 3);
⇒0~2のどれかをランダムで生成し、num1が覚える

例2)
Random r = new System.Random();
var num1 = r.Next(1, 10);
⇒1~9のどれかをランダムで生成し、num1が覚える

例3)
Random r = new System.Random();
var num1 = r.Next(9);
⇒0~8のどれかをランダムで生成し、num1が覚える
※1つ目の値を省略した場合、最低値は0になる

例4)
Random r = new System.Random();
var num1 = r.Next(9);
⇒0~8のどれかをランダムで生成し、num1が覚える
var num2 = r.Next(9);
⇒0~8のどれかをランダムで生成し、num2が覚える

イメージ画像

※あくまで一例です。

拡張案

金額を設定して、当たるたびに倍々で増やしていく。
金額に上限を設けたり、10戦制にするのもよし。
1戦毎に続けるか降りるかを選択させ、降りたらその時点での金額を獲得できるとする。
ただし、どちらにしろ外れた時点で終了とし、外れたら金額は0にする。


90-3

Blackjack

ルール

まずはディーラーとプレイヤーの1対1を想定する。
はじめに、ディーラーとプレイヤーにカードを2枚ずつ配る。
プレイヤー側のカードは画面上に表示し、カードを追加するかどうか入力してもらう。
※理想はプレイヤーがストップするまでカードの追加が行えること。 ディーラー側は、カードの合計値が17を超えるまで自動でカードを追加していく。

プレイヤーへのカード追加、ディーラー側の自動追加が完了したら、
カードおよび合計値をコンソール上に表示して勝敗を決める。
  カードの合計値が21点、もしくは21点により近づいた方の勝ちとなる。
ただし、21を超えた場合、相手より21に近くても負けとなる。

例)プレイヤー:18 ディーラー:22
ディーラーの方が21に近いが、21を超えていて、
プレイヤーが21以下なのでプレイヤーの勝利となる。

  数字カード(1~10)はそのまま数字が点数になる。
絵札カード(J,Q,K)は一律10点となる。
Aは1 or 11として扱うことができる。  

補足

  • とりあえず、Aは1として扱う。
    (※できる人は、状況に応じて、1 or 11 の判断をしてもOKです。
  • Jokerは考慮しない
  • 今の段階では、カードは乱数を使って表現する  

    イメージ画像

    ※あくまで一例です。


90-4

Buckshot Roulette

基本構文+配列・Collectionあたりの知識が必要。
<応用編>はクラス周りも必要。

仕様

ショットガンでお互い(ディーラーとプレイヤー)を撃ちあうゲーム。
どちらかのライフが尽きたら終了。
ざっくりいうとロシアンルーレットのショットガン版だが、
通常のロシアンルーレットとは少々ルールが違う。

はじめに、ショットガンには実弾と空砲がランダムで装填され、
はじめの一回だけ実弾の数と空砲の数が表示される。

ディーラー⇒プレイヤー⇒ディーラー・・・と交互に撃っていくが、
自分に向けて撃ってもいいし、相手に向けて撃ってもいい。
その際のルールとして、

  • 相手に向けて撃ったら実弾にしろ空砲にしろ、次は相手のターン
  • 自分に向けて撃って空砲だったら自分のターンを継続。実弾だったら自分のライフを減らして相手のターン

となる。

例えば、

  1. ディーラーが自分に向けて撃った⇒空砲でした
    この場合は再度ディーラーのターンになる。
  2. ディーラーが自分に向けて撃った⇒実弾でした
    この場合は相手のターンになる。
  3. ディーラーが相手に向けて撃った⇒実弾 or 空砲でした
    この場合は相手のターンになる。

となる。
実弾だった場合は対象のライフを1つ減らす。
自分に向けて撃ったのなら自分のライフを1つ減らし、相手に向けて撃ったのなら相手のライフを1つ減らす。

そのため、“自分を撃って空砲を減らし、相手に実弾を撃つ可能性を高める”という考えが重要になる。

ライフの数・ショットガンの装填数(実弾と空砲の合計)は固定でもランダムでもよい。
3ゲーム制にして、ゲームが進むたびにライフ数や装填数を増やすのも手。

<応用編>

仕様

本ゲームにアイテム要素を追加する。
はじめの実弾・空砲の数を表示する際に、以下アイテムをランダムで数個ディーラーとプレイヤーに配る。
配る数は固定でもいいし、ランダムでもいい。ただ、配るアイテムはランダムにして運次第とする。
同じアイテムを複数配ってもよいとする。
撃つ前に、アイテムの使用を選択させる。
アイテムは一度に複数個使用できてよいものとする。

[アイテム一覧]

名称 効果
ノコギリ 一発のダメージを2ダメージにする
タバコ ライフを1回復
ビール 銃に込められている弾を1発分だけ排出する
虫メガネ 次の弾を確認する
手錠 相手を一回だけ行動不能にする
アドレナリン 相手のアイテムをひとつ奪って使うことができる
使い捨て携帯電話 謎の声が、どこかのタイミングの弾が実弾か空砲かを教えてくれる
インバータ 装填されている次の弾を逆のもの(実弾なら空砲)に変換する
期限切れの薬 40%の確率で体力2つ回復できるが、60%で1つ失う

90-5

スロット

基本構文+配列・Collection+スレッドあたりの知識が必要

仕様

リールは3列とする。
※リール:縦にぐるぐる回転してるあれ。STOPする箇所。

各リールで回転する図柄は21種とする。
図柄の順番はリール毎に異なるので注意する。
今回、各リールで利用する図柄。順番は以下の通りとする。
  リール① &,☆,7,Λ,7,☆,¶,&,☆,Θ,Λ,7,☆,¶,&,☆,7,Λ,Θ,☆,¶ リール② Λ,¶,☆,7,7,Λ,¶,☆,&,Λ,¶,☆,7,Λ,¶,☆,Λ,Θ,¶,☆,& リール③ ¶,Λ,Ψ,☆,7,¶,Θ,☆,&,¶,Λ,Θ,☆,&,¶,7,☆,¶,7,☆,Ψ

スロットが開始されたら各リールが無限ループを開始する。
コンソール上でリール①~③のどれをとめるか表示し、
入力された番号のリールを止める(そのリールの無限ループを終了する)。
全てのリールの結果を表示する。
結果表示は3つ。
例えばリール①が6つ目の図柄でストップされた場合は、6番目の”☆”と前後の”7””¶”を表示する。

¶
☆
7

リール②、リール③も同様である。
もし、リール①が4つ目、リール②が6つ目、リール③が2つ目でストップした場合は、以下のような表示になる。
左の列から、リール①、リール②、リール③である。

7¶Ψ
ΛΛΛ
77¶

真ん中の行の図柄がそろっているため、当たり。
掛け金を設定して金額を増やしてもよいし、何か特別な表示をするなど、結果どうするかはまかせるものとする。
一致判定は縦・横・斜めで行うこと。
なお、個別にリールを回すプログラムだが、今回の範囲外である。
”Thread”の知識が必要になるので、チャレンジする場合はまず”Thread”に関する学習をおこなうことをお勧めする。


90-6

その他

過去に作成されたアプリ例 or 作れると思われるもの

  • ビンゴ(基本構文+配列・Collectionあたりの知識が必要)
  • ポーカー(基本構文+配列・Collectionあたりの知識が必要)
  • マインスイーパー
  • ソリティア
  • オセロ

Copyright © Xincor miXell Co., Ltd. All rights reserved

results matching ""

    No results matching ""