【農家は Replace() されました】Pythonの基礎が楽しく学べるゲーム

プロモーションが含まれています。

スポンサーリンク
サムネイル プログラム
スポンサーリンク

ゲーム名

農家は Replace() されました (リンク:steam) というゲームです。

組み方は無限

プログラムを書いて、植え込み、収穫などができるドローンを動かして、農場を耕し収穫し得た資源を使って農場を発展させていくゲームです。技術ツリーの開放とSteamの実績を解除するのが目的のようです。ランキング機能もあるようです。

プログラムは、サイトの説明で「Pythonに似たシンプルな言語」と書かれていますが、基礎的な部分はほぼPythonと言って問題ありません。

開放された限られた命令の中で、プログラムを好きなように組んで効率の良い収穫を目指します。

少しわかり難いので、補足説明書を準備しました。

動作環境

最低:
64 ビットのプロセッサとOS
OS : Windows 7 (64-bit)
プロセッサー: Intel Core i3
メモリー: 4 GB RAM
グラフィック: Nvidia Geforce GTX 550/equivalent or higher
DIRECTX: Version 11
ストレージ: 1 GB の空き容量
追記事項: これ以下のシステムでも動くかもしれません

推奨:
64 ビットプロセッサとオペレーティングシステムが必要です

スポンサーリンク

インプレッション

頭の中でどう動かしたら良いか考え、イメージどおりに動作させる為にはどんなプログラムを書いたら良いかなどを考えて、実際にプログラムを書いてみるといった感じでやると、長く楽しめそうです。

・ゲームバランスが良い
・シンプルなルール
・始めやすい価格
・奥深い

・説明がわかり難い
・ゴールがわからない

詳しい説明は、省かさせていただきます。

スポンサーリンク

補足説明書

翻訳がわかり難かったり、専門的な書き方がされているので理解し難かったりします。私なりにかみ砕いて、補足説明してみました。技術ツリーを開放てからでないと使えないものもあります。

操作

農場

情報表示

農場のブロックにカーソルを当てると、開放した農場の情報が表示されます。収穫できるものや量、地面の状況、成長率などが表示されます。

「+」「i」「︽」

右上ボタン

右上のある操作ボタンです。

「+」・・・プログラムウィンドウを追加します。

「i」・・説明ウィンドウを表示します。ツリー解放されている詳しい内容が確認できます。

「︽」・・・技術ツリーを表示します。得た収穫物を使ってツリーを開放できます。

スポンサーリンク

ドローン関係

耕したり、植えたり、収穫したりすることができます。ゲームを進めていけば、複数のドローンを操作することができるようになります。

収穫

harvest()

ドローンの下にある収穫物を収穫します。

can_harvest()

ドローンの下にある収穫物の状態を調べて、収穫できる状態なら True 、できない状態なら False となります。

耕す

till()

草原は耕地に、耕地は草原に耕します。

植える

plant()

収穫物を植えます。()内に植えるものを指定します。

例)
木を植える ・・・ plant(Entities.Tree)

移動

move()

()内に方角(North、South、East、West)を指定すると、指定方向に1ブロック移動します。

収穫物の量

measure()

下記の収穫物は、指定されてた情報が得られます。それ以外は none となります。

カボチャ >>> 神秘的な値
サボテン >>> サボテンのサイズ
ヒマワリ >>> 花びらの枚数
リンゴ  >>> 次の位置
金    >>> 次の位置

ドローン下の情報

ドローンがいるブロックの情報を得ることができます。

get_entity_type()

ドローンの下にどんな種類の収穫物があるかを調べます。獲得できる詳しい情報は「収穫物」を確認してください。

get_ground_type()

ドローンの下がどんな種類の地面かを調べます。詳しくは、「状況関係」 を確認してください。

デバッグ

被っている帽子を変える change_hat(Hats.色_Hat) や ドローンを一回転させる do_a_flip() を使うとドローンの動きを見ながら確認できます。(デバッグに便利です。)

メガファーム

複数のドローンを操作できます。

spawn_drone(function)

ドローンをスポーン(登場・出現)させることができます。

