六角形マップ(HEX)のプログラミング【実例編】

Python
Sponsored

戦略SLGなどで見られる六角形のマップは、よくある四角形のマップに比べて見た目が格好いいだけではなく、ゲームの戦略性を高めてくれる。しかし、この六角形のマップをプログラミングで実装するとなると、専用のデータ型がないため、かなり頭を悩ます作業となりそうである。

今回筆者は、六角形マップを用いた有名ボードゲーム「それは俺の魚だ!(Hey, That's My Fish!)」風のCUIゲーム(コマンドライン上で動くゲーム)を作成した。この記事では、とりあえずそのゲームの遊び方について概説し、次回にその詳細な解説を通して六角形マップの考え方について提示することとしたい。

ゲームのルール

まず初めに、「それは俺の魚だ!(Hey, That's My Fish!)」のルールは、「それは俺の魚だ!(HEY, thats my fish!) - 編集者はボードゲームの夢を見るか」に詳しい。

英語版・解説動画は「Yucata - Rules for the game 'Hey, that's my fish'」を参照のこと。

遊び方

Pythonをインストール済みのパソコンにコードをダウンロードし、コマンドラインのカレントディレクトリを「myfish.py」ファイルが保存されているディレクトリに指定して、

> python myfish.py

で起動する。プレイヤー人数を入力(2~4人)し、自分の駒を配置する。

マップに振られた番号は上図の通りである。また、ゲーム画面のマップには1~3の数字が表示されていて、これはそのマスが持つ魚の数を示している。自分の手番が来たプレイヤーは、駒を置きたいマスを示す2桁の数字を入力することで駒を配置できる(最初に駒を置けるのは魚が1匹だけのマスであることに注意)。配置した駒はプレイヤーのアルファベット(A~D)としてマスに表示される。

全員が駒の配置を終えたらゲーム開始。手番のプレイヤーが動かしたい自分の駒がいるマスの番号を入力し、その後移動先のマス番号を入力することで駒が移動する。もともと駒がいた場所には0と表示され、そのマスが持っていた魚の数が得点に追加される。0と表示されたマスは「割れた氷」を示しており、ここに移動したり、ここを飛び越えて移動したりすることはできない。

以上の手順を繰り返し、動ける駒がなくなったらゲーム終了。獲得した魚の数が最も多いプレイヤーの勝利となる。

「それは俺の魚だ!」のススメ

このプログラムは筆者が六角形マップ(HEX)のゲームについて解説するために作成した簡易プログラムであり、不便な部分も多いため「それは俺の魚だ!」を十分に楽しむためには不満が残る。「それは俺の魚だ!」はルールが簡単に覚えられ、かつ非常に戦略性の高い素晴らしいゲームであるため、この記事を見て少しでも興味を持った方はぜひ本物のボードゲームを購入してほしい。

製品ページ:ArclightGames

また、240円(2018年11月26日現在)で購入できるiOS向けアプリもあるので、こちらもオススメである。
iOSアプリ:「Hey, That's My Fish! HD」をApp Storeで

※なお、このオススメによる広告収入は一切筆者の懐には入らない。

コード

Comments