Created
December 26, 2014 11:24
-
-
Save jskDr/e84cf562325091e743cf to your computer and use it in GitHub Desktop.
Snake code by Korean C programming
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 예제 프로그램 : | |
// 뱀 경기에서 화면관리를 위해 사용되는 절차를 정의한다. | |
// 화면을 80*60(가로*세로)단위로 관리한다. | |
뱀화면 단원 . | |
사용 뱀입력 . | |
사용 단말기 . | |
절차 시작점 ( ) . | |
절차 마무리 ( ) . | |
절차 화면공간초기화 ( 정수 배경색 ) . | |
절차 경기장경계그리기 ( 정수 벽색 ) . | |
절차 장애물그리기 ( 정수 단계 ) . | |
절차 화면반칸그리기 ( 정수 가로, 정수 세로, 정수 색 ) => 부울 . | |
절차 다른색인가 ( 정수 가로, 정수 세로, 정수 색 ) => 부울 . | |
절차 같은색인가 ( 정수 가로, 정수 세로, 정수 색 ) => 부울 . | |
// ------------------------------------------------------------------- | |
절차 미음자그리기 ( 정수 왼, 정수 위, 정수 오른, 정수 아래, 정수 색 ) . | |
절차 선그리기 ( 정수 왼, 정수 위, 정수 오른, 정수 아래, 정수 색 ) . | |
절차 가로로선그리기 ( 정수 줄수, 정수 가로시작, 정수 가로끝, 정수 색 ) . | |
절차 세로로선그리기 ( 정수 칸수, 정수 세로시작, 정수 세로끝, 정수 색 ) . | |
자료형 화면공간형 = 구조물 { | |
정수 줄_30, 색, 위아래 . | |
} . | |
화면공간형[81][61] 화면공간 . | |
정수 최대가로, 최대세로 . | |
/* -------------------- */ 구현부 /* ----------------------- */ | |
절차 시작점 ( ) | |
크기수 가로, 세로 . | |
{ | |
//최대좌표얻기 ( 가로, 세로 ) . | |
최대좌표얻기 ( 정수(가로), 정수(세로) ) . | |
가로 > 79 { 참이면 가로 := 79. } | |
세로 > 29 { 참이면 세로 := 29. } | |
최대가로 := 가로+1 . 최대세로 := (세로+1)*2 . | |
} | |
절차 마무리 ( ) | |
{ | |
화면지우기 ( ) . | |
} | |
/* ---------------------------------------------------------------- */ | |
절차 화면공간초기화 ( 정수 배경색 ) | |
정수 가로, 세로 . | |
{ | |
준비 세로 := 1 . 조절 세로 ++ . | |
되풀이 세로 <= 최대세로 참인 동안 { | |
준비 가로 := 1 . 조절 가로 ++ . | |
되풀이 가로 <= 최대가로 참인 동안 { | |
화면공간[가로][세로]->줄_30 := (세로+1)/2 . | |
화면공간[가로][세로]->위아래 := (세로%2)*2-1 . // 위반칸:1, 아래반칸:-1 | |
화면공간[가로][세로]->색 := 배경색 . | |
} | |
} | |
배경색정하기 ( 배경색 ) . 화면지우기 ( ) . | |
} | |
절차 경기장경계그리기 ( 정수 벽색 ) | |
{ | |
미음자그리기 ( 1, 4, 최대가로, 최대세로 - 3, 벽색 ) . | |
} | |
절차 장애물그리기 ( 정수 단계 ) | |
정수 i . | |
{ | |
단계 값이 { | |
1 => . | |
2 => | |
선그리기 ( 20, 25, 최대가로-20, 25, 벽색 ) . | |
3 => | |
선그리기 ( 20, 10, 20, 최대세로-10, 벽색 ) . | |
선그리기 ( 최대가로-20, 10, 최대가로-20, 최대세로-10, 벽색 ) . | |
4 => | |
선그리기 ( 20, 4, 20, 30, 벽색 ) . | |
선그리기 ( 60, 23, 60, (최대세로-6), 벽색 ) . | |
선그리기 ( 2, 38, 40, 38, 벽색 ) . | |
선그리기 ( 41, 15, 79, 15, 벽색 ) . | |
5 => | |
선그리기 ( 21, 13, 21, 39, 벽색 ) . | |
선그리기 ( 59, 13, 59, 39, 벽색 ) . | |
선그리기 ( 23, 11, 57, 11, 벽색 ) . | |
선그리기 ( 23, 41, 57, 41, 벽색 ) . | |
6 => | |
선그리기 ( 10, 4, 10, 22, 벽색 ) . 선그리기 ( 10, 31, 10, (최대세로-6), 벽색 ) . | |
선그리기 ( 20, 4, 20, 22, 벽색 ) . 선그리기 ( 20, 31, 20, (최대세로-6), 벽색 ) . | |
선그리기 ( 30, 4, 30, 22, 벽색 ) . 선그리기 ( 30, 31, 30, (최대세로-6), 벽색 ) . | |
선그리기 ( 40, 4, 40, 22, 벽색 ) . 선그리기 ( 40, 31, 40, (최대세로-6), 벽색 ) . | |
선그리기 ( 50, 4, 50, 22, 벽색 ) . 선그리기 ( 50, 31, 50, (최대세로-6), 벽색 ) . | |
선그리기 ( 60, 4, 60, 22, 벽색 ) . 선그리기 ( 60, 31, 60, (최대세로-6), 벽색 ) . | |
선그리기 ( 70, 4, 70, 22, 벽색 ) . 선그리기 ( 70, 31, 70, (최대세로-6), 벽색 ) . | |
7 => | |
준비 i := 4 . 조절 i += 2 . | |
되풀이 i <= (최대세로-6) 참인 동안 { 화면반칸그리기 ( 40, i, 벽색 ) . } | |
8 => | |
선그리기 ( 10, 4, 10, 40, 벽색 ) . 선그리기 ( 20, 13, 20, (최대세로-6), 벽색 ) . | |
선그리기 ( 30, 4, 30, 40, 벽색 ) . 선그리기 ( 40, 13, 40, (최대세로-6), 벽색 ) . | |
선그리기 ( 50, 4, 50, 40, 벽색 ) . 선그리기 ( 60, 13, 60, (최대세로-6), 벽색 ) . | |
선그리기 ( 70, 4, 70, 40, 벽색 ) . | |
9 => | |
색깊이얻기() = 1{ | |
참이면 | |
준비 i := 6 . 조절 i ++ . | |
되풀이 i <= (최대세로-6) 참인 동안 { | |
화면반칸그리기 ( i, i, 벽색 ) . | |
화면반칸그리기 ( i + 28, i, 벽색 ) . | |
} | |
거짓이면 | |
준비 i := 6 . 조절 i ++ . | |
되풀이 i <= 47 참인 동안 { | |
화면반칸그리기 ( i, i, 벽색 ) . | |
화면반칸그리기 ( i + 28, i, 벽색 ) . | |
} | |
} | |
그밖 => | |
준비 i := 4 . 조절 i += 2 . | |
되풀이 i <= (최대세로-6) 참인 동안 { | |
화면반칸그리기 ( 10, i, 벽색 ) . 화면반칸그리기 ( 20, i + 1, 벽색 ) . | |
화면반칸그리기 ( 30, i, 벽색 ) . 화면반칸그리기 ( 40, i + 1, 벽색 ) . | |
화면반칸그리기 ( 50, i, 벽색 ) . 화면반칸그리기 ( 60, i + 1, 벽색 ) . | |
화면반칸그리기 ( 70, i, 벽색 ) . | |
} | |
} | |
} | |
/* ---------------------------------------------------------------- */ | |
절차 다른색인가 ( 정수 가로, 정수 세로, 정수 색 ) => 부울 | |
{ | |
세로 ~= 0 { | |
참이면 ( 화면공간[가로][세로]->색 ~= 색 ) 넘긴다 . | |
} | |
} | |
절차 같은색인가 ( 정수 가로, 정수 세로, 정수 색 ) => 부울 | |
{ | |
세로 ~= 0 { | |
참이면 ( 화면공간[가로][세로]->색 = 색 ) 넘긴다 . | |
} | |
참 넘긴다 . | |
} | |
절차 화면반칸그리기 ( 정수 가로, 정수 세로, 정수 색 ) => 부울 | |
정수 줄_30 . | |
정수 위아래_세로, 위아래색, 위아래표시 . | |
{ | |
세로 <= 0 { 참이면 거짓 넘긴다. } | |
화면공간[가로][세로]->색 := 색 . /* 화면공간변수 값 설정 */ | |
줄_30 := 화면공간[가로][세로]->줄_30 . | |
위아래표시 := 화면공간[가로][세로]->위아래 . | |
위아래_세로 := 세로 + 화면공간[가로][세로]->위아래 . | |
위아래색 := 화면공간[가로][위아래_세로]->색 . | |
커서위치정하기 ( 가로-1, 줄_30-1 ) . | |
색 = 위아래색 { /* 화면에 그린다. */ | |
참이면 | |
글자색정하기 ( 색 ) . 배경색정하기 ( 색 ) . | |
단말기->글자쓰기 ( 글자(219) ) . | |
거짓이면 | |
위아래표시 = -1 { | |
참이면 | |
글자색정하기 ( 색 ) . 배경색정하기 ( 위아래색 ) . | |
단말기->글자쓰기 ( 글자(220) ) . | |
거짓이면 | |
글자색정하기 ( 색 ) . 배경색정하기 ( 위아래색 ) . | |
단말기->글자쓰기 ( 글자(223) ) . | |
} | |
} | |
참 넘긴다. | |
} | |
/* ---------------------------------------------------------------- */ | |
절차 미음자그리기 ( 정수 왼, 정수 위, 정수 오른, 정수 아래, 정수 색 ) | |
{ | |
선그리기 ( 왼, 위, 오른, 위, 색 ) . | |
선그리기 ( 오른, 위+1, 오른, 아래, 색 ) . | |
선그리기 ( 왼, 아래, 오른-1, 아래, 색 ) . | |
선그리기 ( 왼, 위+1, 왼, 아래-1, 색 ) . | |
} | |
절차 선그리기 ( 정수 왼, 정수 위, 정수 오른, 정수 아래, 정수 색 ) | |
{ | |
확인 { 0<왼 그리고 왼<=오른 그리고 오른<=최대가로. } | |
확인 { 0<위 그리고 위<=아래 그리고 아래<=최대세로. } | |
왼 = 오른 { | |
참이면 세로로선그리기 ( 왼, 위, 아래, 색 ) . | |
} | |
위 = 아래 { | |
참이면 가로로선그리기 ( 위, 왼, 오른, 색 ) . | |
} | |
} | |
절차 가로로선그리기 | |
( | |
정수 줄수, 정수 가로시작, 정수 가로끝, 정수 색 | |
) | |
정수 칸수 . | |
{ | |
확인 { 0<줄수 그리고 줄수<=최대세로 그리고 | |
0<가로시작 그리고 가로시작<=가로끝 그리고 가로끝<=최대가로 . } | |
준비 칸수 := 가로시작 . 조절 칸수 ++ . | |
되풀이 칸수 <= 가로끝 참인 동안 { | |
화면반칸그리기 ( 칸수, 줄수, 색 ) . | |
} | |
} | |
절차 세로로선그리기 | |
( | |
정수 칸수 , 정수 세로시작, 정수 세로끝, 정수 색 | |
) | |
정수 줄수 . | |
{ | |
확인 { 0<칸수 그리고 칸수<=최대가로 그리고 | |
0<세로시작 그리고 세로시작<=세로끝 그리고 세로끝<=최대세로 . } | |
준비 줄수 := 세로시작 . 조절 줄수 ++ . | |
되풀이 줄수 <= 세로끝 참인 동안 { | |
화면반칸그리기 ( 칸수, 줄수, 색 ) . | |
} | |
} | |
[출처] [씨앗] 뱀놀이 예제 - 뱀화면.sd|작성자 안드레아 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment