수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

순수 C언어로만 콘솔 게임을 만들려고 하는대요...

사과

2023.04.01


질문 제목 : c언어로만 콜솔 게임 을 하나 만들려고 합니다만게임을 짜기위해 필요한 공부나 이런 것을 좀알고 싶습니다.
ex) 배열 함수화 등등질문 내용 :게임을 짜기위해 필요한 공부나 이런 것을 좀알고 싶습니다.
ex) 배열 함수화 등등

------다시 배열과 포인터를 사용해서 만들 꺼지만 현재 만들다가 답이없어서 잠시보류중인 제뱀게임 소스입니다-------------#include windows.h //goto문 사용 하기위해
#include stdio.h
#include conio.h//get함수
#include stdlib.h//exit함수
#include string.h
#include time.h

enum { // 색깔 지정
block, /* 0 : 까망 */
dark_blue, /* 1 : 어두운 파랑 */
dark_green, /* 2 : 어두운 초록 */
dark_sky_blue, /* 3 : 어두운 하늘 */
dark_red, /* 4 : 어두운 빨강 */
dark_voilet, /* 5 : 어두운 보라 */
dark_yellow, /* 6 : 어두운 노랑 */
gray, /* 7 : 회색 */
dark_gray, /* 8 : 어두운 회색 */
blue, /* 9 : 파랑 */
green, /* 10 : 초록 */
sky_blue, /* 11 : 하늘 */
red, /* 12 : 빨강 */
voilet, /* 13 : 보라 */
yellow, /* 14 : 노랑 */
white, /* 15 : 하양 */
};

void setcolor(int color) // 문자 색깔 변경을 위한 함수.
{
setconsoletextattribute(getstdhandle(std_output_handle), color );
}

#define esc 27
#define left 75
#define right 77
#define up 72
#define down 80

void map(void);

int move1(int m);//상하 함수

int move2(int v);//좌우 함수

void game(void); //게임 시작전 배너.

void food(void);

int food_num;//먹이 갯수
int len=3;

void gotoxy(int x,int y)
{
coord pos={x,y};// 좌표의 기본 값은 0,0 입니다.
setconsolecursorposition(getstdhandle(std_output_handle), pos);
}
int x,y;// 좌표 방향 설정 함수
int gap;// 뱀의 움직임이 끊기 지않고 계속 움직이게.

int main(void)
{
int key;
x=4, y=1;// 뱀이 나타날 장소.

game();
map();
food();
gotoxy(x,y);// 좌표 설정
setcolor(green);
puts($);

while(1)//방향 입력
{
if (kbhit())
{
fflush(stdin);

key=getch();
switch(key)
{
case up:
gap=-1;

move1(gap);
break;
case down:
gap=1;

move1(gap);
break;
case right:
gap=1;

move2(gap);
break;
case left:
gap=-1;

move2(gap);
break;
case esc:

gotoxy(30,13);
printf(게임끝입니다. \n);
exit(0);
break;
}
}
}
return 0;
getch();
}int move1(int m)// 상하 이동 함수
{
int ch;
while(1)
{
if(kbhit())
{
ch=getch();
if(ch==72)
{
m=-1;
}
if(ch==80)
{
m=1;
}
&nbnbsp;if(ch==75 || ch==77 || ch==27)
sleep(1);//슬림프를 넣어줌으로써 멈춤 현상 제거
{
return 0;
}

}
sleep(50);

gotoxy(x,y);
printf( );//잔상 제거용
gotoxy(x, y=y+(m));
if(y=23)
{
y=22;//충돌 좌표

gotoxy(35, 10);
printf(죽엇습니다.);

exit(1);}
if(y==0)
{
y=1;//좌표 초기화gotoxy(35, 10);
printf(죽엇습니다.);

exit(1);
getch();
}
gotoxy(x,y);

setcolor(green);
printf($);

}
return 0;
}

