Written by
Parkdev
on
on
Python 배워보기 - 클래스를 이용한 장비관리 프로그램
Python 배워보기 - 클래스
####클래스를 이용하여 간단한 장비관리를 구현해보자
앞서 잔 코드는 매니져님의 도움을 많이 받아 작성되어, 내가 한번 짜보자는 느낌으로 새로 만들어보았다.
근대 코드가 비슷하게 만들어지는건 어쩔수 없나보다.
class Inventory(): #인벤토리
def __init__(self, name):
self.name = 'inventory'
self.item_list= []
def buy_item(self, item):
if item in self.item_list:
a = input('아이템이 있습니다. 구매하시겠습니까? (y/n)')
if a == 'y':
self.item_list.append(item)
print(f'{item.item_name}을 중복 구매하셨습니다.')
#y,n인풋을 받아 중복된 아이템이 있으면 구매전에 물어본다.
else :
print('구매를 취소하셨습니다.')
else :
self.item_list.append(item)
print('아이템을 구매하셨습니다.')
def sell_item(self, item):
if item in self.item_list:
self.item_list.remove(item)
print(f'{item.item_name}을 쓰래기통에 버렸습니다.')
else :
print('없는 아이템 입니다.')
@property
def info(self):
print(
'상태\n'
f'소지중인 장비 : {[i.item_name for i in self.item_list]}'
)
class items(): #아이템
ITEM_LIST = ['sword','ammor']
def __init__(self,item_name):
if item_name in self.ITEM_LIST:
self.item_name = item_name
else :
print(f'{item_name}은(는) 존재하는 아이템이 아닙니다.')
#ITEM_LIST에 없는 아이템은 등록이 불가능하다
self.location = None
is_equiped_var =None
@property
def is_equiped(self) :
if self.is_equiped_var == False:
print('이미 장착중입니다.')
elif self.is_equiped_var == True:
print('장착가능합니다.')
else :
print('아이템이 없음')
@property
def info(self):
print(f'아이템 이름 : {self.item_name}\n')
class Equipment(): #장비
def __init__(self, name):
self.name = name
self.equiped_item = []
def equip_item(self,inventory, item):
if item in self.equiped_item:
print ('이미 장착중인 아이템입니다.')
else:
inventory.item_list.remove(item)
self.equiped_item.append(item)
items.location = self.name
items.is_equiped_var = False
print (f'{self.name}이 {item.item_name}을/를 장착했습니다.')
def unequip_item(self, inventory, item):
if item in self.equiped_item:
self.equiped_item.remove(item)
inventory.item_list.append(item)
items.location = inventory.name
items.is_equiped_var = True
print (f'{self.name}이 {item.item_name}을/를 가방에 넣었습니다.')
else:
print ('아이템이 없습니다.')
@property
def info(self):
print (f'ID: {self.name}\n장착아이템 : {[i.item_name for i in self.equiped_item]}')
마크다운 들여쓰기는 어떻게하는지 모르겠다.
파이썬은 특히 들여쓰기가 잘못되면 오류를 뿜어내던대 들여쓰기방법을 좀더 찾아봐야 할거 같다.