第5回(OOP-第1回)
スライド
参考プログラム
code:recursive.py
# 再帰の例に挙げたプログラムです。
# 試しに少しいじって動かしたり、理解を深めるのに使ってください。
def plusplus(x):
if x == 1:
return 1
else:
return plusplus(x - 1) + x
print(plusplus(10))
code:player.py
# 今回例に上げたPlayerクラス関連です。
class Player:
def __init__(self, _hp, _atk, _def, _spd, _url): # 変数の初期設定
self.hp = _hp
self.atk = _atk
self.defe = _def
self.spd = _spd
self.url = _url
def damage(self, enemyAtk):
dmg = enemyAtk - self.defe
if dmg < 1:
dmg = 1
self.hp -= dmg
player1 = Player(100, 30, 20, 10, "pl1.jpg")
print(player1.hp) # HPの100を出力
player1.damage(50) # Atk=50で攻撃され30ダメージ
print(player1.hp) # HPの70を出力
player2 = Player(100, 80, 10, 5, "pl2.jpg")
player1.damage(player2.atk) # pl2からpl1に攻撃
# Atk=80で攻撃され60ダメージ
print(player1.hp) # HPの10を出力
code:cards.py
# 最後の問題のプログラムの大枠です。パワポから少しコメントを足してあります。
import random # random.shuffle用
class Card:
def __init__(self, mark, num):
# (self.)suitと(self.)numberを定義
# suitについては0,1,2,3の数字で管理し、それぞれの数字にスートを結びつける形でも良い
# その場合は出力時の工夫が必要
# 出来る人は__str__という関数を調べてみても良いでしょう。__init__と類似の、クラスで固有の関数名を持つもので、string型として何を返すかを指定できます。
class Deck:
def __init__(self):
# (self.)cardsの定義&シャッフル
# シャッフルはrandom.shuffle(リスト)がオススメ
def draw(self):
# 1枚カードを引き、取り除いてreturn
# テスト用プログラム例
deck = Deck()
for c in deck.cards:
print("{} {}".format(c.suit,c.number))
while len(deck.cards) != 0:
card = deck.draw()
print("You draw:{} {}".format(card.suit,card.number))
# これで全カードが二度出力されれば良い
# 順番は同じでなくてもOK→Deckクラスのdraw関数に依存