탐식 뱀 게임 디자인 총화

이 블 로 그 는 문자 게임 이 뱀 이 만 든 디자인 과정 을 기록 하 는 데 사용 된다.
뱀 을 탐식 하 는 것 은 전형 적 인 게임 으로서 인터넷 에 관련 된 구조 가 많 고 관련 알고리즘 도 많다.이 프로젝트 에서 저 는 위 에서 아래로 점차적으로 정교 한 사상 디자인 을 사 용 했 습 니 다. 전체적인 디자인 구조의 위조 코드 는 다음 과 같 습 니 다.
          
    WHILE not      DO
        wait(time)
        ch=whereGoNext(Hx,Hy,Fx,Fy)
        CASE ch DO
        ‘A’:     ,break 
        ‘D’:     ,break    
        ‘W’:     ,break    
        ‘S’:     ,break    
        END CASE
              
    END WHILE
       Game Over!!! 

전체적인 틀 이 생 긴 후에 가장 중요 한 것 은 알고리즘 입 니 다. 인터넷 에 관련 알고리즘 이 많 지만 복잡 하고 이해 하기 어렵 습 니 다. 이 게임 에서 저 는 맨 해 튼 거 리 를 가장 짧게 가 는 알고리즘 (선생님 이 주신...) 을 사 용 했 습 니 다. 똑똑 한 뱀 을 실 현 했 습 니 다. 위조 코드 는 다음 과 같 습 니 다.
    // Hx,Hy:     
    // Fx,Fy:     
    function whereGoNext(Hx,Hy,Fx,Fy) {
    //    movable[3]={“a”,”d”,”w”,”s”}        
    //    distance[3]={0,0,0,0}         
    //                   。H    ,F    
    //       :    ”a”  distance[0] = |Fx – (Hx-1)| + |Fy – Hy|
    //              Hx-1,Hy     Blank,  distance[0] = 9999
    //   distance         p,         9999
    //    movable[p]
    }

아래 는 내 가 밟 은 구덩이 다!!
갱 1: VT 100 제어 코드 좌 표 는 (1, 1) 부터!!그리고 (열 수, 줄 수)!!!VT 100 제어 코드 의 좌 표 는 (1, 1) 에서 시작 되 었 고 (줄 수, 열 수)!! - - - >X I (1, 1) (1, 2) (1, 3) I (2, 1) (2, 2) (2, 3) I I Y 이것 은 완전히 상식 적 으로 패 를 내지 않 는 것 이다.(1, 1) 부터 그만 두 자.관건 적 인 좌 표 는 아직 (열 수, 줄 수) 이 아니 라 (줄 수, 열 수) 이다.내 가 너무 못 했 어...바로 이 때문이다. 이 프로그램의 맨 해 튼 거 리 는 fabs (snakeX [0] - foody) + fabs (snakeY [0] - foodx) 이지 fabs (snakeX [0] - foodx) + fabs (snakeY [0] - foody) 가 아니다.
갱 2: 버퍼 를 새로 고 쳐 야 합 니 다!!이거 조심해 야 돼!!문 자 를 출력 할 때마다 반드시 인쇄 '
'
하거나 fflush(stdout) 로 버퍼 를 새로 고 쳐 야 합 니 다!!만약 믿 지 않 는 다 면, 너 는 새로 고치 지 않 고 시험 해 볼 수 있다.
구덩이 3: c99 로 컴 파일 하 는 것 에 대해 서 는 물론 구덩이 가 아 닙 니 다. 저 는 redhat 6 (버 전이 좀 낮 으 니 뿌리 지 마 세 요. 높 은 버 전이 있 으 면 공유 할 수 있 기 를 바 랍 니 다) gcc 로 컴 파일 합 니 다.이 문 제 를 해결 하 는 것 도 간단 하 니 번역 할 때 -std=c99 를 더 하면 된다.즉 gcc -std=c99 -o mytest mytest.c 아래 Makefile 파일 을 자세히 보 세 요.
.SUFFIXES: .c .o

CC=gcc

SRCS1=mysnake.c
OBJS1=$(SRCS1:.c=.o)
EXEC1=mysnake

all: $(OBJS1)
    $(CC) -std=c99 -o $(EXEC1) $(OBJS1) 

    @echo '-------------ok--------------'

.c.o: 
    $(CC) -std=c99 -Wall -g -o $@ -c $<

clean:
    rm -f $(OBJS1) $(EXEC1)

총결산
뱀 은 지능 적 이지 않 지만 알고리즘 을 설계 하 는 과정 에서 많은 것 을 배 웠 다.한 마디 로 하면 전체 과정 이 매우 재 미 있 고 앞으로 이 게임 을 더욱 최적화 시 킬 수 있 기 를 바란다.그리고 하나 더, VT 100 컨트롤 코드 가 있다 니!!!노자 가 들 어 본 적도 없 는데.지식 이 늘 었 다...

좋은 웹페이지 즐겨찾기