2014年11月25日火曜日

[swift]テキストRPGをswiftの練習がてら作ってみようと思った - 2

とりあえず、冒険をシミュレーションするようにしたい
(コードに一切効率は考えない。継承しまくり、ネストとか気にしない)

■ 最初の物語
ある戦士アルテアが、泉の洞窟にいって、探索を開始する
洞窟にはコウモリがいて襲ってくるが撃退しながら
探索を継続し、一番奥にある泉の水をくんでくる。


■ 構成要素はなんだろう
戦士
コウモリ
洞窟
拾ってくるもの


うん、なんか大きいので、少し話を縮小しよう。
■最初の物語改
戦士アルテアは泉の洞窟にいく、洞窟の奥には泉があり、それを汲みにいく

(構成要素)
戦士  (Warrior)
洞窟  (Cave)


public class Warrior{
    var name:String
    var hp:Int
    public init(name:String,hp:Int){
        self.name=name
        self.hp=hp
    }

}


public class Cave{
    var name="泉の洞窟"
    var item:String="泉の水"
    var size:Int=20 //洞窟の大きさ
    var stepCount=0; //どれだけ進んだか
    var player:Warrior; //冒険者
    var direction:Int=1; //進んでいる方向
    var progress:Bool;//進行中かどうか

    
    public init(player:Warrior){
        self.stepCount=0
        self.player=player
        self.progress=true;
        print("\(player.name)\(name)の探索を始める\n")
    }
    
    public func step(){
        if(!progress){
            return
        }
        stepCount+=direction;
        print("\(player.name)が歩く(\(stepCount))\n")
        if(stepCount==20){
            direction = -1
            print("\(player.name)\(item)を手に入れた\n")
        }
        if(stepCount<0){
            progress=false;
            print("\(player.name)\(name)から出た\n")
        }
    
    }
    

}

動かす
    func testTextRPG() {
        var warrior:Warrior=Warrior(name: "アルテア", hp: 100)
        var cave:Cave=Cave(player: warrior)
        
        
        for(var i=0;i<100000;i++){
            cave.step()
        }

    }


アルテアは泉の洞窟の探索を始める
アルテアが歩く(1)
アルテアが歩く(2)
アルテアが歩く(3)
アルテアが歩く(4)
アルテアが歩く(5)
アルテアが歩く(6)
アルテアが歩く(7)
アルテアが歩く(8)
アルテアが歩く(9)
アルテアが歩く(10)
アルテアが歩く(11)
アルテアが歩く(12)
アルテアが歩く(13)
アルテアが歩く(14)
アルテアが歩く(15)
アルテアが歩く(16)
アルテアが歩く(17)
アルテアが歩く(18)
アルテアが歩く(19)
アルテアが歩く(20)
アルテアが泉の水を手に入れた
アルテアが歩く(19)
アルテアが歩く(18)
アルテアが歩く(17)
アルテアが歩く(16)
アルテアが歩く(15)
アルテアが歩く(14)
アルテアが歩く(13)
アルテアが歩く(12)
アルテアが歩く(11)
アルテアが歩く(10)
アルテアが歩く(9)
アルテアが歩く(8)
アルテアが歩く(7)
アルテアが歩く(6)
アルテアが歩く(5)
アルテアが歩く(4)
アルテアが歩く(3)
アルテアが歩く(2)
アルテアが歩く(1)
アルテアが歩く(0)
アルテアが歩く(-1)
アルテアは泉の洞窟から出た


うん、物語は動き出した。次は、アルテアが真面目に歩きすぎるので、それを調整しよう。

0 件のコメント:

コメントを投稿