Slide 1

Slide 1 text

RPGͰֶͿSwi'ͷ஋ܕ Yuta Koshizawa @koher

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

ม਺ let maxHP = 153 // ࠷େHP var hp = maxHP // ݱࡏHP

Slide 7

Slide 7 text

ԋࢉ // (߈ܸྗ - ๷ޚྗ) ÷ 2 ͰμϝʔδΛܭࢉ͢Δ৔߹ let damage = (character.attack - target.defense) / 2 print("\(character.name)ͷ͜͏͖͛ɻ") print("\(target.name)ʹ\(damage)ͷμϝʔδʂ")

Slide 8

Slide 8 text

৚݅෼ذ hp += 80 // ࠷େHPΛ௒͑ͯճ෮͠ͳ͍Α͏ʹ͢Δ if hp > maxHP { hp = maxHP }

Slide 9

Slide 9 text

഑ྻͱ܁Γฦ͠ // ΩϟϥΫλʔͷ഑ྻͰύʔςΟΛද͢ var party: [Character] = [...] // ϧʔϓͰύʔςΟͷΩϟϥΫλʔΛॱ൪ʹऔಘ for character in party { print(character.name) print("HP \(character.hp)") print("MP \(character.mp)") print() }

Slide 10

Slide 10 text

Α͋͘Δϓϩάϥϛϯάॳ৺ऀ޲͚ͷ՝୊ // 1͔Β100·Ͱͷ߹ܭΛٻΊͳ͍͞ var sum = 0 for n in 1...100 { sum += n } print(sum)

Slide 11

Slide 11 text

۩ମྫͰֶ΅͏ʹ΋ྫΛཧղ͢Δͷ͕େม

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

RPGΛ୊ࡐʹϓϩάϥϛϯάΛֶͿ × ॳ৺ऀ

Slide 14

Slide 14 text

RPGΛ୊ࡐʹϓϩάϥϛϯάΛֶͿ × ܦݧऀ

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

Swi$ ͷҰ൪ͷಛ௃͸ԿͰ͔͢ʁ

Slide 17

Slide 17 text

ͨͱ͑͹ɺ஋ܕத৺ͷݴޠͰ͋Δ͜ͱ

Slide 18

Slide 18 text

Swi$ ඪ४ϥΠϒϥϦ͸΄΅͢΂ͯ஋ܕ struct Int { ... } struct Double { ... } struct Bool { ... } struct String { ... } struct Array { ... } struct Dictionary { ... } enum Optional { ... }

Slide 19

Slide 19 text

ࢀরܕͷίϨΫγϣϯʢ Python ʣ # Python a = [2, 3, 4] b = a a[2] = 5 print(a) # [2, 3, 5] print(b) # [2, 3, 5]

Slide 20

Slide 20 text

஋ܕͷίϨΫγϣϯʢ Swi% ʣ // Swift var a = [2, 3, 4] var b = a a[2] = 5 print(a) // [2, 3, 5] print(b) // [2, 3, 4]

Slide 21

Slide 21 text

Swi$ ͷ஋ܕ × SWIFT QUEST

Slide 22

Slide 22 text

஋ܕ͸↓ͷ͍͍ͱ͜ͲΓ ϛϡʔλϒϧΫϥε ΠϛϡʔλϒϧΫϥε

Slide 23

Slide 23 text

