c언어 벽돌밀어넣기 게임

myeongjin2의 이미지

P가 B를 G로 밀어넣는 게임입니다. W는 벽입니다.

Dev c++에서는 실행되고, visual studio에서는 안되네요.
좋은 의견 부탁드립니다.

소스코드는 텍스트파일에 있습니다.

File attachments: 
첨부파일 크기
Plain text icon c언어 게임 .txt4.91 KB
세벌의 이미지

본문에 넣을 수 있는 걸 첨부파일로 넣지 말았으면.

소스 코드를 보여주려면
https://kldp.org/node/158191
참고하셔요.

안 된다면 그냥 안 된다 가 아니라 무슨 에러가 난다는 걸 보여주면 좋겠네요.
안 그러면 "내가 해 보니 에러난다. 에러 메시지는 네가 실행시켜서 봐라"라고 하는 것으로 보여요.

shint의 이미지


각 함수에 인자값. 리턴값. 오류값을 출력해서 확인해 보시기 바랍니다.
http://codepad.org/VGB8shEr

#include<stdio.h>
//#include<conio.h>
#include<string.h>
//#include<Windows.h>
 
char PrintMap_easy[15][15];
 
#define STD_OUTPUT_HANDLE -11	
 
//GetStdHandle function
//https://docs.microsoft.com/en-us/windows/console/getstdhandle
 
int G1=0, G2 = 0;
int B1 = 0, B2 = 0;
int P1 = 0, P2 = 0;
//G의 원래위치 결함방지
int GP1 = 0, GP2 = 0;
int GP = 0;
 
// 난이도별 맵 
int Map_easy(void)
{
	char Map_easy[15][15];
	int i2 = 15, j2 = 15;
 
	//
	int i = 0, j = 0;
 
	for (i = 0; i < 15; ++i)
	{
		for (j = 0; j < 15; ++j)
		{
			Map_easy[i][j] = 0x00; //'\0'
		}
	}
 
	for (i = 1; i < 9; ++i)
	{
		for (j = 1; j < 9; ++j)
		{
			Map_easy[i][j] = '.';
		}
	}
	//플레이어,골인점,박스 위치를 좌표로 기술 
	Map_easy[8][5] = 'P';
	P1 = 8, P2 = 5;
	Map_easy[1][7] = 'G';
	G1 = 1, G2 = 7;
	Map_easy[6][7] = 'B';
	B1 = 6, B2 = 7;
 
	memcpy(&PrintMap_easy[0][0], &Map_easy[0][0], 15*15);
 
	for (i = 0; i < i2; ++i)
	{
		for (j = 0; j < j2; ++j)
		{
			printf("%c\t", PrintMap_easy[i][j]);
		}
		putchar('\n');
		putchar('\n');
	}
	return 0;
}
int Map_normal(void)
{
	char Map_normal[15][15];
	int i2 = 15, j2 = 15;
 
	//
	int i = 0, j = 0;
 
	for (i = 0; i < 15; ++i)
	{
		for (j = 0; j < 15; ++j)
		{
			Map_normal[i][j] = 'W';
		}
	}
 
	for (i = 1; i < 12; ++i)
	{
		for (j = 1; j < 12; ++j)
		{
			Map_normal[i][j] = '.';
		}
 
	}
 
	//플레이어,골인점,박스 위치를 좌표로 기술 
	Map_normal[8][5] = 'P';
	P1 = 8, P2 = 5;
	Map_normal[1][7] = 'G';
	G1 = 1, G2 = 7;
	Map_normal[6][7] = 'B';
	B1 = 6, B2 = 7;
 
	memcpy(&PrintMap_easy[0][0], &Map_normal[0][0], 15*15);
 
	for (i = 0; i < i2; ++i)
	{
		for (j = 0; j < j2; ++j)
		{
			printf("%c\t", PrintMap_easy[i][j]);
		}
		putchar('\n');
		putchar('\n');
	}
	return 0;
}
int Map_hard(void)
{
	char Map_hard[15][15];
	int i2 = 15, j2 = 15;
 
	//
	int i = 0, j = 0;
 
	for (i = 0; i < 15; ++i)
	{
		for (j = 0; j < 15; ++j)
		{
			Map_hard[i][j] = 'W';
		}
	}
 
	for (i = 1; i < 14; ++i)
	{
		for (j = 1; j < 14; ++j)
		{
			Map_hard[i][j] = '.';
		}
 
	}
 
	//플레이어,골인점,박스 위치를 좌표로 기술 
	Map_hard[8][5] = 'P';
	P1 = 8, P2 = 5;
	Map_hard[1][7] = 'G';
	G1 = 1, G2 = 7;
	Map_hard[6][7] = 'B';
	B1 = 6, B2 = 7;
 
	memcpy(&PrintMap_easy[0][0], &Map_hard[0][0], 15*15);
 
 
	for (i = 0; i < i2; ++i)
	{
		for (j = 0; j < j2; ++j)
		{
			printf("%c\t", PrintMap_easy[i][j]);
		}
		putchar('\n');
		putchar('\n');
	}
 
	return 0;
}
//텍스트 색깔바꾸기 
void textcolor(int color_number)
 
