|
Программирование на Pascal. Описание игрового приложения “ SNAKE ” (Pascal) Автор : mav1 , 11 “а”, ТМОЛ Данное приложение « SNAKE » написано на языке “ Borland Pascal ” с использованием графического режима [ unit GRAPH ] и может быть использовано в игровых целях [для детей дошкольного возраста]. Знаменитая игра “змейка”, популярная уже пару десятилетий, и сегодня остаётся одной из самых увлекательных игр для детей, благодаря простоте в управлении, наглядности и логичности развития событий. Змейка перемещается по экрану, поедая “корм” и при каждой “кормёжке” увеличиваясь в длине и ускоряясь. Задача игрока “съесть” весь корм, не врезавшись при этом в ограждения, а также в самого себя [колечком], т.е. всё как в классической “змейке”. В начале направлять змейку на “корм” легко, но не расслабляйтесь: под конец игры змейка развивает нешуточную скорость! Данный проект демонстрирует практически возможности алгоритмического языка программирования Borland Pascal 7.0 и в частности модуля “ GRAPH ”. При написании программы использовались циклы со счетчиками, модули GRAPH и CRT , массивы, а расположение “корма” определяется случайной генерацией чисел [ RANDOM ].Также для надёжности работы приложения был использован безусловный переход GOTO .Структура программы логична, никаких сбоев при работе приложения выявлено не было. Системные требования: • Pentium 100 MHz ; • 20 Кбайт свободного места на диске; • 8 Мбайт RAM ; • клавиатура; • MS DOS ; Управление осуществляется четырьмя клавишами: w , a , s , d .При этом кнопка caps lock должна быть отжата! Выход из программы осуществляется автоматически при выигрыше [выводится сообщение “ you win !”] или проигрыше [выводится сообщение “ game over !”] Данное приложение охраняется законом об авторском праве. program graphika; {caps lock} uses graph,crt; label metka; var x,y:array [0..32] of integer; i,j,gd,gm,x0,y0,dx,dy,r,t,n:integer; ch:char; begin gd:=detect; initgraph(gd,gm,''); SETFILLSTYLE(3,2); FLOODFILL(2,2,2); setbkcolor(10); setcolor(9); settextstyle(1,0,20); outtextxy(100,150,'CAHEK'); SETTEXTSTYLE(1,0,6); OUTTEXTXY(460,120,'(R)'); DELAY(1000); SETBKCOLOR(2); DELAY(500); SETBKCOLOR(6); DELAY(500); CLEARDEVICE; setbkcolor(0); setcolor(15); settextstyle(0,0,1); outtextxy(200,200,'starting WINDOWS XP .....'); {NEW} delay(1000); outtextxy(410,200,'done'); delay(1000); cleardevice; SETCOLOR(10); {otsuda} settextstyle(1,0,5); SETBKCOLOR(9); outtextxy(10,1,'SNAKE BY MAV1'); SETTEXTSTYLE(1,0,2); OUTTEXTXY(30,50,'BEST GAME FOR 19 SCHOOL !!!'); SETCOLOR(1); ELLIPSE(500,38,91,90,100,35); LINE(496,3,504,3); SETFILLSTYLE(SOLIDFILL,14); FLOODFILL(500,38,1); SETFILLSTYLE(1,14); ARC(495,38,180,360,12); ARC(519,42,0,180,12); ARC(471,42,0,180,12); ARC(543,38,180,360,12); RECTANGLE(458,43,461,45); LINE(458,44,460,44); SETCOLOR(13); RECTANGLE(54,104,596,456); RECTANGLE(53,103,597,457); RECTANGLE(52,102,598,458); rectangle(51,101,599,459); SETTEXTSTYLE(2,0,4); OUTTEXTXY(465,53,'POISON FOREVER !'); {conec ukrasheniyam} n:=20; for i:=n downto 0 do X[i]:=60+(n-i)*10; for i:=0 to n do Y[i]:=110; randomize; x0:=(random(53)+6)*10; y0:=(random(34)+11)*10; R:=5; DX:=10; DY:=0; t:=165; SETCOLOR(14); For i:=0 to n-1 do FillEllipse(X[i],Y[i],R,R); {Mishen'} setcolor(14); fillellipse(x0,y0,r,r); metka: repeat {cikl} delay(t); for i:=n downto 1 do begin X[i]:=X[i-1]; Y[i]:=Y[i-1]; End; x[0]:=x[0]+dx; y[0]:=y[0]+dy; setcolor(14); setfillstyle(solidfill,14); fillellipse(x[0],y[0],r,r); setcolor(9); setfillstyle(solidfill,9); fillellipse(x[n],y[n],r,r); j:=1; for i:=2 to n do if (x[0]=x[i])and(y[0]=y[i]) then j:=0; if (x[0]=x0)and(y[0]=y0) then begin t:=t-15; n:=n+1; randomize; x0:=(random(53)+6)*10; y0:=(random(34)+11)*10; end; if t=0 then begin delay(1000); cleardevice; setbkcolor(10); settextstyle(1,0,20); setcolor(9); outtextxy(150,100,'You'); outtextxy(150,250,'win!'); delay(1000); setbkcolor(12); closegraph; end; setcolor(14); setfillstyle(solidfill,14); fillellipse(x0,y0,r,r); until keypressed or (x[0]<60) or (x[0]>590) or (y[0]<110) or (y[0]>450) or (j=0); if (x[0]<60) or (x[0]>590) or (y[0]<110) or (y[0]>450) or (j=0) then begin delay(1000); cleardevice; settextstyle(1,0,20); setcolor(14); outtextxy(150,100,'game'); outtextxy(150,250,'over!'); delay(200); setbkcolor(12); closegraph; end else begin ch:=readkey; case ch of #115: begin dx:=0; dy:=10; end; #119: begin dx:=0; dy:=-10; end; #97: begin dx:=-10; dy:=0; end; #100: begin dx:=10; dy:=0; end; end; goto metka; end; end. (c) Mav1 2005
|
Комментарии