게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
[자작] 게임을 만들어봤습니다 조언좀 해주세요!
게시물ID : programmer_3206짧은주소 복사하기
작성자 : 블루♪레이븐
추천 : 6
조회수 : 708회
댓글수 : 9개
등록시간 : 2014/05/11 23:28:51
c언어는 교양때 배운 printf랑 scanf밖에 모르던 초짜가

책한권 펴들고 일주일간 씨름해서 겨우 봐줄만한 초딩게임 하나 만들었습니다!


1398425906191.jpg




아직 메인화면이나 글자같은거 정리 안해서 파일 로드 실패하면 "파일로드ㄴㄴ" 라든가 " ㅍㅇㅅㅍ"같이

급하게 대충 넣어놓은 글자들이 많네요 ㅋㅋ 깔끔하게 다듬으면 이쁘장할텐데ㅠㅠ


1.jpg

실행시 첫 화면입니다 

메인이고 뭐고 업습니다

전체에 switch 걸어서 default를 break넣어서 종료로 해뒀습니다

이어하기는.. 아래에 계속 설명드리고 새로하기를 눌러보겠습니다


2.jpg



제 작명센스는 초딩 그 이상도 이하도 아닙니다 (진지)

남자는 공템 워해머를 가져갑니다

매 페이지마다 system('cls')를 넣어놔서 한페이지 넘어가면 지워집니다



3.jpg



왼손! 입니다 이번엔 전투도끼 가져가겠습니다


4.jpg

빰ㅋ

워해머 공3방1   -> "P"
전투도끼 공2 방2 -> "F"
참고로 장검은 "I"입니다

무기선택창도 역시 switch썻으며 매우 고급작업으로 default값으로는 continue; 넣고 switch전체에 for(i=1; i==1) 넣어서

1,2,3이 아니라 다른것을 입력헀을시 'printf다시 입력하시오'가 뜹니다     <-- 이거 배우는데 하루죙일 걸림

"hello world!!"

아무키나 누르시오는 system'pause'넣어서 그렇습니다

왜 넣었냐면 저 상태에서 아무키나 누르면 저기서 두가지가 내문서에 저장됩니다

fp = fopen("C:\Users\k\Documents\stat.txt","w+")

이걸 사용해서, 내문서에 stat.txt에는 공격 방어 체력인 5,3,9 라는 숫자가,

weap.txt에는 무기 심볼인 P,F 가 저장됩니다

그리고, 만약 첫페이지때 이어하길 누른다면

 fp=fopen("C:\users\k\Documents\weap.txt","r");

이놈이 동착해서 내문서의 텍스트 파일들을 읽어옵니다


5.jpg

역시 system'cls'로 싹 지워지고,

마을에 입장합니다

일단 상점에 가보면,


6.jpg

딱히 뭘 파는게 아니라 그냥 무기 변경을 할수 있습니다

사용된건 처음 무기 선택할때 썼던거 전부 긁어서, 약간 수정해서 썼습니다

물론 txt파일 두개도 만들어서 저장합니다

이번엔 상태창에 가보겠습니다

7.jpg

아까 상점에서

오른손엔 전투도끼 2,2,F
왼손엔 장검 1.3,I

로 가꿔서 공방이 바뀌었고 졸라맨 무기도 바꼈습니다

역시 처음 새로하기때 썻던거 약간 손봤을뿐이구요 역시 저장도 됩니다

8.jpg

신전에 왔습니다

띄어쓰기, 시스템 다 없네요 ㅋㅋ 앜

체력 회복 개념은 int 선언할떄 MAXhp랑 Mhp(myhp) 두개 선언해서,

아직은 없지만, 만약 렙업할시 maxhp가 상승하고 전투나 상태창에는 Mhp가 표기되는데

신전에 올경우 maxhp = mhp로 변경해줘서 mhp가 maxhp와 같게되는 구조입니다

겁나 간단함


9.jpg


드디어 심혈을 기울인 던전!
겁나 쓸모없이 system'pause'넣었습니다



10.jpg

겁나 쓸모없이 다이나믹한 구조입니다

아까 페이지에서 아무키나 누르면 "던전에 입장하셨습니다.' 메세지와 함께
'던전 탐색중' 메세지가 뜬다음에 

