Skip to content
Bible, Lee, Data
Projects/Game Projects

C언어로 만든 캐주얼 게임 Number Train

Number Trian은 2015년도에 공부하다가 쉬면서 조금씩 만들었던 게임이다.

플레이어가 역장이라는 설정이 있어서 화물 5개의 합계를 입력해 화물을 운송하는 방식의 간단한 덧셈 게임이다.

CUI로 개발했지만 최대한 철로 위 기차 화물을 운송한다는 느낌을 주려고 했다.

플레이어가 담당한 기차 10대 화물을 모두 운송하고 나면 결산이 나오며 하루 업무가 끝나게 된다.

 

Number Trian is a game that I started developing in 2015. I worked on it gradually while taking breaks.

The game features a setting where the player is a train conductor and involves a simple addition game where the player inputs the sum of five cargoes to transport them.
Although it was developed as a command-line interface (CUI) game, I aimed to give the feeling of transporting cargoes on a railroad as much as possible.
Once the player transports all 10 train cargoes they are responsible for, a settlement occurs, and the day's work is completed.

#include <stdio.h>
#include <Windows.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>

#define COL          GetStdHandle(STD_OUTPUT_HANDLE)
#define BLACK        SetConsoleTextAttribute(COL, 0x0000);
#define DARK_BLUE    SetConsoleTextAttribute(COL, 0x0001);
#define GREEN        SetConsoleTextAttribute(COL, 0x0002);
#define BLUE_GREEN   SetConsoleTextAttribute(COL, 0x0003);
#define BLOOD        SetConsoleTextAttribute(COL, 0x0004);
#define PURPLE       SetConsoleTextAttribute(COL, 0x0005);
#define GOLD         SetConsoleTextAttribute(COL, 0x0006);
#define ORIGINAL     SetConsoleTextAttribute(COL, 0x0007);
#define GRAY         SetConsoleTextAttribute(COL, 0x0008);
#define BLUE         SetConsoleTextAttribute(COL, 0x0009);
#define HIGH_GREEN   SetConsoleTextAttribute(COL, 0x000a);
#define SKY_BLUE     SetConsoleTextAttribute(COL, 0x000b);
#define RED          SetConsoleTextAttribute(COL, 0x000c);
#define PLUM         SetConsoleTextAttribute(COL, 0x000d);
#define YELLO        SetConsoleTextAttribute(COL, 0x000e);

#define  randomize()  srand((unsigned)time(NULL))