int move2(int v)
{
int ch;
while(1)
{
if(kbhit())
{
ch=getch();
if(ch==75)
{
v=-1;
}
if(ch==77)
{
v=1;
}
if(ch==72 || ch==80 || ch==27)// 위의 키외에 다른 키를 눌렷을시 프로그램을 끝내고 다른 방향 함수 실행.
sleep(1);//슬림프를 넣어줌으로써 멈춤 현상 제거
{
return 0;
}

}

sleep(50);

gotoxy(x,y);
printf( );
gotoxy(x=x+(v), y);
if(x==76)
{
x=75;

gotoxy(35, 10);
printf(죽엇습니다.);
exit(1);

}

if(x==2)
{
x=3;//좌표 초기화

gotoxy(35, 10);
printf(죽엇습니다.);

exit(1);

}if(y=23)
{
y=22;

gotoxy(35, 10);
printf(죽엇습니다.);

exit(1);

}
if(y==0)
y=1;//좌표 초기화
gotoxy(x, y);

printf($);
setcolor(green);}
return 0;
}

void game(void)
{
gotoxy(0,2);
setcolor(dark_yellow);
printf(□□■■■□□□■■□□□■■□□□■■■□□□■■□□□■■□■■■■■■■\n);
printf(□■■■■■□□■■□□□■■□□■■■■■□□■■□□□■■□■■■■■■■\n);
printf(■■■□■■■□■■□□■■■□□■■□■■□□■■□□■■■□■■□□□□□\n);
printf(■■□□□□□□■■□□■■■□□■■□■■□□■■□■■■□□■■□□□□□\n);
printf(■■□□□□□□■■□■■■■□■■■□■■■□■■■■■□□□■■□□□□□\n);
printf(■■■■□□□□■■□■□■■□■■□□□■■□■■■■□□□□■■■■■■■\n);
printf(□■■■■■□□■■□■□■■□■■□□□■■□■■■□□□□□■■■■■■■\n);
printf(□□□□■■■□■■□■□■■□■■■■■■■□■■■■□□□□■■□□□□□\n);
printf(□□□□□■■□■■■■□■■□■■■■■■■□■■■■■□□□■■□□□□□\n);
printf(□□□□□■■□■■■□□■■□■■□□□■■□■■□■■■□□■■□□□□□\n);
printf(■■■□■■■□■■■□□■■□■■□□□■■□■■□□■■■□■■□□□□□\n);
printf(□■■■■■□□■■□□□■■□■■□□□■■□■■□□□■■□■■■■■■■\n);
printf(□□■■■□□□■■□□□■■□■■□□□■■□■■□□□■■□■■■■■■■\n);

setcolor(red);
gotoxy(28,16);
printf(new game loading);
gotoxy(25,18);
printf(press key to game start);
getch();
system(cls);
}

