시작
무작위화
Writeln ("축하합니다!" " , 임의 (& ltNumbers > )+ 1, "이겼다!" );
끝내다.
방송할 수 있는 프로그램? 여기는 뱀욕심 프로그램인데, 오리지널이지만, 부그 (게임에 영향을 주지 않음) 가 있는 것 같아요.
프로그램 GReedySNAKE
Crt 사용
Constup = 0;
오른쪽 =1;
Down = 2;;
왼쪽 = 3;
보통 = 0;
보너스 =1;
Shorten = 2;;
유형점 = 레코드
X, y: 정수;
끝;
Tfood 유형 = 레코드
Fpoint: 점;
Ftype:byte;;
대/소문자 바이트
보통: ();
보너스:
(b time:word;;
Bscore: byte);
단축:
(stime:word;;
S length: byte);
끝;
Var cur, bin:point;;
음식: tfood
트랙: 배열의 점 [1... 200];
Ch:char;;
Dir: 바이트;
엉덩이: 부울;
Int, length, score: 정수;
함수 pzero (p: point): 부울;
Var bool: 부울;
시작
(p.x=0) 및 (p.y=0) 인 경우
부울: = 참
기타
Bool:= false;;
Pzero: = bool;
끝;
절차 p write (p: point; Ch: char);
시작
Pzero(p) 가 아니면
시작
Gotoxy(p.x, p.y);
쓰기 (ch);
끝;
끝;
함수 psame(p, p2: point): 부울;
Var bool: 부울;
시작
(p.x=p2.x) 및 (p.y=p2.y) 인 경우
부울: = 참
기타
Bool:= false;;
P same: = bool;
끝;
프로시저 pset (var p: point; X2, y2: 정수);
시작
P.x: = x2;
P.y: = y2;
끝;
프로세스 new food (var s food: t food);
Var int2: 정수;
좋습니다: 부울;
시작
스포드로 만들다
시작
Pwrite(fpoint,'');
Ftype: = random (9);
(ftype=3) 또는 (ftype=4) 인 경우 ftype: =1;
Ftype=5 인 경우 ftype: = 2;
Ftype & gt5 인 경우 ftype:= 0;;
시나리오 유형
보통:;
보너스:
시작
Btime: = (random (3)+4) * 20; {20= 1000/50}
Bscore: = 8-(btime div 20);
끝;
단축:
시작
3> 가 그렇게 길면
Ftype:= 보통
기타
시작
Stime: = (random (3)+4) * 20;
Slength: = random (2)+1;
끝;
끝;
끝;
반복
좋습니다: = 참;
Pset(fpoint, random(78)+2, random (46)+2);
Int:= 1 끝 길이 do 의 경우
Okay:=okay and (not psame(fpoint, track [int]);
Okay:=okay and (비 psame(fpoint, cur)) and (비 psame(fpoint, bin)););
괜찮아질 때까지
시나리오 유형
보통:
시작
Textcolor (밝은 자홍색);
Pwrite(fpoint, # 3);
Textcolor (노란색);
끝;
보너스:
시작
Textbackground (빨간색);
Pwrite(fpoint,' b');
Textbackground (블랙);
끝;
단축:
시작
Textbackground (녹색);
Pwrite(fpoint,' s');
Textbackground (블랙);
끝;
끝;
끝;
끝;
프로그램 newtrack
Varint: integer;
시작
Pwrite(bin,'');
Int:= 1 끝 길이 do 의 경우
Pwrite (트랙 [int], # 219);
Textcolor (밝은 빨간색);
Pwrite(cur, # 2);
Textcolor (노란색);
Gotoxy(cur.x, cur.y);
끝;
시작
무작위화
Check break:= false;;
Textbackground (블랙);
Textcolor (노란색);
Clrscr
Writeln ('탐욕스러운 뱀');
Writeln ('사용', #27#24#25#26,' 키를 사용하여 뱀을 제어합니다.' );
Writeln ('이 버튼 중 하나를 계속 누르면 뱀이 더 빨리 달릴 수 있다.' );
Textcolor (밝은 자홍색);
쓰기 (# 3);
Textcolor (노란색);
Writeln ('보통 음식, 점수+10 을 먹었다.' );
Textbackground (빨간색);
쓰기 ('b');
Textbackground (블랙);
Writeln ('보상 음식, 점수 +40, 60, 80 을 먹으면. "어서 먹어라!" );
Writeln ('먹히면 뱀의 길이가 크게 늘어난다.' );
Writeln ('그래서 가능한 한 이런 음식을 먹어라:');
Textbackground (녹색);
쓰기 ('s');
Textbackground (블랙);
음식으로 뱀의 길이를 줄이다. 빨리! );
Writeln ('뱀의 최대 길이는 20 1 입니다.' );
Writeln ('길이가 정말 20 1 이면 게임이 끝난다.' );
Writeln ('뱀이 벽이나 몸에 부딪치지 않도록 해라!' );
Writeln(' P' 키: 일시 중지, 일시 중지 시 아무 키나 눌러 계속합니다. );
Writeln ('참고: (1) 게임 전에 Alt-Enter 를 누르는 것이 좋습니다 );
Writeln(' (2) 뱀이 너무 빨리 가면 다시 열어봐 );
Writeln ('계속하려면 아무 키나 누르십시오 ...');
Ch: = 리드 키;
Ch=#0 이면 ch:= read key;;
Clrscr
Writeln ('경험에 대해 말하기:');
Writeln('( 1) 연속', #27#24#25#26,' 키 중 하나를 누르면 뱀이 빨라진다,');
Writeln ('이거 조심해요!'' );
Writeln ('음식이 비정상인 경우에만 사용해야 한다.' );
Writeln('(2) 뱀의 길이가 너무 길면');
Writeln ('보상식품을 먹을 기회를 포기하는 것이 좋다.' );
Writeln('(3) 보너스 음식을 반복해서 쫓지 않는 게 좋을 것 같아요! ♫ );
Writeln ('뱀이 몸에 부딪힐지도 모른다.' ♫ );
경험만 이야기하다. 사용하지 마십시오. 이것이 당신의 선택입니다. );
Writeln ('계속하려면 아무 키나 누르십시오 ...');
Ch: = 리드 키;
Ch=#0 이면 ch:= read key;;
Textmode (8060);
Textbackground (블랙);
Clrscr
Textcolor (노란색);
Pset(cur, 1,1);
Int 의 경우: =1끝 100 do
Pset (트랙 [int], 0,0);
Pset(bin, 0, 0);
길이: =1;
점수: = 0;
Dir:= right;;
Textbackground (빨간색);
Gotoxy( 1, 50);
Writeln
Writeln
Textbackground (파란색);
쓰기 ('길이:', 길이+1);
Gotoxy( 1, 49);
쓰기 ('점수:', 점수);
Textbackground (블랙);
Textcolor (빨간색);
Gotoxy( 1,1);
쓰기 (# 2);
Gotoxy( 1,1);
Textcolor (노란색);
뉴푸드 (음식);
Ch: = 리드 키;
Ch=#0 이면 ch:= read key;;
반복
반복
Case food. ft 유형
보통:
시작
Textcolor (밝은 자홍색);
Pwrite(food.fpoint, # 3);
Textcolor (노란색);
끝;
보너스:
시작
Textbackground (빨간색);
Pwrite(food.fpoint,' b');
Textbackground (블랙);
끝;
단축:
시작
Textbackground (녹색);
Pwrite(food.fpoint,' s');
Textbackground (블랙);
끝;
끝;
Gotoxy(food.fpoint.x, food.f point.y);
Psame(cur, food.fpoint) 인 경우
시작
Case food. ft 유형
보통:
시작
Inc (점수);
Inc (길이);
끝;
보너스:
시작
Inc(score, food.bscore * 2);
Inc (길이, trunc (food.bscore * 2.5));
끝;
단축:
시작
For int: =1to food.s length do
시작
Pwrite (트랙 [길이-int+1],'');
Pset (트랙 [길이-int+1], 0,0);
끝;
Dec (길이, 음식, 길이);
끝;
끝;
Textbackground (파란색);
고톡시 (8,49);
쓰기 (점수 *10);
고톡시 (9,50);
Textbackground (빨간색);
클리어
Textbackground (파란색);
쓰기 (길이+1);
Textbackground (블랙);
뉴푸드 (음식);
끝;
지연 (50);
If food.ftype & lt& gt 는 평소와 같습니다
시작
Dec (food.b time);
Food.btime=0 이면
뉴푸드 (음식);
끝;
사례 디렉토리
위로:
시작
Cur.y & gt 라면 1
시작
Bin:= 레일 [길이];
길이< 인 경우 =200
For int:=length downto 1 do
레일 [int+ 1]:= 레일 [int]
기타
For int: =199 down to1do
트랙 [int+1]: = 트랙 [int];
트랙 [1]: = cur;
12 월 (현재 연도);
Newtrack
끝
기타
Hit:= true;;
끝;
왼쪽:
시작
만약 cur.x & gt 라면 1
시작
Bin:= 레일 [길이];
길이< 인 경우 =200
For int: = length-1down to1do
레일 [int+ 1]:= 레일 [int]
기타
For int: =199 down to1do
트랙 [int+1]: = 트랙 [int];
트랙 [1]: = cur;
Dec (cur.x);
Newtrack
끝
기타
Hit:= true;;
끝;
오른쪽:
시작
If cur.x & lt 그럼 80
시작
Bin:= 레일 [길이];
길이< 인 경우 =200
For int: = length-1down to1do
레일 [int+ 1]:= 레일 [int]
기타
For int: =199 down to1do
트랙 [int+1]: = 트랙 [int];
트랙 [1]: = cur;
Inc (cur.x);
Newtrack
끝
기타
Hit:= true;;
끝;
아래로:
시작
If cur.y & lt 그럼 48
시작
Bin:= 레일 [길이];
길이< 인 경우 =200
For int: = length-1down to1do
레일 [int+ 1]:= 레일 [int]
기타
For int: =199 down to1do
트랙 [int+1]: = 트랙 [int];
트랙 [1]: = cur;
Inc (cur.y);
Newtrack
끝
기타
Hit:= true;;
끝;
끝;
Int:= 1 끝 길이 do 의 경우
시작
Hit:=hit 또는 psame(cur, 트랙 [int]);
끝;
길이 & gt=200 인 경우 다음 호출: = true;
키 또는 keystroke 까지;
맞히면
기타
시작
Psame(cur, food.fpoint) 인 경우
시작
Case food. ft 유형
보통:
시작
Inc (점수);
Inc (길이);
끝;
보너스:
시작
Inc(score, food.bscore * 2);
Inc (길이, trunc (food.bscore * 2.5));
끝;
단축:
시작
For int: =1to food.s length do
시작
Pwrite (트랙 [길이-int+1],'');
Pset (트랙 [길이-int+1], 0,0);
끝;
Dec (길이, 음식, 길이);
끝;
끝;
Textbackground (파란색);
고톡시 (8,49);
쓰기 (점수 *10);
고톡시 (9,50);
Textbackground (빨간색);
클리어
Textbackground (파란색);
쓰기 (길이+1);
Textbackground (블랙);
뉴푸드 (음식);
끝;
Ch: = 리드 키;
제 1 상자
#27: 일시 중지;
#0:
시작
Ch: = 리드 키;
제 1 상자
#72:{UP}
시작
If (cur.y > 1) 및 (dir<& gt 아래) 그리고
시작
Bin:= 레일 [길이];
길이< 인 경우 =200
For int: = length-1down to1do
레일 [int+ 1]:= 레일 [int]
기타
For int: =199 down to1do
트랙 [int+1]: = 트랙 [int];
트랙 [1]: = cur;
12 월 (현재 연도);
Newtrack
Dir:= up;;
끝
기타
디렉토리 & lt& gt 에서 다음 전화를 걸면: = true;
끝;
# 75: {왼쪽}
시작
If (cur.x > 1) 및 (dir<& gt 쌍) 그리고
시작
Bin:= 레일 [길이];
길이< 인 경우 =200
For int: = length-1down to1do
레일 [int+ 1]:= 레일 [int]
기타
For int: =199 down to1do
트랙 [int+1]: = 트랙 [int];
트랙 [1]: = cur;
Dec (cur.x);
Newtrack
Dir:= left;;
끝
기타
디렉터리 & lt& gt 가 오른쪽 클릭한 다음: = true;
끝;
#77:{RIGHT}
시작
If (cur.x < 80) 과 (dir<& gt 왼쪽) 그리고
시작
Bin:= 레일 [길이];
길이< 인 경우 =200
For int: = length-1down to1do
레일 [int+ 1]:= 레일 [int]
기타
For int: =199 down to1do
트랙 [int+1]: = 트랙 [int];
트랙 [1]: = cur;
Inc (cur.x);
Newtrack
Dir:= right;;
끝
기타
디렉토리 & lt& gt 가 왼쪽으로 치면: = true;
끝;
# 80:{ 아래로}
시작
If (cur.y < 48) 과 (dir<& gt 위) 그리고
시작
Bin:= 레일 [길이];
길이< 인 경우 =200
For int: = length-1down to1do
레일 [int+ 1]:= 레일 [int]
기타
For int: =199 down to1do
트랙 [int+1]: = 트랙 [int];
트랙 [1]: = cur;
Inc (cur.y);
Newtrack
Dir:= down;;
끝
기타
디렉토리 & lt& gtup then hit:= true;; 인 경우
끝;
끝;
끝;
Else if (ch='P') 또는 (ch='p') then
시작
Ch: = 리드 키;
Ch=#0 이면 ch:= read key;;
끝;
끝;
끝;
맞을 때까지
Textmode (co80);
Textbackground (블랙);
Textcolor (노란색);
Clrscr
쓰기 (# 219 # 219 # 219);
Textcolor (밝은 빨간색);
쓰기 (# 2);
Textcolor (노란색);
Writeln ('게임 종료!' );
Writeln(' Score:', score *10);
쓰기 ('뱀 길이:');
길이 & lt200 다음 writeln (길이+1) 인 경우
Elsewriteln (201);
Writeln(' Press & lt;; 입력> 종료 ...);
Readln
끝내다.