Участник:Vary10: различия между версиями
Перейти к навигации
Перейти к поиску
Vary10 (обсуждение | вклад) Новая страница: «CSChat» |
Vary10 (обсуждение | вклад) Нет описания правки |
||
| Строка 1: | Строка 1: | ||
CSChat | ==CSChat== | ||
====1. Разобрался с swift и написал игрушку в playground:==== | |||
import Foundation | |||
class Soldier { | |||
var HP, Strength: Int | |||
var Team: String | |||
init (team: String) { | |||
HP = Int(arc4random_uniform(20)) + 40 | |||
Strength = Int(arc4random_uniform(10)) + 1 | |||
Team = team | |||
} | |||
func hit(enemy: Soldier) -> Int{ | |||
var crit = Int(arc4random_uniform(3)) | |||
var dam = (Strength + Int(arc4random_uniform(10)) + 1) * crit | |||
enemy.HP -= dam | |||
return dam | |||
} | |||
func dead() -> Bool{ | |||
if HP <= 0 { | |||
println("Soldier from team \(self.Team) dies.\n") | |||
} | |||
return (HP <= 0) | |||
} | |||
} | |||
class Swordsman: Soldier { | |||
override func hit(enemy: Soldier) -> Int{ | |||
var dam = super.hit(enemy) | |||
if dam != 0 { | |||
println("Swordsman from team \(self.Team) slashes enemy soldier for \(dam) HP.\n") | |||
} else { | |||
println("Swordsman from team \(self.Team) misses.\n") | |||
} | |||
return 1 | |||
} | |||
} | |||
class Archer: Soldier { | |||
override func hit(enemy: Soldier) -> Int{ | |||
var dam = super.hit(enemy) | |||
if dam != 0 { | |||
println("Archer from team \(self.Team) slashes enemy soldier for \(dam) HP.\n") | |||
} else { | |||
println("Archer from team \(self.Team) misses.\n") | |||
} | |||
return 1 | |||
} | |||
} | |||
class Army { | |||
let Name: String | |||
var Soldiers: [Soldier] = [] | |||
init (n: Int, name: String) { | |||
Name = name | |||
for i in 0..<n { | |||
var k = Int(arc4random_uniform(2)) | |||
if k == 0 { | |||
Soldiers.append(Swordsman(team: name)) | |||
} else { | |||
Soldiers.append(Archer(team: name)) | |||
} | |||
} | |||
} | |||
} | |||
func battle(A: Army, B: Army) -> Army { | |||
var attacker = true | |||
while A.Soldiers.count != 0 && B.Soldiers.count != 0 { | |||
if attacker { | |||
A.Soldiers.last!.hit(B.Soldiers.last!) | |||
if B.Soldiers.last!.dead(){ | |||
B.Soldiers.removeLast() | |||
} | |||
attacker = false | |||
} else { | |||
B.Soldiers.last!.hit(A.Soldiers.last!) | |||
if A.Soldiers.last!.dead(){ | |||
A.Soldiers.removeLast() | |||
} | |||
attacker = true | |||
} | |||
} | |||
if A.Soldiers.count > 0 { | |||
return A | |||
} else { | |||
return B | |||
} | |||
} | |||
println(battle(Army(n: 5, name: "Red"), Army(n: 5, name: "White")).Name + " wins.\n")} | |||
Версия от 12:38, 21 февраля 2015
CSChat
1. Разобрался с swift и написал игрушку в playground:
import Foundation
class Soldier {
var HP, Strength: Int
var Team: String
init (team: String) {
HP = Int(arc4random_uniform(20)) + 40
Strength = Int(arc4random_uniform(10)) + 1
Team = team
}
func hit(enemy: Soldier) -> Int{
var crit = Int(arc4random_uniform(3))
var dam = (Strength + Int(arc4random_uniform(10)) + 1) * crit
enemy.HP -= dam
return dam
}
func dead() -> Bool{
if HP <= 0 {
println("Soldier from team \(self.Team) dies.\n")
}
return (HP <= 0)
}
}
class Swordsman: Soldier {
override func hit(enemy: Soldier) -> Int{
var dam = super.hit(enemy)
if dam != 0 {
println("Swordsman from team \(self.Team) slashes enemy soldier for \(dam) HP.\n")
} else {
println("Swordsman from team \(self.Team) misses.\n")
}
return 1
}
}
class Archer: Soldier {
override func hit(enemy: Soldier) -> Int{
var dam = super.hit(enemy)
if dam != 0 {
println("Archer from team \(self.Team) slashes enemy soldier for \(dam) HP.\n")
} else {
println("Archer from team \(self.Team) misses.\n")
}
return 1
}
}
class Army {
let Name: String
var Soldiers: [Soldier] = []
init (n: Int, name: String) {
Name = name
for i in 0..<n {
var k = Int(arc4random_uniform(2))
if k == 0 {
Soldiers.append(Swordsman(team: name))
} else {
Soldiers.append(Archer(team: name))
}
}
}
}
func battle(A: Army, B: Army) -> Army {
var attacker = true
while A.Soldiers.count != 0 && B.Soldiers.count != 0 {
if attacker {
A.Soldiers.last!.hit(B.Soldiers.last!)
if B.Soldiers.last!.dead(){
B.Soldiers.removeLast()
}
attacker = false
} else {
B.Soldiers.last!.hit(A.Soldiers.last!)
if A.Soldiers.last!.dead(){
A.Soldiers.removeLast()
}
attacker = true
}
}
if A.Soldiers.count > 0 {
return A
} else {
return B
}
}
println(battle(Army(n: 5, name: "Red"), Army(n: 5, name: "White")).Name + " wins.\n")}