RogueRoles(仮)


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

プロトタイプのプロトタイプメモ。

(練習の練習をしている時点でヤバイのかも。)

ローグのふるまい

ActDataの変更

A6の仕様メモ

[ゲーム]Rogueのまがいモノを作ってみる。

仮タイトルもダサいからもうちょっと響きがいいのを頼む。


ちょっとローグに興味をもちましたので、

アニメーションやらを完全無視して、

ローグをPythonで実装してみる。

ローグはUnixのゲームなので、

探せばC言語のソースぐらいはあると思うのですが、

トレーニングのために自分で考察して組んでみることに。

その後にソースを眺めればソースのリーディングも勉強できるし、

ローグの実装も頭に入るというなんていいアイディアなんでしょう。

ちなみに行き当たりばったりですので期待せずに。

Rogueに必要なものを考える。

  • マップ
  • 主人公
  • アイテム
  • メッセージウインドウ
  • 次のエリアに行く階段

関数を作る

#マップを作り、start_posまでも通知してくれる関数
#マップもオブジェクトにすべきかは今後検討。
#現在はタプルをキーに持つハッシュで定義。
type(map[(x,y)]) == int
(map_data , start_pos) = make_map(100,100)

#プレイヤーと敵キャラは基本的に同じパラメータを持っても良いと思うの。
class PlayerCharcter:
  def __init__(self,hp,x,y,pw,df,lv):
    self.pos = [x,y]
    self.hp = hp
    self.pw = pw #ここのパラメータの関係式作りがキモ。
    self.df = df
    self.lv = lv

#今回は単純に
#(atckr.pw - rcvr.df)
#として作ってみる。
#この式は編集しやすいように関数化。

def damage(atckr,rcvr)
  return (atckr.pw - rcvr.df)

#プログラムのどっからでも
#logwindowにメッセージをプッシュできるようにしたい
#とりあえずグローバルの関数がインタフェースになって
#副作用でプッシュするように仕向ける。
#コード化はできるけど、
#オブジェクトの副作用プログラミングの怖さを感じます。
#これ危ないよねぇ。でも動作確認のためにクラス作るのも…(笑)

logtext = []
def push_logwindow(text):
  logtext.append(text)

ここで、curses相当のプログラムが無いということに気づく。

cursesはcygwin上でしか動かないので、

まあcygwin入ってるっちゃ入ってるのだが、

ここではConsoleモジュールにお世話になることにする。

Console上のゲームっていいよね。

さすがにコンピュータ専門に5年も触ってれば、

WIndows上のコンソールだったり、X11上のConsole上のゲームだからって言って、

音楽鳴らせないとか、ゲームパッド使えないとかいう訳はぜんぜんなく、

プログラム上で何とでもなるぐらいわかってるので、

今もう一度コンソールゲームに向き合うのも良いと思ったりも。

表現としてなかなか誰も古臭くて使わなくなってる所に隙があるとも思うし。

余談はさておき画面構成をちょろっと考える。

伝統の80文字x24行で構築すると、

o------------------------------------------------------------------------------o
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
o------------------------------------------------------------------------------o
|HALT:ちょ、おまえ、やめろよ        (1025)                                     |
|HOGE:DAIJA!     (1021)                                                        |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
o------------------------------------------------------------------------------o

ってなところでしょうか。

結構しんどい感じになってきましたね。

まあ今回は3ヶ月の期間を設けたので大丈夫でしょう。多分。


ローグ時間

ローグのプレイ開始から何ターン後に発言された言葉なのかを記録しています。


行動の記録

中断のために、各NPC・PCが詰めた手をリストに記録しておきます。


アニメーションに際して:

基本的に敵キャラと主人公キャラとの環状のターン交代になっているが、

攻撃・アイテム利用がはさまれて居ない場合、

敵キャラや自身の移動は同時に行われる。

トルネコとかシレンとか。

Bプッシュ時はここの中間アニメが飛ばされて結果だけが残る。

ただし、攻撃アニメだけは別格。

ここがミソなのかなと。

rogue_part1