기금넷 공식사이트 - 주식 시세 - 클래식 미니 게임(백개먼, 스네이크, 테트리스 등)에 대한 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{ p>
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; p>
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> 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 ;
}
- 관련 기사
- 여드름 터진 후 붉어지고 붓는 증상이 나타나면 어떻게 해야 하나요? 눌린 부위가 다 불룩해졌는데 언제쯤 가라앉나요?
- Leslie Cheung은 왜 Chen Baiqiang을 그토록 싫어합니까?
- 아부다비에서 카타르항공 qr895 환승 방법
- Hai Qing, Yao Chen, Liang Jing이 감독들에게 중생대 여배우들에게 기회를 제공하라고 요청하는 것에 대해 어떻게 생각하시나요?
- 중고 Nikon D300S의 가격은 얼마입니까?
- 양근(사천대학교 화학공학부 부교수)의 상세정보 전문
- QQ 사진첩 비밀번호 해독 마스터 소프트웨어가 진짜인가요?
- 몽골 흑약 단심강구약
- 만기 결혼 보조금에 대한 새로운 규정
- 상하이 후지아 장식 매장 주소