(function)に関数名を指定して、関数(def)内に動作プログラムを書きます。新しいドローンがスポーンして関数(def)に書かれたプログラムを実行します。関数(def)が終了すると、ドローンは自動的に消滅します。

max_drones()

スポーンさせられるドローンの最大数を取得します。

num_drones()

農場にスポーンしているドローンの数を取得します。

スポンサーリンク

状況関係

感覚

get_pos_x() 、 get_pos_y()

ドローンがいる位置を知ることができます。一番左下が(0,0)で、1ブロック、右(東、East)、上(北、North)に移動するごとに1ずつ増えていきます。xが左右・東西、yが上下・南北です。

地面

地面によって、植えられない収穫物もあります。

草原 >>> Grounds.Grassland
耕地 >>> Grounds.Soil

収穫物

草

地面が草原で何もしていないと、Hay(干し草)が成長し収穫できます。

干し草 >>> Entities.Grass

低木・木

ブッシュ

Bush (低木)または Tree(木)を植えて成長すると、 Wood (木材)が収穫できます。

草地・耕地どちらでも植えられます。

低木 >>> Entities.Bush

木

Tree(木)は東西南北に隣接して植えると、成長するのに時間がかかります。東西南北に隣接するごとに、成長時間が2倍延びます。東西南北、全てに隣接すると、成長時間は 2*2*2*2 で 16倍に延びます

草地・耕地どちらでも植えられます。

木  >>> Entities.Tree

収穫量が変わります。(何が要因か分かっていません。)

ニンジン

ニンジン

ニンジンが収穫できます。ニンジンを植えるには、Hay(干し草)と Wood (木材)が必要です。

耕地でないと植えられません。

ニンジン >>> Entities.Carrot

カボチャ

カボチャ

カボチャが収穫できます。20%の確率で枯れて(栽培失敗)カボチャは得られません。成長したカボチャが正方形で隣接すると大きなカボチャになって収穫量が増えます。見た目は平面になっていますが、実際は球体形状で成長しているとイメージすると良さそうです。

耕地でないと植えられません。

カボチャ >>> Entities.Pumpkin

大きなカボチャの収穫量
ブロック 1辺 を n とした場合
立方体で計算した量収穫できます
但し、n = 7 以上の場合計算が変わります

n = 2 ~ 6 の場合
 n = 2 2*2*2= 8
  ・・・
 n = 6 6*6*6 = 126

n = 7 以上の場合
深さの最大が6になり n*n*6で計算されます
 n = 7 7*7*6 = 294

サボテン

サボテン

緑色のサボテンを収穫するとサボテンが得られます。茶色になったサボテンを収穫しても何も得られません。緑色のサボテンになるための法則があります。

耕地でないと植えられません。

サボテン >>> Entities.Cactus

緑色のサボテンを造る

緑色に成長させるにはソート(並び順)が重要になります。

北、東方向 >>> 同じサイズか大きいサイズ
南、西方向 >>> 同じサイズが小さいサイズ

ソートさせるのに有効なコマンド

measure()・・・ドローンの下のサイズを確認
measure(東西南北)・・・ドローンの指定した方向1ブロック先のサイズを確認
swap(東西南北)・・・・ドローンの指定した方向1ブロック先のサボテンと植え替える

swapは植え替えなので、成長率などは引き継がれます。

シンプルな参考プログラムについて、こちらの記事で書きましたので気になる方は是非!

ヒマワリ

ヒマワリ

条件は、ニンジン、カボチャと同じです。収穫するとパワー(稲妻)が得られます。収穫によって得られるパワーの量は、通常であれば「1」ですが、農場にヒマワリを10本以上植えると、農場の中で花びらの枚数が一番多いヒマワリを収穫すると得られるパワーの量が「8」になります。

耕地でないと植えられません。

花びらの枚数は7~15枚で、measure()で取得できます。

パワーを持っていると、処理速度が速くなります。

サボテン >>> Entities.Sunflower

技術ツリーをアンロックすると、時間経過で、Water(水)が手に入ります。植物に水をやると成長が早まります。

use_item(Items.Water)

水やりができます。

水位は、0~1です。水位1の場合、成長速度は5倍です。水の消費量はランダムで、平均して毎秒1%消費します。

get_water()

