Star Trek text Game 宇宙戦艦ヤマト編


Star Trek text Game のバリエーションとして、
宇宙戦艦ヤマトに舞台を移してみます。

エンタープライズ号(E)をヤマト(Y)に、クリンゴン(K)をガミラス(G)にい置き換えるのは、
誰でも思いつく安易な発想ですね。

ミッションの変更
敵艦を破壊するのではなく、
イスカンダル星に行って、コスモクリーナーを持ち帰ります。

デスラー総統
強力な敵役として、忘れてはいけない。
ヤマトよ攻撃力や防護力を強めに設定して、
直に戦闘すると、ヤマトがボロボロになる。
また、コスモクリーナーの受け取りを邪魔する。

オープニング
「さらば地球よ。。。」とテーマそングを流して、
士気を高めたいが、権利団体からクレームがきそう。

佐渡 酒造モード
キャラクラーに応じた小ネタがあるといいな。
戦闘中に酒をに見始めてしまい。コマンドが実行されないことがあるとか。


Text Game Androidへの移植


Text Game を Androidに移植しています。
まだ未完成ですが、簡単な遊びは出来るようになったので, Githubにソースコードを公開しました。
フィードバックお待ちします。

スクリーンショット
長距離センサー
20170404_star_trek_android_long_renge_sensor

短距離センサー
20170404_star_trek_android_short_renge_sensor

光子魚雷でクリンゴン艦を破壊する。
20170404_star_trek_android_torpedoe

ゲームの仕様やルールは、作りながら考えています。
オリジナル版の雰囲気を活かしつつ、プレイヤー−の操作がシンプルで、プログラム開発が容易になるようにしたいと思っています。

なお、基本的なルールを下記にまとめました。
Star Trek Text Game シナリオとルール


star trek text game


20170310_star_trek_text_game

star trek text gameは、1970年代に流行ったコンピュータゲームです。
私は、大学の研究室にあったミニコンで遊びました。
SFテレビドラマ「宇宙大作戦」をモチーフにしたもの。
エンタープライズ号に乗ってクリンゴン戦艦を撃破するという単純なシナリオです。
エンタープライズは「E」クリンゴンは「K」という文字で表現され
効果音もない簡素なものですが、妙にはまりました。

ASR43型というテレタイプを入出力機器に使ってました。
出力はロール紙に印字する方式です。ゲームのやりすぎで、ロール紙を使い切ったこともありました。
20170310_asr43

今でに根強い人気があるようで、ネットに色々情報が出ています。

ゲームの詳細
スタートレック (マイコンゲーム) – Wikipedia

BASIC版

STTR1

このゲームのオリジナルとされる1972年の MIKE MAYFIELD作のようです。

スタートレックのソースを読む

C#版
Star Trek 1971 Text Game

C#版は、BASIC版を移植したもの
C#にしたのは、goto文が使えるかららしい。

C版
lassic Super Star Trek Game

unix Windows MacOSX でビルドできるようです。

Android版
プレイしている動画

apk download


Star Trek text Game シナリオとルール


wikipediaの記述をベースに、BASIC版のソースコードを読解した内容を加味しています。

シナリオ
TVシリーズの Star TREK モチーフにしています。
プレイヤーは、エンター−プライズ号を操縦して、クリンゴン艦を撃破します。
制限時間内に全てのクリンゴン艦を撃破すると、プレイヤーの勝利です。

ルール
ゲーム盤の構成
宇宙全体が8x8の大区画 クォドラント Quadrant に分かれています。
宇宙全体にクリンゴン艦 klingon が点在しています。
1つのクォドラントは8x8の小区画 セクターに分かれています。
1つのセクターには、エンター−プライズ号かクリンゴン艦か宇宙基地か星があります。

エンタープライズ号の装備
(1)ワープエンジン Warp Engine
クォドラント間やクォドラント内を移動します。
方向と距離を指定します。
BASIC版では、距離が1以上ならクォドラント間、1以下ならクォドラント内、となっています。
少し、わかりにくいですね。
クォドラント間とクォドラント内の移動が、分かれているバリエーションもあります。
(2)インパルスエンジンimpulse Engine
クォクォドラント内を移動します。
方向と距離を指定します。
(3)長距離センサ Long renge Sensor
クォ周囲のドランの状況を表示します。
(3)短距離センサ Short renge Sensor
クォドラン内の状況を表示します。
)光子魚雷 Photon Torpedo
クリンゴン艦を攻撃します。
コースを指定します。
クリンゴン艦か、宇宙基地か、星に命中するまで、直進します。
クリンゴン艦に命中すると、リンゴン艦を破壊します。
宇宙基地に命中すると、宇宙基地を破壊し補給が受けれれなくなり、痛手です。
 おめでとう CONGRATULATIONS と皮肉が表示されます
