순수 C언어로만 콘솔 게임을 만들려고 하는대요...
사과
질문 제목 : 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;}
-
아서
그래도 저는 이런 근성을 내기 힘들것 같군여;;;
역시 플밍은 인내의 완성이군 흐얽기;; -
촉촉한 초코칩
ㄷㄷㄷ. 감사합니다
-
꿈
헐 엄청난 노가다가 눈에 선합니다....
엄청난 도트...! -
딥자두
됩니다 ㅎㅎ
-
캐릭터
네 ㅎㅎ 정말감사합니다 지금살펴봣는대 많은도움이 됫어요 ㅎㅎ 정말감사합니다
-
박애교
제가 말한 순수한 C언어는 표준함수만을 이용하는 프로그래밍을 뜻합니다. SetConsoleCursorPosition함수나 getch함수는 시스템에 종속적인 함수이기 때문에 순수한 C라고 보기는 힘듭니다.
원하는 것은 도스창에서 동작하는 게임을 말하는 것 같으니 제가 말한 강좌를 살펴보세요. -
쇼코홀릭
지금 열혈C프로그래밍 (윤성우의) 450 페이지 까지 본 상태 이구요 현재 스네이크 게임을 만드는 중입니다;;
-
이름이없다고
순수하게 C언어만으로는 게임을 짜기 매우 어렵습니다.
사용자의 키보드 입력 타이밍과 실제로 프로그램이 받아들이는 타이밍이 천문학적으로 크기 때문에 텍스트 입력을 통한 명령형 게임이 아닌 이상 불가능하다고 보아야 합니다.
순수함을 벗어나서 그나마 도스창에서 돌아가는 게임을 만들려면 장편강좌에서 푸시푸시나 인베이더 강좌를 살펴보세요.
그보다는 우선 C언어 입문서를 아무것이나 한권 사서 차근차근 따라가는 것부터 해야 합니다. -
메이커
테트리스는 아니고 뱀게임요 ㅎㅎ
-
아리알찬
테트리스 만드실려구 그러시나 ㅋ
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2695122 | 구조체에 대해 물어보고 싶은게 있습니다 ^^^.. (7) | 수련 | 2025-05-17 |
2695091 | txt 파일 입출력 후 2차 배열에 저장하기입니다. (3) | 헛장사 | 2025-05-17 |
2695063 | 수도요금 프로그램좀 짜주세요. | 시내 | 2025-05-17 |
2695033 | 답변좀요ㅠㅠ (1) | 비사벌 | 2025-05-16 |
2695010 | C++의 STL은 왜 굳이 템플릿화 시켜서 라이브러리를 만드나요? (초보수준의 질문..) (2) | 엘보어 | 2025-05-16 |
2694958 | 로직이 변한다는 것에 대해서 궁금합니다. | 튼동 | 2025-05-16 |
2694929 | 열혈강의 25-2 두번째 문제 질문 | 지우개 | 2025-05-15 |
2694900 | dequeue 에서 리턴값 프린트 방법알려주세요 오늘 12시까지 대화방에 있습니다 도와주세요 | 미투리 | 2025-05-15 |
2694854 | 절대값을 구할때 (2) | 그녀는귀여웠다 | 2025-05-15 |
2694827 | 이제 어떻게 공부해야할지 모르겠네요 | 새얀 | 2025-05-14 |
2694778 | 순열 계산요. | 맛조이 | 2025-05-14 |
2694754 | ShowWindow 함수를 이용하려 하는데 질문있습니다. (2) | 파도 | 2025-05-14 |
2694731 | 리눅스 커널의 시작점 질문 | 미르 | 2025-05-13 |
2694702 | 이거 뭐가문제인가요 코드수정좀 (3) | 맑은 | 2025-05-13 |
2694675 | C언어 후위표기를 중위표기로 | 앨런 | 2025-05-13 |
2694646 | 안녕하세요 파일 합치기 함수! (1) | 연블루 | 2025-05-13 |
2694618 | 잘몰라서 설명부탁드립니다. scanf 관련 (3) | 파라 | 2025-05-12 |
2694590 | 이 코드가 뭐하는 코드일까요? #2 | 빵순 | 2025-05-12 |
2694559 | 동적할당으로 배열(2차원열)을 만드는데 있어 그걸 함수화시키는데... (1) | 늘솔길 | 2025-05-12 |
2694532 | 네트워크에 관하여... (4) | 황소자리 | 2025-05-12 |