void map(void)
{
setcolor(sky_blue);
printf( ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩\n);
gotoxy(1,1);
printf(▩ ▩\n);
gotoxy(1,2);
printf(▩ ▩\n);
gotoxy(1,3);
printf(▩ ▩\n);
gotoxy(1,4);
printf(▩ ▩\n);
gotoxy(1,5);
printf(▩p; ▩\n);
gotoxy(1,6);
printf(▩ ▩\n);
gotoxy(1,7);
printf(▩ ▩\n);
gotoxy(1,8);
printf(▩ ▩\n);
gotoxy(1,9);
printf(▩ ▩\n);
gotoxy(1,10);
printf(▩ ▩\n);
gotoxy(1,11);
printf(▩ ▩\n);
gotoxy(1,12);
printf(▩ ▩\n);
gotoxy(1,13);
printf(▩ ▩\n);
gotoxy(1,14);
printf(▩ ▩\n);
gotoxy(1,15);
printf(▩ ▩\n);
gotoxy(1,16);
printf(▩▩\n);
gotoxy(1,17);
printf(▩p; ▩\n);
gotoxy(1,18);
printf(▩ ▩\n);
gotoxy(1,19);
printf(▩ ▩\n);
gotoxy(1,20);
printf(▩ ▩\n);
gotoxy(1,21);
printf(▩ ▩\n);
gotoxy(1,22);
printf(▩ ▩\n);
gotoxy(1,23);
printf(▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩\n);
}
void food(void)
{
int x,y;}

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

  • 아서

    그래도 저는 이런 근성을 내기 힘들것 같군여;;;
    역시 플밍은 인내의 완성이군 흐얽기;;

  • 촉촉한 초코칩

    ㄷㄷㄷ. 감사합니다

  • 꿈

    헐 엄청난 노가다가 눈에 선합니다....
    엄청난 도트...!

  • 딥자두

    됩니다 ㅎㅎ

  • 캐릭터

    네 ㅎㅎ 정말감사합니다 지금살펴봣는대 많은도움이 됫어요 ㅎㅎ 정말감사합니다

  • 박애교

    제가 말한 순수한 C언어는 표준함수만을 이용하는 프로그래밍을 뜻합니다. SetConsoleCursorPosition함수나 getch함수는 시스템에 종속적인 함수이기 때문에 순수한 C라고 보기는 힘듭니다.
    원하는 것은 도스창에서 동작하는 게임을 말하는 것 같으니 제가 말한 강좌를 살펴보세요.

  • 쇼코홀릭

    지금 열혈C프로그래밍 (윤성우의) 450 페이지 까지 본 상태 이구요 현재 스네이크 게임을 만드는 중입니다;;

  • 이름이없다고

    순수하게 C언어만으로는 게임을 짜기 매우 어렵습니다.
    사용자의 키보드 입력 타이밍과 실제로 프로그램이 받아들이는 타이밍이 천문학적으로 크기 때문에 텍스트 입력을 통한 명령형 게임이 아닌 이상 불가능하다고 보아야 합니다.
    순수함을 벗어나서 그나마 도스창에서 돌아가는 게임을 만들려면 장편강좌에서 푸시푸시나 인베이더 강좌를 살펴보세요.
    그보다는 우선 C언어 입문서를 아무것이나 한권 사서 차근차근 따라가는 것부터 해야 합니다.

  • 메이커

    테트리스는 아니고 뱀게임요 ㅎㅎ

  • 아리알찬

    테트리스 만드실려구 그러시나 ㅋ

번호 제 목 글쓴이 날짜
2694450 while문질문입니다. (1) 허리품 2025-05-11
2694420 C언어 질문할게요(유니코드,자료형,버퍼,캐스트연산자) 은새 2025-05-11
2694370 내일까진데 함수호출 제발 도와주세요!!!!!!!!!11 들찬 2025-05-10
2694339 putchar()의 괄호 안에 int c=10;로 전에 선언된 c를 넣으면 안되는 이유에서 제가 생각한 것이 그 이유가 되는지 확인하고 싶습니다. (3) 미르 2025-05-10
2694316 이 코드 어디가 잘못되었는지 고수분들 ㅠㅠ (2) 나빛 2025-05-10
2694285 언어 공부하는 과정 좀 추천해주세요! (1) 아빠몬 2025-05-09
2694258 카운터.. 질문입니다. (4) 하늘빛눈망울 2025-05-09
2694229 단순한 질문이요 (8) 여름 2025-05-09
2694202 용돈을 가지고 할 수 있는 일을 여러가지로 출력하는 방법 좀 알려주세요! (2) 미나 2025-05-09
2694145 화면깜빡임을 없애고 싶은데요... (1) 어서와 2025-05-08
2694069 unsigned 질문입니다. 힘차 2025-05-07
2694012 전공 비전공자 개발자 (10) 말글 2025-05-07
2693984 오버로딩이 무엇인가요? (2) 헛매질 2025-05-07
2693956 PlaySound재생이 안됩니다!(C에 음악넣기) 지존 2025-05-06
2693928 &와 *의 사용에 관한 명확한 이해 제나 2025-05-06
2693903 반복문 설명좀요 ㅠㅠ (2) 란새 2025-05-06
2693869 stdio.h 는 왜 쓰는건가요? (1) 큰꽃들 2025-05-06
2693842 포인터 변수의 주소값끼리 더하는 것에 대해서 질문드립니다. (1) 진솔 2025-05-05
2693811 소수 출력;;;; 화이트캣 2025-05-05
2693788 이런 함수는 없나요? (3) 앤드류 2025-05-05
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com