星に命中すると、宇宙基地を破壊し、ゲームの勝敗には影響がないので、無駄弾です。
くそー SILLY と毒づきます。
いずれかにも当たらず、区画外に出ると、外れです。
(5)フェーザ Phaser
エネルギービームを発射して、クリンゴン艦を攻撃します。
)光子魚雷と異なり、クォドラン内にいる複数のクリンゴン艦を同時に攻撃がします。
発射するエネルギー量を指定します。
エンタープライズ号からクリンゴンまでの距離に応じて、
ビームのエネルギーは減衰します。
運が良ければ、すべてのクリンゴン艦が一斉に破壊されるが、遠くにいるクリンゴン艦は破壊されないこともある。
(6)シールド Shield
クリンゴン艦からの攻撃を防御します。
シールドに回すエネルギーを指定します。
周囲にクリンゴン艦がいて、シールドが200以下になると、
SHIELDS DANGEROUSLY LOW と警告が表示されます。
(6)シールド Shield
クリンゴン艦からの攻撃を防御します。
シールドに回すエネルギーを指定します。
周囲にクリンゴン艦がいて、シールドが200以下になると、
SHIELDS DANGEROUSLY LOW と警告が表示されます。

(6)故障報告 Damage Report
機器の故障状況と復旧状況を示します。
(7)コンピュータComputer
以下の機能が使えます。
(7−1)銀河系地図 CUMULATIVE GALACTIC RECORD 
これまでに長距離センサで探査した範囲の状況をまとめてみることができます。
最新の情報ではなく、距離センサで探査した時の情報を蓄積したものです。

(7−2)状況レポート Status Report
残りのクリンゴン数、残りの年数、銀河系内の基地数、各計器の故障状況の確認ができます。
状況は4通りです。
(1) GREEN
正常
(2)
RED
周りにクリンゴン艦がいて、戦闘状態
(3)YELLOW
クリンゴン艦がいないが、
エネルギーが300以下になっている。
(4)DOCKED
宇宙基地にドックインしている。

(7−8)魚雷弾道計算 PHOTON TORPEDO DATA
現在いるクォドラン内のクリンゴンの座標と魚雷のコースを示します。
つまり、短距離センサが使用できなくとも、クリンゴンを攻撃できます。
(9)エネルギー Enegy
ワープエンジンやシールドに使用します。
光子魚雷との間で相互に補充するものもある。
(0)コース設定 Course
1から8までの数字で指定します。
1が右で、反時計回りで周8右下まで 
(1)右
(2)右上
(3)上
(4)左上
(5)左
(6)左下
(7)下
(8)右下
0から360までの角度を指定するものもあります。
私が大学時代に遊んだのもこの方式でした。
45度より小さいから30度かなといい加減に指定しては、無駄弾を撃ってました。

装備の故障と回復
ゲームの進行に応じて、
装備はランダム故障したり回復したりする。

宇宙基地
宇宙基地にドック入りすると、
エネルギーと光子魚雷が補給します。
故障した装備が修理します。
また、宇宙基地には強力なシールドがあり、攻撃されても、ダメージを受けません。

ゲ−ムの開始
初期設定として、下記の値を設定します。
エネルギー量=3000
シールド=200
光子魚雷の数=10
残り日数=30 + クリンゴン艦の総数
各クォドラントに最大⒌個のクリンゴン艦と最大1つの宇宙基地を配置します。
BASIC版では、乱数により、クリンゴン艦を20%の確率で1隻、5%の確率で2隻、2%の確率で3隻、配置します。
下記の指令を表示します。
BASIC版では、3桁の数でひとつのクォドラントの状態をす表します。
3桁の数字は、1桁目がクリンゴンの数、2桁目が基地の数、3桁目が星の数を表します。たとえば 「205」であれば、クリンゴンが2、基地なし、星5個、となります。
3桁の数字を8x8の配列に設定して宇宙全体の状態を表します。

初期設定が終わると、下記を表示します。
PRIYOU MUST DESTROY っx KLINGONS IN xx STARDATES WITH xx STARBASES

ゲ−ムの終了
クリンゴン艦をすべて破壊すると、プレイヤーの勝ちです。
残り日数がなくなるか、エンター−プライズ号が破壊されると、プレイヤーの負けです。
エネルギーが無くなると、ゲームは終了します。
ASIC版では、自動的に再スタートします。
その時は、クリンゴンから攻撃を受け、
最終的には、エンター−プライズ号が破壊され、プレイヤーの負けです。

ゲームの進行
レイヤーがコマンドを選択すると、状況が変化します。
コマンドは
1長距離センサー
2短距離センサー
3 光子魚雷
4フェイザー砲
5シールド
6故障報告
7コンピュータライブラリイ
8 インパルスエンジン
9 ワープエンジン

1 長距離センサー LONG RANGE SENSOR SCAN
、エンター−プライズ号がいるクォドラントを中心に隣接する上下左右斜め9つのクォドラントは探査済となり、三桁の数字、例えば”513″などと表示する。
1桁目はクリンゴン艦の数、2桁目は宇宙基地の数、
3桁目はは星の数を示す。
それ以外のクォドラントは未探索となり、***と表示する。
、エンター−プライズ号がいるクォドラントを中心に隣する9つの
クォドラントの情報が3桁の数字(例えば”513″など)で表示されます。
それ以外のクォドラントは未探索となり、***と表示する。
コンピュータが故障してなければ、クォドラントの情報を銀河系マップにコピーします。

