洞窟は、一人だけでなく、複数の戦士の挑戦を受け入れます。
帰り道は冗長なので省略されました。
■戦士
public class Warrior{
var name:String
var hp:(Int,Int) // 現在のHP/HPの最大値
var location:Int // 洞窟での位置
public init(name:String,hpMax:Int){
self.name=name
self.hp=(hpMax,hpMax)
self.location=0
}
public func isDead()->Bool{
return (hp.0 <= 0)
}
public func walk(){
}
public func recoverFull(){
hp.0=hp.1
}
public func recover(val:Int){
if(hp.0 < hp.1){
hp.0+=val
if(hp.0 > hp.1){hp.0=hp.1}
}
}
public func damage(val:Int)->Bool{
if(hp.0 > 0){
hp.0-=val
if(hp.0 < 0){
hp.0=0
return false
}
}
return true
}
}
■洞窟
public class Cave{
var name:String
var item:String
var size:Int
var players:NSMutableArray;
public init(name:String,size:Int,item:String){
self.name=name
self.size=size
self.item=item
self.players=[];
}
public func addPlayer(player:Warrior){
player.location=0;
self.players.addObject(player)
print("\(player.name)は\(name)の探索を始める\n")
}
public func step(){
for a in players{ //ここがうまくない、下と一行で書きたい
var player:Warrior=a as Warrior;
var rand = arc4random()%100
if(rand>90){
player.damage(60)
player.location+=2;
println("\(player.name)は、罠にはまって大ダメージ!(HP:\(player.hp))")
}else if(rand>60){
player.damage(2)
player.location+=2;
println("\(player.name)が歩く(HP:\(player.hp))")
}else if(rand>30){
player.damage(6)
player.location+=6;
println("\(player.name)は走った(HP:\(player.hp))")
}else{
player.recover(6)
println("\(player.name)は少し休んだ(HP:\(player.hp))")
}
if(player.isDead()){
println("\(player.name)は死んでしまった(HP:\(player.hp))")
players.removeObject(player)
} else if(player.location>=size){
player.recoverFull();
println("\(player.name)が\(item)を手に入れた。(HP:\(player.hp))")
println("\(player.name)は\(name)から出た")
players.removeObject(player)
}
}
}
}
■起動部分
func testTextRPG() {
var warrior:Warrior=Warrior(name: "アルテア", hpMax: 100)
var warrior2:Warrior=Warrior(name: "カルテ", hpMax: 80)
var cave:Cave=Cave(name: "泉の洞窟", size: 30, item: "泉の水")
cave.addPlayer(warrior)
cave.addPlayer(warrior2)
for(var i=0;i<100000;i++){
cave.step()
}
}
■Story
どちらが先に泉の水を手にいれるか、お互いの誇りをかけて戦士アルテアとカルテは洞窟に挑む。
アルテアは泉の洞窟の探索を始める
カルテは泉の洞窟の探索を始める
アルテアが歩く(HP:(98, 100))
カルテは少し休んだ(HP:(80, 80))
アルテアが歩く(HP:(96, 100))
カルテは走った(HP:(74, 80))
アルテアが歩く(HP:(94, 100))
カルテは走った(HP:(68, 80))
アルテアは少し休んだ(HP:(100, 100))
カルテは少し休んだ(HP:(74, 80))
アルテアは少し休んだ(HP:(100, 100))
カルテは少し休んだ(HP:(80, 80))
アルテアは少し休んだ(HP:(100, 100))
カルテは走った(HP:(74, 80))
アルテアは少し休んだ(HP:(100, 100))
カルテは走った(HP:(68, 80))
アルテアは走った(HP:(94, 100))
カルテは走った(HP:(62, 80))
カルテが泉の水を手に入れた。(HP:(80, 80))
カルテは泉の洞窟から出た
アルテアは少し休んだ(HP:(100, 100))
アルテアが歩く(HP:(98, 100))
アルテアは、罠にはまって大ダメージ!(HP:(38, 100))
アルテアは走った(HP:(32, 100))
アルテアは走った(HP:(26, 100))
アルテアは走った(HP:(20, 100))
アルテアが泉の水を手に入れた。(HP:(100, 100))
アルテアは泉の洞窟から出た
今のところ、 ルールは洞窟(フィールド)、戦士のキャラクタはできるだけデータにしていこうと考えてます。
0 件のコメント:
コメントを投稿