기금넷 공식사이트 - 주식 시세 - 클래식 미니 게임(백개먼, 스네이크, 테트리스 등)에 대한 c 소스 코드를 찾고 있습니다. 소프트웨어 디자인 프로세스를 갖는 것이 가장 좋습니다. 아이디어를 배우고 싶습니다.

클래식 미니 게임(백개먼, 스네이크, 테트리스 등)에 대한 c 소스 코드를 찾고 있습니다. 소프트웨어 디자인 프로세스를 갖는 것이 가장 좋습니다. 아이디어를 배우고 싶습니다.

이것은 가장 간단한 뱀 제어 프로세스를 가지고 있습니다.

일반적으로 이런 종류의 게임은 제어 알고리즘, 디스플레이 알고리즘, 결정 알고리즘으로 구분됩니다.

참고:

#include lt;stdio.hgt;

#include lt;windows.hgt;

#include lt ;stdlib.hgt;

#include lt;string.hgt;

#include lt;conio.hgt;

#include lt;time.hgt; //현재 시간을 시드로 사용;

enum dir{up, down, left, right}; //열거 유형 enum dir;

//Fence;

void InitFence();

void OutputF();

char game[20][20];

//액자;

p>

void InitFence(){

int i, j

for(i=0; ilt; 20; i )

for( j=0; jlt; 20; j ){

if(i==0||i==19||j==0||j==19)

게임[i][j]= '*';

else 게임[i][j]= ' ';

}

}

//프레임 표시;

void OutputF(){

int i, j;

for(i=0; ilt ; 20; i ){

for(j=0; jlt; 20; j )

printf("c ", game[i][j]);

printf("\n");

}

}

//스네이크 노드;

struct SnakeNode{

int x, y;

struct SnakeNode *prior, *next

} *head=NULL, *tail =NULL; p> void add_head(int x, int y);

int get_x(struct SnakeNode *p)

int get_y(struct SnakeNode *p); > void delete_tail();

//헤드 노드 삽입;

void add_head(int x, int y){

struct SnakeNode *q= (struct SnakeNode *)malloc(sizeof(struct SnakeNode));

q-gt; x =x y =y;

q-gt; 우선순위 =NULL

if(head) head-gt;

head =q; p > if(!tail) tail =head;

game[x][y]= '*'; //Fence 클래스를 정의할 때 f 객체를 정의할 수 있으며 Fence 클래스가 정의됩니다. SnakeNode 클래스 앞

}

int get_x

(struct SnakeNode *p){

return p-gt;x;

}

int get_y(struct SnakeNode *p){

return p-gt;y;

}

//꼬리 노드 삭제;

void delete_tail(){

struct SnakeNode *p =tail;

game[get_x(tail)][get_y(tail)]= ' '; // 테일 노드의 좌표가 나타내는 '*'를 공백으로 설정합니다.

p>

if(tail==head)

tail= head= NULL;

else{

tail= tail-gt ; 이전;

tail-gt; 다음=

}

}

/ /move move;

struct move{

enum dir point; //열거 변수 지점: 제어 방향;

int food_x;

int food_y;

};

void Moving(struct move *m)

voidchange_point(char, struct move *m) ; // 방향 변경;

void get_food(struct move *m);

void get_food(struct move *m){

srand((unsigned int ) time( NULL)); //시드 만들기(프로그램 실행 시간)

m-gt; rand()18 1; ()18 1;

게임[m-gt;food_x][m-gt;food_y]= '*'

}

무효 이동( struct move * m){

int a, b;

a= get_x(head); //헤드 노드의 가로좌표 가져오기

b= get_y(head) ; //헤드 노드의 수직 좌표

switch(m-gt; point){

케이스 업: --a break;

케이스 아래: a; 중단;

케이스 왼쪽: --b;

케이스 오른쪽: b; p>

if (a==19||b==19||a==0||b==0){ //벽에 부딪혔는지 확인

printf(" 게임 끝!!!\n") ;

exit(0);

}

if(a==m-gt; food_x amp; amp ; b==m-gt; food_y ){ //음식 먹기

add_head(a, b)

}

그 외{ <

/p>

add_head(a, b); //헤드 노드를 삽입합니다.

delete_tail(); //테일 노드를 삭제합니다.

}

voidchange_point(char keydown, struct move *m){

switch(keydown){

// 케이스 'w': m -gt; 포인트= 업; // 케이스 's': m-gt; 포인트= 다운; ;point= 왼쪽; 중단;

// 사례 'd': m-gt; 지점= 오른쪽;

사례 72: m-gt; ;

케이스 80: m-gt; 포인트= 중단;

케이스 75: 포인트= 왼쪽; : m-gt; 포인트= 오른쪽;

}

}

int main( ){

struct move m;

printf("'w, s, a, d'를 사용하여 방향을 제어합니다!!!\n\n\n"); p>

InitFence();

add_head(4, 3)

add_head(4, 4); 5) ;

get_food(amp;m);

OutputF();

while (1){

char keydown= getch( ); //getch()는 키보드에서 읽은 문자를 반환합니다. lt; conio.hgt; while(!kbhit()){ //키가 눌렸는지 판단;

system("cls") //화면 지우기 기능;

Moving(amp;m );

OutputF();

Sleep(200);

}

}

반환 0 ;

}