알고리즘 4/5

justyoon·2023년 4월 5일
0

AI5 Python/Django

목록 보기
18/31

Did

  1. 오전시간동안 알고리즘 문제풀기 대신, 지난 rpg 개인과제로
    서로 역할을 바꾸어 페어프로그래밍 (서로 다른것으로 진행)
  1. ERD(Entity-Relationship Diagram) 설계/구축 특강
  1. 파이썬 장고 실무 기초

Prblm

💡페어프로그래밍

  1. Try1 전략제시 목표
  • 몬스터 사냥 성공시 플레이어 레벨업의 조건과 상태를 출력.
  • 위 상태가 게임진행에 계속 반영 될 수 있도록 한다.
  1. solve 코드구현 목표
  • while 문 안의 반복되는 조건문들을 함수로 구현해 모듈화.

Try

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클래스의 레벨업의 속성값이 조건에 따라 변경되고 레벨업 상황에 출력되는 메서드

Solve

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

Learn

  • 네비게이터와 드라이버의 역할을 번갈아 해보면서 코드구현을 설명하고 작성하는 감각을 집중적으로 검증하고 발전시킬 수 있었다.

ERD(Entity-Relationship Diagram) 설계/구축 학습

추천해주신 모델링 툴 https://www.erdcloud.com/

💡정의

reference
엔터티 관계 다이어그램(ERD)은 시스템 내의 다양한 엔터티와 서로 간의 관계를 시각적으로 표현한 것이다 . 예를 들어 작가, 소설 및 소비자 요소는 ERD를 사용하여 다음과 같이 표현할 수 있다.

💡작성개요

profile
with gratitude, optimism is sustainable

0개의 댓글