{
//	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), color_number);
}
//시작화면 
int FirstScreen(void)
{
	int nInput = 0;
 
	printf("Move Box   제작자:심명진 \n");
	printf("난이도를 선택하시오.\n1.easy\n2.normal\n3.hard\n");
	while (nInput != 1 && nInput != 2 && nInput != 3)
	{
//		scanf_s("%d",&nInput,sizeof(nInput));
break;
	}
//	system("cls");
	return nInput;
}
//게임엔진 
int GamePlay(int i2, int j2,char Map[15][15])
{
 
	int clear = 0;
	int i = 0, j = 0;
	int OP1 = P1, OP2 = P2, OG1 = G1, OG2 = G2, OB1 = B1, OB2 = B2;
	char Input=0;
 
 
	if (OP1 == P1)
	{
//	system("cls");
	printf("wasd:이동\n");
	for (i = 0; i < i2; ++i)
	{
		for (j = 0; j < j2; ++j)
		{
			printf("%c\t", Map[i][j]);
		}
		putchar('\n');
		putchar('\n');
	}
	}
 
 
//	Input = getch();
 
	if (Input == 'w' || Input == 'a' || Input == 's' || Input == 'd')
	{
		if (Input == 'w')
		{
			P1 -= 1;
 
		}
		else if (Input == 'a')
		{
			P2 -= 1;
		}
		else if (Input == 's')
		{
			P1 += 1;
		}
		else if (Input == 'd')
		{
			P2 += 1;
		}
 
 
		if (Map[P1][P2] == '.')
		{
			Map[OP1][OP2] = '.';
			Map[P1][P2] = 'P';
 
		}
 
		else if (Map[P1][P2] == 'W')
		{
			P1 = OP1;
			P2 = OP2;
		}
		// 결함 
		else if (Map[P1][P2] == 'G')
		{
			GP = 1;
			GP1 = OG1;
			GP2 = OG2;
			Map[OP1][OP2] = '.';
			Map[P1][P2] = 'P';
		}
 
		else if (Map[P1][P2] == 'B')
		{
			if (Input == 'w')
			{
				B1 -= 1;
 
			}
			else if (Input == 'a')
			{
				B2 -= 1;
			}
			else if (Input == 's')
			{
				B1 += 1;
			}
			else if (Input == 'd')
			{
				B2 += 1;
			}
			{
				if (Map[B1][B2] == '.')
				{
					Map[B1][B2] = 'B';
					Map[OB1][OB2] = 'P';
					Map[OP1][OP2] = '.';
 
 
				}
				else if (Map[B1][B2] == 'W')
				{
					P1 = OP1;
					P2 = OP2;
					B1 = OB1;
					B2 = OB2;
				}
 
				else if (Map[B1][B2] == 'G')
				{
					clear = 1;
					Map[B1][B2] = 'B';
					Map[OB1][OB2] = 'P';
					Map[OP1][OP2] = '.';
				}
			}
		}
 
	}
 
 
 
	if (Map[OG1][OG2] == '.')
	{
		Map[OG1][OG2] = 'G';
	}
 
//		system("cls");
 
		printf("wasd:이동\n");
		for (i = 0; i < i2; ++i)
		{
			for (j = 0; j < j2; ++j)
			{
				printf("%c\t", Map[i][j]);
 
			}
			putchar('\n');
			putchar('\n');
		}
 
	putchar('\a');
 
 
 
	return clear;
}
 
 
int main(void)
{
	int clear = 0;
	int nInput = 0;
	int i = 0, j = 0;
	int i2 = 15, j2 = 15;
 
	char Index1[15][15];
 
	//콘솔창 크기조절 가로2=세로1
//	system("mode con cols=200 lines=80");
 
	//시작화면에서 난이도를 입력받기 
	nInput=FirstScreen();
 
nInput = 1;
	if (nInput == 1)
	{
		Map_easy();
		memcpy(&Index1[0][0], &PrintMap_easy[0][0], 15*15);
 
		while (clear == 0)
		{
			clear=GamePlay(i2,j2,Index1);
break;
		}
 
 
	}
	else if (nInput == 2)
	{
		Map_normal();
		memcpy(&Index1[0][0], &PrintMap_easy[0][0], 15*15);
		while (clear == 0)
		{
			clear = GamePlay(i2, j2, Index1);
		}
	}
	else if (nInput == 3)
	{
		Map_hard();
		memcpy(&Index1[0][0], &PrintMap_easy[0][0], 15*15);
		while (clear == 0)
		{
			clear = GamePlay(i2, j2, Index1);
		}
	}
 
	printf("game clear\n");
//	_getch();
 
	return 0;
}

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.