int main()
{
	int i;
	int a, b, c;
	int number[6], result, result2;
	int code1, code2, code3;
	int count=1, point=0, choice=0;

	system("mode con:lines=18 cols=70"); 
	system("title 숫자 기차");

	printf("\n\n\n\n\n\n\n\n");
	printf("                        PRESS ANY KEY TO START");
	getch();
	system("cls");
	fflush(stdin);

	srand(time(NULL));

	while(choice==0)
	{
		system("cls");

		printf("\n");
		printf("         ┌┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐  ┌──┐ \n"); Sleep(100);
		printf("     ┌─┴┤ │    │ │    │ │    │ │    │ │    │  │@@@@│ \n"); Sleep(100);
		printf(" ┌─┘┌┐│ │ T │ │ R │ │ A │ │ I │ │ N │  │@@@@│ \n"); Sleep(100);
		printf(" │    │││ │    │ │    │ │    │ │    │ │    ├─┤@@@@│ \n"); Sleep(100);
		printf(" └──└┘┘ └──┘ └──┘ └──┘ └──┘ └──┘  └──┘ \n"); Sleep(100);
		printf("    ○    ○       ○       ○       ○       ○       ○        ○  \n"); Sleep(100);
		printf("  〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓 \n"); Sleep(100);
		printf("\n");
		printf("  ①GAME START ②GAME OVER ③GAME MENUAL\n"); Sleep(100);
		printf("  CH : ");
		scanf("%d", &choice);
		switch(choice)
		{
		case 1:
			printf("\n");
			printf("  ."); Sleep(1000);
			printf("."); Sleep(1000);
			printf("."); Sleep(1000);
			printf("GAME START!"); Sleep(1000);
			break;
		case 2:
			printf("\n  ");
			return 0;
			break;
		case 3:
			printf("\n");
			printf("  게임을 시작하면 숫자화물 5개가 나옵니다\n");
			printf("  그 숫자들의 총합을 입력하시면 정답인지 오답인지 가려냅니다\n");
			printf("\n");
			printf("  즐거운 게임 되세요!");
			getchar();
			getchar();
			choice=0;
			break;
		default :
			choice=0;
			break;
		}
	}

	while(1)
	{
		system("cls");

		number[1]=rand()%(9+0-0)+0;
		number[2]=rand()%(9+0-0)+0;
		number[3]=rand()%(9+0-0)+0;
		number[4]=rand()%(9+0-0)+0;
		number[5]=rand()%(9+0-0)+0;

		code1=rand()%(999999+000000-000000)+000000;
		code2=rand()%(999999+000000-000000)+000000;
		code3=rand()%(999999+000000-000000)+000000;

		result=number[1]+number[2]+number[3]+number[4]+number[5];

		//0123456789
		printf("\n");
		printf("         ┌┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐  ┌──┐ \n"); 
		printf("     ┌─┴┤ │    │ │    │ │    │ │    │ │    │  │@@@@│ \n");
		printf(" ┌─┘┌┐│ │ ");
		if(number[1]==0)
		{
			printf("0");
		}
		if(number[1]==1)
		{
			printf("1");
		}
		if(number[1]==2)
		{
			printf("2");
		}
		if(number[1]==3)
		{
			printf("3");
		}
		if(number[1]==4)
		{
			printf("4");
		}
		if(number[1]==5)
		{
			printf("5");
		}
		if(number[1]==6)
		{
			printf("6");
		}
		if(number[1]==7)
		{
			printf("7");
		}
		if(number[1]==8)
		{
			printf("8");
		}
		if(number[1]==9)
		{
			printf("9");
		}
		printf(" │ │ ");
		if(number[2]==0)
		{
			printf("0");
		}
		if(number[2]==1)
		{
			printf("1");
		}
		if(number[2]==2)
		{
			printf("2");
		}
		if(number[2]==3)
		{
			printf("3");
		}
		if(number[2]==4)
		{
			printf("4");
		}
		if(number[2]==5)
		{
			printf("5");
		}
		if(number[2]==6)
		{
			printf("6");
		}
		if(number[2]==7)
		{
			printf("7");
		}
		if(number[2]==8)
		{
			printf("8");
		}
		if(number[2]==9)
		{
			printf("9");
		}
		printf(" │ │ ");
		if(number[3]==0)
		{
			printf("0");
		}
		if(number[3]==1)
		{
			printf("1");
		}
		if(number[3]==2)
		{
			printf("2");
		}
		if(number[3]==3)
		{
			printf("3");
		}
		if(number[3]==4)
		{
			printf("4");
		}
		if(number[3]==5)
		{
			printf("5");
		}
		if(number[3]==6)
		{
			printf("6");
		}
		if(number[3]==7)
		{
			printf("7");
		}
		if(number[3]==8)
		{
			printf("8");
		}
		if(number[3]==9)
		{
			printf("9");
		}
		printf(" │ │ ");
		if(number[4]==0)
		{
			printf("0");
		}
		if(number[4]==1)
		{
			printf("1");
		}
		if(number[4]==2)
		{
			printf("2");
		}
		if(number[4]==3)
		{
			printf("3");
		}
		if(number[4]==4)
		{
			printf("4");
		}
		if(number[4]==5)
		{
			printf("5");
		}
		if(number[4]==6)
		{
			printf("6");
		}
		if(number[4]==7)
		{
			printf("7");
		}
		if(number[4]==8)
		{
			printf("8");
		}
		if(number[4]==9)
		{
			printf("9");
		}
		printf(" │ │ ");
		if(number[5]==0)
		{
			printf("0");
		}
		if(number[5]==1)
		{
			printf("1");
		}
		if(number[5]==2)
		{
			printf("2");
		}
		if(number[5]==3)
		{
			printf("3");
		}
		if(number[5]==4)
		{
			printf("4");
		}
		if(number[5]==5)
		{
			printf("5");
		}
		if(number[5]==6)
		{
			printf("6");
		}
		if(number[5]==7)
		{
			printf("7");
		}
		if(number[5]==8)
		{
			printf("8");
		}
		if(number[5]==9)
		{
			printf("9");
		}
		printf(" │  │@@@@│");
		printf("\n");
		printf(" │%.2d  │││ │    │ │    │ │    │ │    │ │    ├─┤@@@@│ \n", count);
		printf(" └──└┘┘ └──┘ └──┘ └──┘ └──┘ └──┘  └──┘ \n");
		printf("    ○    ○       ○       ○       ○       ○       ○        ○  \n");
		printf("  〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓 \n");
		printf("\n");
		printf("  숫자 화물 합계 : ");
		scanf("%d", &result2);

		if(result==result2)
		{
			point++;

			printf("\n");
			printf(" ┌────────────────────────────────┐\n"); Sleep(100);
			printf(" │※화물이 제대로 전송되었습니다                                  │\n"); Sleep(100);
			printf(" │                                                                │\n"); Sleep(100);
			printf(" │기차번호 %.6d        문서번호 %.6d        보안코드 %.6d   │\n", code1, code2, code3); Sleep(100);
			printf(" │화물번호 %d %d %d %d %d     화물총합 %.2d            제시한 총합 %.2d    │\n", number[1], number[2], number[3], number[4], number[5], result, result2); Sleep(100);
			printf(" └────────────────────────────────┘\n"); Sleep(100);
		}
		else
		{
			printf("\n");
			printf(" ┌────────────────────────────────┐\n"); Sleep(100);
			printf(" │※화물이 제대로 전송되지 못했습니다                             │\n"); Sleep(100);
			printf(" │                                                                │\n"); Sleep(100);
			printf(" │기차번호 %.6d        문서번호 %.6d        보안코드 %.6d   │\n", code1, code2, code3); Sleep(100);
			printf(" │화물번호 %d %d %d %d %d     화물총합 %.2d            제시한 총합 %.2d    │\n", number[1], number[2], number[3], number[4], number[5], result, result2); Sleep(100);
			printf(" └────────────────────────────────┘\n"); Sleep(100);
		}
		getchar();
		getchar();
		if(count==10)
		{
			break;
		}
		count++;
	}

	code1=rand()%(999999+000000-000000)+000000;
	code2=rand()%(999999+000000-000000)+000000;
	code3=rand()%(999999+000000-000000)+000000;

	system("cls");
	printf("\n");
	printf("         ┌┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐  ┌──┐ \n"); Sleep(100);
	printf("     ┌─┴┤ │    │ │    │ │    │ │    │ │    │  │@@@@│ \n"); Sleep(100);
	printf(" ┌─┘┌┐│ │ T │ │ R │ │ A │ │ I │ │ N │  │@@@@│ \n"); Sleep(100);
	printf(" │    │││ │    │ │    │ │    │ │    │ │    ├─┤@@@@│ \n"); Sleep(100);
	printf(" └──└┘┘ └──┘ └──┘ └──┘ └──┘ └──┘  └──┘ \n"); Sleep(100);
	printf("    ○    ○       ○       ○       ○       ○       ○        ○  \n"); Sleep(100);
	printf("  〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓 \n"); Sleep(100);
	printf("\n");
	printf("                                ┌──┐\n");
	printf("  ┌──────────────┤결산├─────────────┐ \n"); Sleep(100);
	printf("  │                            └──┘                          │ \n", point); Sleep(100);
	printf("  │  게임번호 %.6d      점수번호 %.6d      보안코드 %.6d   │ \n", code1, code2, code3); Sleep(100);
	printf("  │                                                              │ \n"); Sleep(100);
	printf("  │  담당한 기차 : 10     맞춘개수 : %.2d                          │ \n", point); Sleep(100);
	printf("  │                                                              │ \n"); Sleep(100);
	printf("  └───────────────────────────────┘ \n"); Sleep(100);
	getchar();

	return 0;
}
Isaac S. Lee
Faith, software, data, and everyday life.