- 오전시간동안 알고리즘 문제풀기 대신, 지난 rpg 개인과제로
서로 역할을 바꾸어 페어프로그래밍 (서로 다른것으로 진행)
- ERD(Entity-Relationship Diagram) 설계/구축 특강
- 파이썬 장고 실무 기초
- Try1 전략제시 목표
- 몬스터 사냥 성공시 플레이어 레벨업의 조건과 상태를 출력.
- 위 상태가 게임진행에 계속 반영 될 수 있도록 한다.
- solve 코드구현 목표
- while 문 안의 반복되는 조건문들을 함수로 구현해 모듈화.
https://github.com/jstyoon/personal-PJT/pull/4/files?diff=split&w=0)
#1
class Monster(Character):
def __init__(self, name, hp, power, give_exp=100):
self.give_exp = give_exp
super().__init__(name, hp, power)
give_exp 몬스터가 죽었을 때 반환하는 경험치 인수를 추가함
give_exp=100 인수의 default 값으로 따로 값이 주어지지 않을 때 입력된 100이 출력된다.
#2
def kill_monster(self, other): #몬스터가 죽으면 플레이어가 경험치를 얻을 수 있게 하는 함수
self.exp += other.give_exp #self를 플레이어로 생각 other를 monster로 생각
몬스터가 죽으면 플레이어가 경험치를 얻을 수 있게 하는 Player클래스의 메서드
#3
def level_up(self):
if self.exp == self.max_exp:
self.lvl += 1
self.max_exp *= 2 #레벨업 할때마다 필요경헙치 2배
self.exp = 0
tmp_power = self.power # 상승량을 알기 위해 기존 파워 저장.
tmp_mpower = self.mpower
self.power *= 2
self.mpower *= 2
print(f"{self.name}이 {self.lvl}로 레벨업!\n공격력이 {tmp_power}에서 {self.power}로\n마법 공격력이 {tmp_mpower}에서 {self.mpower}로 증가하였다!")
Player클래스의 레벨업의 속성값이 조건에 따라 변경되고 레벨업 상황에 출력되는 메서드
https://github.com/Tomatopizza/spartanAssignment1/pull/1/files?diff=split&w=0
#1
def check_initi(monster): # 플레이어는 빠졌다?
monInitiative = random.randrange(1, 21)
playerInitiative = random.randrange(1, 21)
print(f'\n당신의 주도권은 {playerInitiative}. {monster.name}의 주도권은 {monInitiative}.')
if playerInitiative >= monInitiative:
return 1 #플레이어가 이긴상황을 1이란 상수로 지정
else:
return 2 #
#2
def check_status(player, monster):
# return은 조건을 만족하는 값을 반환하거나 패스한다.
# 즉 더이상 조건을 지정할 필요가 없다면 return자체 호출
if (monster.hp <= 0):
print('You Win!')
return 1 #죽었을 떄
if(player.hp <= 0):
print('You Lose!')
return 1
return 2 #죽지않은 상황
#3
def turn(player, monster):
while(1):
if check_initi(player,monster) == 1:
print('주도권 승! 선공!') # 플레이어선공
choice_num = int(input("공격방식을 선택해 주세요 1: 일반공격 2: 마법공격"))
chooseAttack(choice_num, player, monster) # 플레이어 공격
if check_status(player, monster) == 1:
break
monster.attack(player) # 몬스터 공격
if check_status(player, monster) == 1:
break
else: #몬스터선공
print('주도권 패! 후공!')
monster.attack(player) #몬스터 공격
if check_status(player, monster) == 1:
break
choice_num = int(input("공격방식을 선택해 주세요 1: 일반공격 2: 마법공격"))
chooseAttack(choice_num, player, monster) # 플레이어 공격
if check_status(player, monster) == 1:
break
추천해주신 모델링 툴 https://www.erdcloud.com/
reference
엔터티 관계 다이어그램(ERD)은 시스템 내의 다양한 엔터티와 서로 간의 관계를 시각적으로 표현한 것이다 . 예를 들어 작가, 소설 및 소비자 요소는 ERD를 사용하여 다음과 같이 표현할 수 있다.