printf("던젼 탐색중");
Sleep(50);
printf(".");Sleep(50);printf(".");Sleep(50);printf(".");
printf("몬스터 발견!n");

0.05초 간격으로 점 3개가 찍힌다음에 몬스터 발견! 이 출력됩니다

겁나 쓸모없는 로딩구현이었습니당 원레는 500으로 0.5초 했었는데 테스트 할때마다 점 찍히는거 보고있자니 빡쳐서 0하나 빼버렸슴다

'고블린'이/가 출현했습니다!'는
Mons = rand()%3+1;
if(RM)
printf("%s이/가 출현했습니다!n",Mons==1?"스켈레톤" : Mons==2?"좀비" : "고블린");

썼씁니다

일단 Mons를 선언하고, 랜덤으로 1에서 3까지 굴린다음에 1이면 스켈, 2면 좀비, 다른거면 고블린이 나옵니다

근데 이상하게 고블린만 계속 나오고 어~쩌다 스켈나오고, 좀비는 본적이 없네요

각 몬스터들은 

switch(Mons)
{
case 1:
Mob ='W';
Ahp = 100 ;
Aatk = 1;
Adef = 2;

스위치를 사용해서 Ahp랑 Aatk랑 Adef를 부여받습니다 심볼도 부여받습니다 스켈은W 좀비는Y 고블린은 G입니다

닮았지 않아요??


도망과 싸우기 역시 switch로 나눠서, 도망일경우 default랑 break로 마을로 되돌아갑니다

싸우기를 선택하면..


11.jpg


고블린 심볼인 G랑
적 스텟치가 쫙 나오고, (n은 오타인듯?)

제 심볼+ 무기가 weap.txt.폴더에서 불러들어와서 표시됩니다

깨알같은 printf'공격을' + system"pause"



12.jpg

투닥투닥투닥투닥

벨런스가 똥이라, 제 체력은 9로 그대로고 몹 체력은 7에서 -2가 되었습니다

역시 벨런스가 똥이라, 데미지 계산 구조는 Ahp=Ahp-Matk+Adef랑 Mhp=Mhp-Aatk+Mdef 입니다

덕분에 때릴때마다 방어력수치 때문에 체력이 증가해서 MAx체력보다 높아지는 현상이 있습니다 아직은 벨런스쪽을 안건드려서 그렇습다

어떻게 짜야될지 고민이네요 괄호 적절히 넣어서 적 데미지-방어력 한다음에 체력에 영향을 끼치게 할까 뭐 그러고있습니다


while(Mhp&&Ahp>=0)
이랑 break 넣어서 둘중 아무나 0이하가 되면 빠져나옵니다

근데 Mhp||Ahp<=0 이게 정상 아닌가요?

while() 안에 조건식이 참일경우 빠져나오는거 아닌가요? 음 한참 헤매다가 완전 거꾸로 해봤는데 되서 멘붕


5.jpg


빠져나오면 마을.

마을 전체엔

while(j<=9999)

걸려서 게속 반복되게만들었고,

각 페이지마다 case 넣어서 선택지를 넣었습니다





일단 상점에서만 파는 무기를 만들고(돈 개념도 넣어야되나..)

몬스터 종류도 늘리고 (그래봤자 고블린만 나올꺼같은 불길함)

경험치 시스템도 넣어서 MAXhp를 증가시킬 방법도 구하고

데미지 계산 알고리즘도 짜서 hp가 maxhp보다 커지는 사태도 방지하고

인터페이스도 좀 깔끔하게 다듬고 이런저런 문구랑 제목같은것도 멋들어지게 넣고..

여기까지만 구상했습니다

혹 더 추가하면 좋을것같다던가

아이디어나 조언, 그리고 지저분해서 슬슬 햇갈리기 시작하는 페이지 정리하는 노하우같은것도 알려주세요ㅠㅠ

과제도 잊고 간만에 재미있는일에 몰입하니까 하루하루가 재밌네요ㅎㅎ


1398235089kpEbXhptrOX.jpg


읽어주셔서 감사합니다!!






꼬릿말 보기
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호