탐식 뱀 게임 디자인 총화
4517 단어 소프트웨어 공학 서론 작업
뱀 을 탐식 하 는 것 은 전형 적 인 게임 으로서 인터넷 에 관련 된 구조 가 많 고 관련 알고리즘 도 많다.이 프로젝트 에서 저 는 위 에서 아래로 점차적으로 정교 한 사상 디자인 을 사 용 했 습 니 다. 전체적인 디자인 구조의 위조 코드 는 다음 과 같 습 니 다.
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 컨트롤 코드 가 있다 니!!!노자 가 들 어 본 적도 없 는데.지식 이 늘 었 다...