2 短距離センサー SHORT RANGE SENSOR SCAN
セクォドラント内の配置を8x8のマス目に一文字で表示する
E エンタープライズ号
K クリンゴン艦
B 宇宙基地
* 星

あわせて、下記のような状況方法を表示する。
STARDATE 2340
CONDITION RED
QUADRANT 3,7
SECTOR 5,4
ENERGY 3000
PHOTON TORPEDOES 10
SHIELDS 0

光子魚雷 FIRE PHOTON TORPEDOES
コースを入力すると、その方向に飛び、破壊する。
リンゴン艦か、宇宙基地か、星に当たるか、範囲外に出るまで、光子魚雷は直進する。
故障しているか、弾切れの場合は撃てない。
魚雷を発射すると、クリンゴンからの攻撃があります。

コース(方向)の設定
1−8までの8方向を指定する
なお、BASIC版では、9方向が選択できるようだが、残り1方向がよくワカらんskった

1 上
2 右上
3 右
4 右下
5 下
6 左下
7 左
8 左上

コースに応じて、X(横)方向Y(上下)方向の増分が設定される。
例えば、上なら、Xは−1、Yは0となる。
バリエーションとして、角度を入力するものもある。
私が大学時代に遊んだのもこの方式でした。
45度より小さいから30度かなといい加減に指定しては、無駄弾を撃ってました。

4フェイザー砲 FIRE PHASERS
発射するエネルギー量を入力する。
光子魚雷と異なり、すべての方向にエネルギービームを発射し、
セクォドラント内にいる全てのクリンゴン艦にエネルギービームが当たる。
乱数によりランダムに破壊する。
全てのクリンゴン艦を一度の攻撃で破壊することもできる。
BASIC版では、クリンゴン艦にシールドが設置されており、エネルギービームが当たると、シールドのエネルギー量が減少して、ぜロになると、破壊する、というようなコードの断片があった。
また、ビームのエネルギーは、エンタープライズ号とクリンゴン艦の距離に応じて減衰する。

まず、先にクリンゴンからの攻撃があります。
コンピュータが故障中は精度が低下し、ビームのエネルギーが減少します。

8 インパルスエンジン IMPULSE ENGINE
クォドラント内を移動する。
コースと移動距離を入力する。
コースは光子魚雷と同様に方向を選択する。
じ。簡易板では1マスだけ移動する。
移動経路にクリンゴン艦、宇宙基地、星があると、衝突し、
その手前で停止します。
クリンゴン艦と衝突すると、エンターピライズ号とクリンゴン艦の双方にダメージが生じる。
宇宙基地と衝突すると、ドックインしたとみなされ、補給を受ける。
星と衝突しても、何も起きない。
範囲外になると。隣接するクォドラントに移動する。

9 ワープエンジン WARP ENGINE
クォドラント間を移動する。
コースと移動距離 を入力する。
コースは光子魚雷と同様に方向を選択する。
なお、簡易板として、移動距離は入力せずぬ、1マスだけ移動する。
範囲外になると、予定外のクォドラントにランダムに移動する。

ワープする前に、クリンゴンがいた場合はクリンゴンから攻撃される。
また、、20%の確率で計器の故障と修復を行う。

バリエーションとして、ワープエンジンとインパルスエンジンが一体になっているものもある。
BASIC版では、移動距離を0から8までの数字で指定する。
1より大きいと、クォドラント間を移動し、1より小さいと、クォドラント内を移動する。
1以上は、クォドラント間の移動となる。
移動距離に応じて、残り日数が減少し、エネルギーを消費する。
1以下の小数は、1つのクォドラント内の移動となる。
範囲外になるとどこかのクォドラントにランダムに移動する。
予定外のクォドラントに到着
なお、簡易板として移動距離は入力せずぬ、常に1マスだけ移動する。

クリンゴン艦からの攻撃
クォドラント内にクリンゴン艦がいると、戦闘エリアとなり、すべてのクリンゴン艦から攻撃してくる。
武器はエネルギービーム
BASIC版では、1隻につき最大 20ユニット
9撃されると、下記のように表示される。
xx UNIT HIT ON ENTERPRISE AT SECTOR xx,xx
エンタープライズ号のシールドで防御され、シールドのエネルギーは減少する。
シールドのエネルギーが無くなると、エンタープライズ号は破壊され、ゲーム終了となる。

ゲームの難易度
BASIC版では、プレイヤーに有利な設定になっています。
例えば、残り日数はワープしないと減少しないので、
残り日数が無くなって負けることがない。
ゲームの進行に応じて、少ずつ減少すべきかな。

参考
スタートレックのソースを読む