반응형
시나리오
학생 유닛 키우기
콘솔 응용 프로그램이다.
메뉴 선택에 따라 기능을 수행한다.
1:생성 2:자습 3:강의시작 4:소등 5:취미 활동 6:파티 7:노래방가기 8:상태 확인
자습(공부하기), 취미 활동(휴식), 노래방 가기는 한 유닛을 선택하여 적용
강의시작, 소등(잠자기), 파티(음료마시기)는 전체 유닛에 적용
다음 내용처럼 학생 데이터를 정의하시오.
이름: 생성 시 전달
지력:100(최소 0, 최대 200)
체력: 100 (최소 0, 최대 200)
스트레스: 0 (최소 0, 최대 100)
연속으로 공부한 횟수: 0 (0,5), 공부를 하면 1 증가, 그 외의 행위를 하면 0으로 리셋, scnt로 부름
공부하다(체력 5소모, 지력: scnt 만큼 증가, 스트레스: 2감소)
강의를 받다.(체력 3소모, 지력: scnt 만큼 증가, 스트레스: scnt 만큼 증가)
잠자다.(체력 10회복, 스트레스: 5감소)
휴식하다.(체력 3회복, 스트레스: 25감소)
음료를 마시다.(체력 5회복, 지력: 10감소 , 스트레스: 2증가)
노래하다.(체력 10 소모, 지력: 5-scnt감소, 스트레스: 5-scnt증가)
취미활동, 노래방가기, 소등, 파티 부분은 자습, 강의시작을 구현한 것을 참고하여 직접 작성해 보세요.
Student.py
class Student:
def __init__(self, name):
self.name = name
self.iq = 100
self.hp = 100
self.stress = 0
self.scnt = 0
def Study(self):
self.SetHp(self.hp-5)
self.SetIq(self.iq+self.scnt)
self.SetStress(self.stress-2)
self.IncreScnt()
def ListenLecture(self):
self.SetHp(self.hp-3)
self.SetIq(self.iq+self.scnt)
self.SetStress(self.stress+self.scnt)
self.ResetScnt()
def Sleep(self):
self.SetHp(self.hp+10)
self.SetStress(self.stress-5)
self.ResetScnt()
def Relax(self):
self.SetHp(self.hp+3)
self.SetStress(self.stress-25)
self.ResetScnt()
def Drink(self):
self.SetHp(self.hp+5)
self.SetIq(self.iq-10)
self.SetStress(self.stress+2)
self.ResetScnt()
def Sing(self):
self.SetHp(self.hp-10)
self.SetIq(self.iq -(5-self.scnt))
self.SetStress(self.stress+(5-self.scnt))
self.ResetScnt()
def IncreScnt(self):
if self.scnt<5:
self.scnt+=1
def ResetScnt(self):
self.scnt=0
def SetStress(self,value):
if value<0:
value = 0
if value>100:
value = 100
self.stress = value
def SetIq(self,value):
if value<0:
value = 0
if value>200:
value = 200
self.iq = value
def SetHp(self,value):
if value<0:
value = 0
if value>200:
value = 200
self.hp = value
Application.py
import os
import Student
class Application:
def __init__(self):
print("학생 유닛 키우기...")
input("엔터 키를 누르면 시작합니다.")
self.stucol = list()
def Run(self):
while True:
key = self.SelectMenu()
if key =='0':
break
elif key == '1':
self.MakeUnit()
elif key == '2':
self.SelfStudy()
elif key == '3':
self.StartLecture()
elif key == '4':
self.TurnOff()
elif key == '5':
self.DoFavorite()
elif key == '6':
self.GoParty()
elif key == '7':
self.GoNoraebang()
elif key == '8':
self.ViewStates()
else:
print("잘못 선택하였습니다.")
input("엔터 키를 누르세요.")
def SelectMenu(self):
os.system("cls")
print("1:유닛 생성")
print("2:자습")
print("3:강의 시작")
print("4:소등")
print("5:취미 활동")
print("6:파티")
print("7:노래방 가기")
print("8:상태 보기")
return input("메뉴 선택:")
def MakeUnit(self):
print("유닛 생성")
name = input("이름:")
stu = Student.Student(name)
self.stucol.append(stu)
def SelfStudy(self):
print("자습")
stu = self.SelectStudent("자습할 학생:")
if stu == None:
print("없는 학생입니다.")
return
print("{0} 공부한다.".format(stu.name))
stu.Study()
def SelectStudent(self,msg):
name = input(msg)
for stu in self.stucol:
if stu.name == name:
return stu
return None
def StartLecture(self):
print("강의 시작")
for stu in self.stucol:
print("{0}...".format(stu.name))
stu.ListenLecture()
def TurnOff(self):
print("소등")
def DoFavorite(self):
print("취미 활동")
def GoParty(self):
print("파티")
def GoNoraebang(self):
print("노래방 가기")
def ViewStates(self):
print("상태 보기")
for stu in self.stucol:
self.ViewStudent(stu)
def ViewStudent(self,stu):
print("{0}:{1},{2},{3}".format(stu.name,stu.iq,stu.hp,stu.stress))
main.py
import Application
def main():
app = Application.Application()
app.Run()
if __name__ == '__main__':
main()
반응형
'언어 자료구조 알고리즘 > 프로그래밍 실습' 카테고리의 다른 글
[python] 상속 개요 - 책과 프로그래밍 책 (0) | 2020.10.30 |
---|---|
[python] 상속 실습 - 음악가, 피아니스트 (0) | 2020.10.30 |
[python] 캡슐화 실습 - 음악가 정의하기 (0) | 2020.10.29 |
[python] 캡슐화 실습 - 직사각형 클래스 정의하기 (0) | 2020.10.29 |
[python] 캡슐화 실습 - 생성자(초기화) 정의하기 (0) | 2020.10.29 |
[python] 도서 관리 프로그램 - 클래스 및 파일 입출력 포함 (0) | 2020.10.28 |
[python] 도서 관리 프로그램 - 파일 입출력 포함 (0) | 2020.10.27 |
[python] 도서 관리 프로그램 (리스트 사용, 클래스 사용X) (0) | 2020.10.26 |
[python] 함수 실습 (0) | 2020.10.23 |
[python] 제어문 실습 (0) | 2020.10.22 |