순수 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언어 입문서를 아무것이나 한권 사서 차근차근 따라가는 것부터 해야 합니다. -
메이커
테트리스는 아니고 뱀게임요 ㅎㅎ
-
아리알찬
테트리스 만드실려구 그러시나 ㅋ
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2676182 | 숫자 순서대로 배열하는법 | 권뉴 | 2024-11-24 |
2676152 | 기본적인거 하나 질문드립니다. | 개미 | 2024-11-24 |
2676124 | 함수선언관련 질문이에요~...털썩..수정완료 (2) | 가지 | 2024-11-24 |
2676092 | C언어 책 (2) | 아서 | 2024-11-24 |
2676065 | 웹사이트 또는 메신저 등에서 원하는 텍스트를 검사하는방법?? (1) | 모든 | 2024-11-23 |
2676033 | 배열 기초연습중 발생하는 에러 ㅠㅜ... | Creative | 2024-11-23 |
2676005 | keybd_event 게임 제어 | 영글 | 2024-11-23 |
2675900 | 진짜기본적인질문 | 글길 | 2024-11-22 |
2675845 | 수정좀해주세요ㅠㅠㅠ | 해골 | 2024-11-21 |
2675797 | 병합 정렬 소스 코드 질문입니다. (2) | 도래솔 | 2024-11-21 |
2675771 | 큐의 활용이 정확히 어떻게 되죠?? | 해긴 | 2024-11-21 |
2675745 | 도서관리 프로그램 질문이요 | 도리도리 | 2024-11-20 |
2675717 | 2진수로 변환하는것! (3) | 동생몬 | 2024-11-20 |
2675599 | for문 짝수 출력하는 법 (5) | 널위해 | 2024-11-19 |
2675575 | Linux 게시판이 없어서.. | 첫삥 | 2024-11-19 |
2675545 | 구조체 이용할 때 함수에 자료 넘겨주는 것은 어떻게 해야 하나요? | 아연 | 2024-11-19 |
2675518 | 사각형 가로로 어떻게 반복해서 만드는지좀.. 내용 | 신당 | 2024-11-18 |
2675491 | !느낌표를 입력하는것은 어떻게합니까~~?ㅠㅠ (5) | 사지타리우스 | 2024-11-18 |
2675411 | 파일입출력으로 받아온 파일의 중복문자열을 제거한 뒤 파일출력 | 앨버트 | 2024-11-17 |
2675385 | 링크드리스트 주소록 질문드립니다. (1) | 겨루 | 2024-11-17 |