ドローン下の水位を確認できます。小数点で表現されているのでフロート型(浮動小数点型)と思われます。消費量についても、割合で処理されているため、0にならない可能性があります。(※)

(※)条件に get_water() == 0 を使用したら、初回以外は永遠に処理されずにいました。

スポンサーリンク

奇妙な物質(肥料)

技術ツリーをアンロックすると、時間経過で、Fertilizer(肥料)が手に入ります。

肥料を使った収穫物を収穫すると収穫量の半分が、Weird_Substance(奇妙な物質)になって収穫できます。

金(迷路)

迷路

Bush(低木)に Weird_Substance(奇妙な物質)を使うと生垣の迷路が現れます。迷路のサイズは、奇妙な物質の使用量によって決まります。

use_item(使用するもの, 使用量)

今回は奇妙な物質を使用するので、use_item(Items.Weird_Substance, **)になります。**に入れる使用量は、下に書いたとおりです。

技術ツリーを開放したての状態(アップグレードしていない状態)で、n個の奇妙な物質を使用すると n × n サイズの迷路が生成されます。技術ツリーを開放(アップグレード)していくと、迷路の生成に必要な奇妙な物質の量が2倍になり、宝物を収穫したときの金の量が2倍になります。

収穫

ドローンが宝物の上にいるときに、収穫すると金が手に入ります。

harvest() で宝物を収穫して終了するか、use_item(Items.Weird_Substance, **) で奇妙な物質を使うことで、宝物を収穫し新しい宝物(迷路の再利用)を設置するかの二通りあります。

フィールドいっぱいの迷路を造る

num_unlocked()でアンロックの状態(アンロックレベル)が確認できます。

奇妙な物質の必要量 = 農場のサイズ × 2 ^^(アンロックレベル - 1)

(アンロックレベル - 1)は2の指数です。

下記プログラムは説明文にあるです。

plant(Entities.Bush)
substance = get_world_size() * 2**(num_unlocked(Unlocks.Mazes) – 1)
use_item(Items.Weird_Substance, substance)

1ブロックだけブッシュにして、そこに上の量の奇妙な物質を使えばフィールドいっぱいの迷路になります。

迷路が生成出来たら、宝物の収穫を目指します。迷路は、右手法(左手法)または右壁法(左壁法)と言われる攻略方法で攻略できる迷路が生成されるそうです。

右手法、右壁法

右手法とは、右手が常に壁に触る様しながら進む迷路の攻略方法です。右手法と同じ感じで、右にある壁に沿って進む方法を右壁法と言います。一般的な話ですが、迷路の構成によっては、攻略できない場合があります。

攻略に有効なコマンド1
move()

これを読んでいる方は、既に使用しているコマンドです。ドローンが生垣を超えることができずに移動できなかった場合は、「False」が返ってきます。移動できた場合は、「True」が返ってきます。

攻略に有効なコマンド2
can_move()

移動せずに移動できる方角を確認できます。

シンプルな参考プログラムについて、こちらの記事で書きましたので気になる方は是非!

骨(恐竜)

change_hat(Hats.Dinosaur_Hat)

このコマンドで、ドローンが恐竜になって、農場にリンゴが配置されます。

next_x, next_y = measure()

今のリンゴの位置ではなく、次にリンゴが発生する位置が示されます。

恐竜は成長する

ドローン(恐竜の頭)がリンゴの上に到達すると、自動的にリンゴを食べて成長し、1ブロック分尻尾が伸びます。ドローンは、尻尾を越えて移動できません。

骨を収穫する

骨の収穫は、恐竜ハットから別のハットに替えることで骨が収穫できます。収穫量は、尻尾の長さをnとすると、nの2乗した分になります。

尻尾は壁のようなもので、通過できなくなります。

シンプルな参考プログラムについて、こちらの記事で書きましたので気になる方は是非!

その他

デバッグ

set_execution_speed()

スピードが速すぎて何が行われているかわからないときなどに、スピードを調整することができます。

set_world_size()

農場のサイズを変更することで、狭い範囲での動作を確認することができます。()内にnの数字を入れることで、n × n の農場になります。get_world_size()の値も、nに応じて変化します。

コメント

タイトルとURLをコピーしました