[잡담] [이미지 데이터 주의] 목마른 나머지 우물팝니다. 컴맹의 게임제작기-4-
2019.03.17 18:31
1,214
4
1
본문
안녕하세요. 라르트입니다.
가챠 코드에서 choice로 변수에서 숫자를 뽑던것을 변수를 없애버리고 randint로 자체에서 뽑을 수 있도록 변경했습니다. 일에서 외우는게 적으면 적을수록 편하듯이, 변수는 없을 수록 좋지 않겠습니까. randint를 가르쳐 주신 이에나군님에게 감사드립니다.
주말은 역시 아무것도 안하고 싶은 날이었습니다. 취미생활조차 귀찮아 내던지고 이불에서 천장의 무늬만 보면서 멍때리고 있었습니다.
그래도 아무것도 안한 것은 아닙니다!
Kunggom님이 데이터를 처리하는 데 조언을 주셔서 라이브러리를 통해 csv파일을 작성하고 읽어오는 공부를 조금 하고 있습니다. 코딩으로 csv파일에 들어갈 데이터들을 작성한 다음 그것을 저장하고 해당 파일을 제가 만들고 있는 프로그램에서 읽어서 사용한다 라고 이해하고 공부하는 중인데 제가 생각한 것이 맞는지 모르겠네요.
그리고 프로그램을 아주 조금 손봤습니다
저 밑에 확률에 따라서 카드 등급을 설정하는 부분도 가챠 종류에 따라 바뀌도록 수정해야하는데, 아직 못했네요. 이불이 너무 강적입니다.
이거에다가 마찬가지로 이에나군님이 말씀하신 의사코드라는 것을 작성했습니다. 아직 카드와 전투 설정이 되지 않아서 상태부분은 작성하지 못했습니다만, 전체적인 코드를 짜는데 상당히 도움이 될것 같습니다.
파일을 연다
세이브 파일이 있다면 다음 과정을 진행한다.
-캐릭터 이름, 레벨 등 필요한 변수를 읽어온다.
세이브 파일이 없다면 다음 과정을 진행한다.
-캐릭터 이름을 설정한다
-초기 소지금과 레벨, 경험치 등을 설정한다.
while다음의 과정 전체를 반복하도록 한다.
while메인화면을 띄운다.
-캐릭터 이름, 레벨, 소지금, 경험치, 각 기능(탐색, 상점, 상태)를 표시한다.
-원하는 행동을 선택하게 한다.
-선택하는 행동으로 이동하게 한다.
while탐색을 선택했을때
-1차지역을 보여준다.
-원하는 지역을 선택하게 한다.
-선택한 지역에 따라 2차 지역을 보여준다.
-원하는 2차지역을 선택하게 한다.
-탐색방식 창으로 이동하게 한다.
while 탐색방식으로 이동했을때
-탐색방식을 보여준다.
-탐색방식을 선택하게 한다.
-탐색실시로 이동하게한다.
while 탐색 실시로 이동했을 때
-선택한 탐색방식에 따라 타일 등장확률을 바꾼다.
for 10번 실시할때까지 반복한다.
-타일 등장확률에서 3개를 선정한다.
-선정한 3개를 1, 2, 3의 이름으로 보여준다.
-1, 2, 3중 선택하게 한다.
-선정된 타일을 보여준다.
-선택한 값에 맞는 타일로 이동한다.
#TODO 이후 타일에 따른 알고리즘 설정하기.
while상점을 선택했을때
-갸차와 카드 판매를 보여준다.
-가챠 또는 카드 판매를 선택하게 한다.
-선택한 것으로 이동한다.
while 가챠를 선택했을 때
-가챠의 종류와 가격을 보여준다.
-원하는 가챠를 선택하게 한다.
-횟수를 고르게 한다.
-if 해당가챠에 필요한 재화의 현재 소지량 <= 필요한 양
-소지금 혹은 소지 재화가 부족하다고 보여준다.
-상점 화면으로 돌아간다.
for 선택한 횟수만큼 반복한다.
-선택한 가챠의 카드등급 확률을 불러온다.
-하나를 뽑는다.
-뽑은 것에 맞는 카드 등급을 표시한다.
-뽑힌 카드 등급의 총 수를 불러온다.
-해당 숫자중 하나를 뽑는다.
-해당 숫자에 맞는 카드를 찾아서 보여준다.
-해당 카드를 소지카드에 추가한다.
가챠선택 화면으로 돌아간다.
while 카드 판매를 선택했을 때
-소지 카드를 보여준다.
-소지 카드중 판매할 카드를 선택하게 한다.
if 아무것도 판매 안할 때
메인화면으로 돌아간다.
-선택된 카드를 보여준다.
-해당카드를 정말 판매하는지 물어본다.
if 판매하지 않는다고 했을 때
-상점창으로 돌아간다.(break)
해당 카드를 소지 카드에서 삭제한다.
해당 카드 등급에 맞는 재화를 각 소지재화에 추가한다.
while상태를 선택했을때
-성장 시스템(카드 강화, 진화, 아이템, 스킬)과 덱 설정을 표시한다.
-원하는 기능을 선택하게 한다.
-원하는 기능으로 이동한다.
#TODO 상태의 각 기능 알고리즘 완성하기.
while 카드강화를 선택했을 때
while 진화를 선택했을 때
while 아이템을 선택했을 때
while 스킬을 선택했을 때
while 덱 설정을 선택했을 때
알파벳만 보다가 한글이 보이니 정말 좋네요.
-----------
다음은 탐색에 대한 게임 기획을 했습니다.
탐색.
탐색은 여러가지 타일들을 랜덤으로 선택하면서 진행하게 됩니다.
타일은 일반타일과 특수 타일로 나뉩니다.
일반타일에는 소량의 재화를 얻는 타일, 체력회복 타일, 아무것도 없는 타일이 있습니다. 함정타일도 고려중 입니다.
특수타일에는 전투타일, 진화 포인트 획득 타일, 재화 습득 타일, 카드 습득 타일이 있습니다.
이런 타일들은 그 확률에 편차를 가지는데 이 편차를 정하는 방법이 바로 탐색방식입니다.
실제 탐색에 들어가게 되면, 확률에 따라서 3개의 타일을 선정하고 이것을 1, 2, 3의 문자로 여러분에게 주어집니다. 즉, 갈 수 있는 타일은 이미 정해져 있지만 여러분은 어디로 갈지는 알 수 없습니다. 해당 선택지 중에서 하나를 여러분이 선택하면 각각의 1, 2, 3이 어느 타일이었는지를 보여준 뒤 여러분이 선택한 타일로 이동합니다. (선택하지 않은 타일을 궁금해 하지 않으셔도 됩니다.물론 알고싶지 않다고 하더라도 알려드립니다.)
선택한 타일에 도착하면 그 타일의 설정에 따라 재화를 습득하거나 소지 덱의 체력을 회복하거나 아무것도 안하거나 혹은 전투를 할 수도 있습니다.
타일은 총 10개를 밟게 되고 만일 10개를 전부 밟지 못하고 전투 등에의해 덱의 체력이 0이 된다면, 탐색은 즉시 종료되고 해당 탐색에서 얻은 재화는 탐색 방식에 따라 모두 잃거나 극히 일부만을 보존할 수 있습니다.
이상입니다. 오늘은 주말이라는 이틀의 시간이 있었음에도 매우 짧네요. 이놈의 귀차니즘....
프로그램도 그렇고 기획쪽도 그렇고 카드와 전투 시스템이 안나오니 어느거든 하기 힘드네요. 월요일부터는 전투와 카드 설정에 집중하도록 하겠습니다.
보아주셔서 감사합니다. 조언은 언제나 환영이니 아끼지마시고 부탁드립니다.
- 15.69Kbytes
1
로그인 후 추천 또는 비추천하실 수 있습니다.
-
라르트
- 회원등급 : 정회원 / Level 15
포인트 100
경험치 11,393
[레벨 15] - 진행률
60%
가입일 :
2016-11-14 09:24:29 (2958일째)
미입력
전체 2,254 건 - 41 페이지
제목 | 글쓴이 | 날짜 | 뷰 | 추천 | ||
---|---|---|---|---|---|---|
라르트 2,089 2 2019.03.19 | ||||||
셍튜므 1,403 0 2019.03.17 | ||||||
라르트 1,215 1 2019.03.17 | ||||||
라르트 1,672 0 2019.03.16 | ||||||
라르트 2,181 1 2019.03.15 | ||||||
허무정 1,828 0 2019.03.14 | ||||||
라르트 1,908 0 2019.03.14 | ||||||
라르트 1,558 0 2019.03.12 | ||||||
Kunggom 1,832 2 2019.03.10 | ||||||
타노스 1,387 0 2019.03.10 | ||||||
싸볫쓰끼싸유쓰 1,684 0 2019.03.02 | ||||||
젝카 1,819 0 2019.02.28 | ||||||
AMN연호 1,874 0 2019.02.28 | ||||||
닥터회색 2,096 3 2019.02.28 | ||||||
플라잉란코 1,428 0 2019.02.25 |
댓글목록 4
이에나군님의 댓글
<div>def function_name(변수1,변수2...)</div>
<div><span style="white-space: pre"> </span>함수 내용</div>
<div>이런 식으로 함수를 작성할 수 있습니다. 이런 함수를 통한 기능의 분리는 프로그램 관리를 깔끔하게 해주지요. </div>
<div>위의 슈도코드를 보니 전부 하나의 while 문 아래에 다 집어넣으시는 것 같은데요, 탐색, 상점, 상태 보이기 등의 기능을 담당하는 함수를 따로따로 만들고 필요할 때 불러오는 방식을 추천합니다.</div>
<div><br /></div>
<div>예를 들자면</div>
<div>def 탐험(,,)</div>
<div><span style="white-space: pre"> </span>while~~ 탐험 관련 기능</div>
<div><span style="white-space: pre"> </span>return 탐험의 결과물</div>
<div><br /></div>
<div>def 상점(...)</div>
<div><span style="white-space: pre"> </span>while ~~ 상점 관련 기능</div>
<div><span style="white-space: pre"> </span>return 상점의 결과물</div>
<div><br /></div>
<div>def main()</div>
<div><span style="white-space: pre"> </span>while</div>
<div><span style="white-space: pre"> </span>선택을 입력받기</div>
<div><span style="white-space: pre"> </span>선택이 1이면 탐험 함수 불러오기</div>
<div><span style="white-space: pre"> </span>선택이 2이면 상점함수 불러오기</div>
<div><br /></div>
<div>같은 느낌으로요.</div>
라르트님의 댓글의 댓글
Kunggom님의 댓글
<p><br />이런 식으로 프로그램이 각 기능 단위로 분리되어 있으면, 프로그램 내의 동작을 각 기능 단위간의 관계로 도식화한 다이어그램을 그릴 수가 있습니다. 반대로 말하면, 원하는 것을 위해 그런 그림을 먼저 그리고(=설계) 그 다음에 그 세부사항을 구현하는 식으로 프로그램을 짤 수도 있죠. 이런 설계 과정은 규모가 큰 프로그램을 만들 때는 필수적입니다.</p>
라르트님의 댓글의 댓글