ϛϡʔλϒϧΫϥε class Character { let name: String // ໊લ var hp: Int // ̝̥ var mp: Int // ̢̥ let attack: Int // ߈ܸྗ let defense: Int // ๷ޚྗ ... }

Slide 24

Slide 24 text

༐ऀ let hero = Character( name: "Ώ͏͠Ό", hp: 153, mp: 25, attack: 162, defense: 97 )

Slide 25

Slide 25 text

ϛϡʔλϒϧΫϥε let hero = Character(name: "Ώ͏͠Ό", ...) let archfiend = Character(name: "·͓͏", ...) print("\(archfiend.name)ͷ͜͏͖͛ɻ") let damage = (archfiend.attack - hero.defense) / 2 hero.hp -= damage print("\(hero.name)ʹ\(damage)ͷμϝʔδʂ")

Slide 26

Slide 26 text

ϛϡʔλϒϧΫϥε class Character { let name: String // ໊લ var hp: Int // ̝̥ var mp: Int // ̢̥ let attack: Int // ߈ܸྗ let defense: Int // ๷ޚྗ ... }

Slide 27

Slide 27 text

ΠϛϡʔλϒϧΫϥε class Character { let name: String // ໊લ let hp: Int // ̝̥ let mp: Int // ̢̥ let attack: Int // ߈ܸྗ let defense: Int // ๷ޚྗ ... }

Slide 28

Slide 28 text

ΠϛϡʔλϒϧΫϥε var hero = Character(name: "Ώ͏͠Ό", ...) var archfiend = Character(name: "·͓͏", ...) print("\(archfiend.name)ͷ͜͏͖͛ɻ") let damage = (archfiend.attack - hero.defense) / 2 hero = Character( name: hero.name, hp: hero.hp - damage, mp: hero.mp, attack: hero.attack, defense: hero.defense ) print("\(hero.name)ʹ\(damage)ͷμϝʔδʂ")

Slide 29

Slide 29 text

ΠϛϡʔλϒϧΫϥε class Character { let name: String // ໊લ let hp: Int // ̝̥ let mp: Int // ̢̥ let attack: Int // ߈ܸྗ let defense: Int // ๷ޚྗ ... }

Slide 30

Slide 30 text

஋ܕʢ struct ʣ struct Character { let name: String // ໊લ var hp: Int // ̝̥ var mp: Int // ̢̥ let attack: Int // ߈ܸྗ let defense: Int // ๷ޚྗ ... }

Slide 31

Slide 31 text

஋ܕʢ struct ʣ var hero = Character(name: "Ώ͏͠Ό", ...) var archfiend = Character(name: "·͓͏", ...) print("\(archfiend.name)ͷ͜͏͖͛ɻ") let damage = (archfiend.attack - hero.defense) / 2 hero.hp -= damage print("\(hero.name)ʹ\(damage)ͷμϝʔδʂ")

Slide 32

Slide 32 text

ϛϡʔλϒϧΫϥε func performAttack(by character: Character, to target: Character) { print("\(character.name)ͷ͜͏͖͛ɻ") let damage = (character.attack - target.defense) / 2 target.hp -= damage print("\(target.name)ʹ\(damage)ͷμϝʔδʂ") print() } performAttack(by: hero, to: archfiend) performAttack(by: archfiend, to: hero)

Slide 33

Slide 33 text

ΠϛϡʔλϒϧΫϥε // লུ

Slide 34

Slide 34 text

஋ܕʢ struct ʣ func performAttack(by character: Character, to target: Character) -> Character { var target = target print("\(character.name)ͷ͜͏͖͛ɻ") let damage = (character.attack - target.defense) / 2 target.hp -= damage print("\(target.name)ʹ\(damage)ͷμϝʔδʂ") print() return target } archfiend = performAttack(by: hero, to: archfiend) hero = performAttack(by: archfiend, to: hero)

Slide 35

Slide 35 text

஋ܕʢ struct ʣ func performAttack(by character: Character, to target: inout Character) { print("\(character.name)ͷ͜͏͖͛ɻ") let damage = (character.attack - target.defense) / 2 target.hp -= damage print("\(target.name)ʹ\(damage)ͷμϝʔδʂ") print() } performAttack(by: hero, to: &archfiend) performAttack(by: archfiend, to: &hero)

Slide 36

Slide 36 text

ϛϡʔλϒϧΫϥε func performAttack(by character: Character, to target: Character) { print("\(character.name)ͷ͜͏͖͛ɻ") let damage = (character.attack - target.defense) / 2 target.hp -= damage print("\(target.name)ʹ\(damage)ͷμϝʔδʂ") print() } performAttack(by: hero, to: archfiend) performAttack(by: archfiend, to: hero)

Slide 37

Slide 37 text

ϛϡʔλϒϧΫϥε class Party { let members: [Character] ... }

Slide 38

Slide 38 text

ϛϡʔλϒϧΫϥε let friendParty = Party(members: [...]) let enemyParty = Party(members: [...]) for character in friendParty.members { performAttack(by: character, to: any(of: enemyParty.members)!) // } for character in enemyParty.members { performAttack(by: character, to: any(of: friendParty.members)!) // }

Slide 39

Slide 39 text

஋ܕʢ struct ʣ var friendParty = Party(members: [...]) var enemyParty = Party(members: [...]) for character in friendParty.members { performAttack(by: character, to: &any(of: enemyParty.members)!) // } for character in enemyParty.members { performAttack(by: character, to: &any(of: friendParty.members)!) // }

Slide 40

Slide 40 text

॓୊ ஋ܕͰεϚʔτʹॻ͘ʹ͸Ͳ͏͢Ε͹Α͍Ͱ͠ΐ͏ʁ // ϛϡʔλϒϧΫϥε performAttack(by: character, to: any(of: friendParty.members)!) // // ஋ܕʢ struct ʣ performAttack(by: character, to: &any(of: enemyParty.members)!) // h"ps:/ /git.io/vx7jW

Slide 41

Slide 41 text

No content