본문 바로가기
프로그래밍일지 (고등학생 - 인문계)/자작 게임 배포 & 패치노트&프로그래밍 개인 일지

[자작게임 배포 & 프로그래밍 일지] Civil War 오픈소스로 전환

by 단월(Kilo) 2018. 3. 16.

제가 간단하게 제작을 한 civil war를 오픈소스를 하여 코드를 공개하도록 하겠습니다.

리마스터작업을 진행중에 있으며 상당수의 코드가 깔끔하게 개편이 될 예정입니다.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(viod) {
 int user, start, com, item, man, heal = 0;
 int not_safe_water = 0, wheat = 0, iron = 0, lead = 0;
 int water = 0, bread = 0, knife = 0, hand_gun = 0, Ar = 0, Sr = 0, Sg = 0;
 int Ct = 100, score = 0, thirst = 3;
sTarT:
 printf("제작 : STATIC GAMES\n시작하시려면 1 :");
 scanf_s("%d", &user);
 if (user == 1) {
  goto Mt; //메인으로 옮깁니다.
 }
 else {
  printf("잘못된 입력입니다.\n");
  goto sTarT; //시작문구로 옮깁니다.
 }
Mt:
 printf("타이틀 : civil war\n");
 printf("시작은 2번 \n");
 printf("처음 안내문구는 아무번호 \n");
 scanf_s("%d", &start);
 if (start == 2) {
  goto In_Game; //게임을 시작합니다.
 }
 else {
  goto sTarT; //다시 처음으로 돌아갑니다.
 }
In_Game:
 printf("안녕하세요?? 저는 당신을 이제부터 안내할 겁니다.\n");
 printf("제작은 간단하게\n");
 printf("캐릭터의 상태를 보고 계산을 합니다.\n");
 printf("그리고 턴을 마감할 수도 있습니다.\n");
 printf("매 턴마다 순서대로 진행해 주세요.\n시작을 하실때는 0번입니다.\n"); //안내를 하는 것
 scanf_s("%d", &com);  //입력을 요구합니다.
 if (com == 0) {
  goto main; //게임을 본격적으로 시작합니다.
 }
 else {
  printf("오류\n");
  goto In_Game;
 }
main:
 if (score >=0) {
  score++;
  printf("%d일째 생존\n", score);
  thirst--;
  not_safe_water++;
  wheat++;
  iron++;
  lead++; //더러운 물, 밀, 철, 납을 하나씩 매일 생산합니다.
  printf("당신이 보유중인 더러운 물 %d개,밀 %d개,철 %d개,납 %d개\n물 %d개,빵 %d개,칼 %d개,권총 %d개,돌격소총 %d개,저격소총 %d개,샷건 %d개\n그리고 캐릭터의 남은 채력 %d\n", not_safe_water, wheat, iron, lead, water, bread, knife, hand_gun, Ar, Sr, Sg, Ct);
  goto Cr;
 }
 else {
  printf("알수 없는 명령어 입니다. 다시 입력해 주세요\n");
  goto main;
 }
Cr:
 printf("물 11번\n빵 12번\n칼 13번\n권총14번\nAR 15번\nSR 16번\nSG17번\n없으면20번\n");
 scanf_s("%d", &com);
 if (com == 11) {
  if (not_safe_water >= 2) {
   printf("정화작업을 시작합니다.\n");
   not_safe_water--;
   not_safe_water--;
   water++; //더러운 물 두개를 깨끗한 물 하나로 정화합니다.
   goto Day;
  }
  else {
   printf("물자가 부족합니다.\n");
   goto Day;
  }
 }
 else if (com == 12) {
  if (wheat >= 3) {
   printf("빵을 굽기 시작합니다.\n");
   bread++;
   wheat--;
   wheat--;
   wheat--; //밀 3개를 빵하나로 만듭니다.
   goto Day;
  }
  else {
   printf("물자가 부족합니다.\n");
   goto Day;
  }
 }
 else if (com == 13) {
  if (iron >= 3) {
   printf("철로 칼을 제작합니다.\n");
   knife++;
   iron--;
   iron--;
   iron--; //철 3개를 칼하나로 만듭니다.
   goto Day;
  }
  else {
   printf("물자가 부족합니다.\n");
   goto Day;
  }
 }
 else if (com == 14) {
  if (iron >= 2) {
   if (lead >= 3) {
    printf("안전한 권총을 만들었습니다.\n");
    hand_gun++;
    iron--;
    iron--;
    lead--;
    lead--;
    lead--; //철 2개와 납3개로 권총을 만듭니다.
    goto Day;
   }
   else {
    printf("물자가 부족합니다.\n");
    goto Day;
   }
  }
  else {
   printf("물자가 부족합니다.\n");
   goto Day;
  }
 }
 else if (com == 15) {
  if (iron >= 3) {
   if (lead >= 5) {
    printf("돌격 소총을 제작합니다.\n");
    Ar++;
    iron--;
    iron--;
    iron--;
    lead--;
    lead--;
    lead--;
    lead--;
    lead--; //AR을 철 3개와 납5개로 만듭니다.
    goto Day;
   }
   else {
    printf("물자가 부족합니다.\n");
    goto Day;
   }
  }
  else {
   printf("물자가 부족합니다.\n");
   goto Day;
  }
 }
 else if (com == 16) {
  if (iron >= 4) {
   if (lead >= 6) {
    printf("스나이퍼라이플을 제작합니다.\n");
    Sr++;
    iron--;
    iron--;
    iron--;
    iron--;
    lead--;
    lead--;
    lead--;
    lead--;
    lead--;
    lead--; //SR을 철 4개와 납6개로 만듭니다.
    goto Day;
   }
   else {
    printf("물자가 부족합니다.\n");
    goto Day;
   }
  }
  else {
   printf("물자가 부족합니다.\n");
   goto Day;
  }
 }
 else if (com == 17) {
  if (iron >= 4) {
   if (lead >= 8) {
    printf("샷건을 제작합니다.\n");
    Sg++;
    iron--;
    iron--;
    iron--;
    iron--;
    lead--;
    lead--;
    lead--;
    lead--;
    lead--;
    lead--;
    lead--;
    lead--; //샷건을 철 4개와 납 8개로 제작합니다.
    goto Day;
   }
   else {
    printf("물자가 부족합니다.\n");
    goto Day;
   }
  }
  else {
   printf("물자가 부족합니다.\n");
   goto Day;
  }
 }
 else if (com == 20) {
  printf("제작을 그만 둡니다.\n");
  goto Day; //제작을 스킾합니다.
 }
 else {
  printf("다시 입력해 주세요.\n");
  goto Cr;
 }
Day:
 printf("탐방을 갑니다.\n");
 srand(time(NULL));
 item = rand();
 if (item >= 21) {
  printf("더러운 물과 밀이 하나씩 증가합니다.\n");
  not_safe_water++;
  wheat++;
  Ct--; //정찰 결과 더러운 물과 밀을 하나씩 얻습니다.
  goto Tr;
 }
 else {
  printf("납과 철이 하나씩 증가합니다.\n");
  lead++;
  iron++;
  Ct--; //정찰 결과 납과 철을 하나씩 얻습니다.
  goto Tr;
 }
Tr:
 printf("사람이 도착하였습니다.\n");
 srand(time(NULL));
 man = rand();
 if (man <= 28000) {  //여기에 있는 이 man의 숫자로 난이도를 설정합니다.
  if (Sg > 0) {
   printf("괴한에게 습격을 받았습니다.\n");
   Sg--;
   Ct--;
   Ct--;
   goto stat;
  }
  else {
   if (Sr > 0) {
    printf("괴한에게 습격을 받았습니다.\n");
    Sr--;
    Ct--;
    Ct--;
    Ct--;
    goto stat;
   }
   else {
    if (Ar > 0) {
     printf("괴한에게 습격을 받았습니다.\n");
     Ar--;
     Ct--;
     Ct--;
     Ct--;
     Ct--;
     Ct--;
    }
    else {
     if (hand_gun > 0) {
      printf("괴한에게 습격을 받았습니다.\n");
      hand_gun--;
      Ct--;
      Ct--;
      Ct--;
      Ct--;
      Ct--;
      Ct--;
      goto stat;
     }
     else {
      if (knife > 0) {
       printf("괴한에게 습격을 받았습니다.\n");
       knife--;
       Ct--;
       Ct--;
       Ct--;
       Ct--;
       Ct--;
       Ct--;
       Ct--;
       Ct--;
       Ct--;
       Ct--;
       Ct--;
       goto stat;
      }
      else {
       printf("괴한에게 습격을 받았습니다.\n");
       Ct--;
       Ct--;
       Ct--;
       Ct--;
       Ct--;
       Ct--;
       Ct--;
       Ct--;
       Ct--;
       Ct--;
       Ct--;
       Ct--;
       Ct--;
       Ct--;
       Ct--;
       Ct--; //캐릭터의 체력이 16만큼 까입니다.
       goto stat;
      }
     }
    }
   }
  }
 }
 else {
  printf("지나가던 사람입니다.\n");
  goto stat; //무사히 종료합니다.
 }
stat:
 printf("당신이 보유중인 더러운 물 %d개,밀 %d개,철 %d개,납 %d개\n물 %d개,빵 %d개,칼 %d개,권총 %d개,돌격소총 %d개,저격소총 %d개,샷건 %d개\n그리고 캐릭터의 남은 채력 %d\n", not_safe_water, wheat, iron, lead, water, bread, knife, hand_gun, Ar, Sr, Sg, Ct); //상태창으로 자신이 소유중인 것의 갯수를 표기합니다.
 printf("20을 눌러 계속 진행합니다.\n");
 scanf_s("%d", &com);
 if (com == 20) {
  if (Ct >= 1) {
   printf("빵을 먹어서 피를 회복하시겠습니까??\n111을 눌러서 여부를 확인해 주세요\n아닐시 다른 숫자인 20을 눌러주시면 됩니다.\n");
   scanf_s("%d", &com);
   if (com == 111) {
    if (bread < 1) {
     printf("빵이 부족합니다.\n");
     goto THiRsT;
    }
    else {
     bread--;
     Ct++;
     Ct++;
     Ct++;
     Ct++;
     goto THiRsT;
    }
   }
   else {
    if (Ct <= 0) {
     goto Game_Over; //게임을 종료합니다.
    }
    else {
     goto THiRsT;
    }
   }
  }
 THiRsT:
  if (thirst >= 1) {
   printf("물을 마시겠습니까?맞다면 222 아니라면 다른 숫자를 눌러주세요\n");
   scanf_s("%d", &com);
   if (com == 222) {
    if (water < 1) {
     printf("물이 부족합니다.\n");
     goto main;
    }
    else {
     water--;
     thirst++;
     thirst++;
     if (Ct <= 0) {
      goto Game_Over; //게임을 종료합니다.
     }
     goto main;
    }
   }
   else {
    if (thirst < 0) {
     goto Game_Over;
    }
    else {
     if (Ct <= 0) {
      goto Game_Over; //게임을 종료합니다.
     }
     else {
      goto main;
     }

    }

   }

  }
 }
 else {
  printf("오류입니다.\n");
  goto stat;
 }
Game_Over:
 printf("게임오버\n");
 return 0;
}

이렇게 종료가 됩니다.

이것의 코드를 17/03/2018기준으로 전부 해독이 가능해 지리라고 생각합니다.

오픈소스로 전환하는 이유는 리마스터링하고 있기때문이고 엔딩추가와 소스코드 개편 작업을 진행하고 있기 때문입니다.