![]() |
![]() |
Dean_Cane_Kenoby |
![]()
Сообщение
#21
|
![]() Группа: Пользователи Сообщений: 6 Репутация: ![]() ![]() ![]() |
Вот "отцовская" программа:
Код {Tanki, by Dean Cane Kenoby} program Tanki; uses graph,crt; var gd,gm,x,y,i,k,j,x1,y1,x2,y2,x3,y3,k1,li1,li2,w,w1:integer; s1,s2: string; t,z: text; procedure F1; {Процедура подключения файлов для ведения счета} begin clrscr; assign(t,'C:t22.txt'); rewrite(t); close(t); append(t); writeln(t,li1); close(t); clrscr; assign(z,'C:t33.txt'); rewrite(z); close(z); append(z); writeln(z,li2); close(z); end; procedure str; {Процедура преобразования счета в строковый формат} begin reset(t); readln(t,s1); close(t); reset(z); readln(z,s2); close(z); end; procedure kvadrat; {Процедура построения первого танка} begin setcolor(4); setfillstyle(11,4); bar(x,y,x+30,y+30); setcolor(22); line(x+15,y+15,x+x1,y+y1); {Пушка} circle(x+15,y+15,5); end; procedure kvadrat2; {Процедура построения второго танка} begin setcolor(1); setfillstyle(7,4); bar(x2,y2,x2-30,y2-30); setcolor(12); line(x2-15,y2-15,x2-x3,y2-y3); {Пушка} circle(x2-15,y2-15,5); end; procedure exp2; {Процедура взрыва и восстановления второго танка} begin circle(x2-15,y2-15,5); delay(5000); circle(x2-15,y2-15,10);delay(5000); circle(x2-15,y2-15,15);delay(5000); circle(x2-15,y2-15,20);delay(5000); x2:=getmaxx; y2:=getmaxy; li1:=li1+1; circle(x2-15,y2-15,20);delay(5000); circle(x2-15,y2-15,15);delay(5000); circle(x2-15,y2-15,10);delay(5000); circle(x2-15,y2-15,5); delay(5000); end; procedure exp; {Процедура взрыва и восстановления первого танка} begin circle(x+15,y+15,5); delay(5000); circle(x+15,y+15,10);delay(5000); circle(x+15,y+15,15);delay(5000); circle(x+15,y+15,20);delay(5000); x:=1; y:=1; li2:=li2+1; circle(x+15,y+15,20);delay(5000); circle(x+15,y+15,15);delay(5000); circle(x+15,y+15,10);delay(5000); circle(x+15,y+15,5); delay(5000); end; procedure shot; {Выстрел первого танка, если на траэкт. пули есть 2 танк происходит взрыв(exp2)} begin if w=2 then begin for i:=y+y1+15 to getmaxy do begin putpixel(x+15,i,13); delay(100); putpixel(x+15,i-1,0); delay(100); if (i=y2-15) and (x+15=x2-15) then exp2; end; end; if w=8 then begin for i:=y-15 downto 0 do begin putpixel(x+15,i,13); delay(100); putpixel(x+15,i+1,0); delay(100); if (i=y2-15) and (x+15=x2-15) then exp2; end; end; if w=4 then begin for i:=x-15 downto 0 do begin putpixel(i,y+15,13); delay(100); putpixel(i+1,y+15,0); delay(100); if (i=x2-15) and (y+15=y2-15) then exp2; end; end; if w=6 then begin for i:=x+x1+15 to getmaxx do begin putpixel(i,y+15,13); delay(100); putpixel(i-1,y+15,0); delay(100); if (i=x2-15) and (y+15=y2-15) then exp2; end; end; end; procedure shot2; {Выстрел второго танка, если на траэкт. пули есть 1 танк происходит взрыв(exp)} begin if w1=2 then begin for i:=y2-y3 to getmaxy do begin putpixel(x2-15,i,11); delay(100); putpixel(x2-15,i-1,0); delay(100); if (i=y+15) and (x2-15=x+15) then exp; end; end; if w1=8 then begin for i:=y2-35 downto 0 do begin putpixel(x2-15,i,11); delay(100); putpixel(x2-15,i+1,0); delay(100); if (i=y+15) and (x2-15=x+15) then exp; end; end; if w1=4 then begin for i:=x2-35 downto 0 do begin putpixel(i,y2-15,11); delay(100); putpixel(i+1,y2-15,0); delay(100); if (i=x+15) and (y2-15=y+15) then exp; end; end; if w1=6 then begin for i:=x2-x3 to getmaxx do begin putpixel(i,y2-15,11); delay(100); putpixel(i-1,y2-15,0); delay(100); if (i=x+15) and (y2-15=y+15) then exp; end; end; end; procedure move; {Процедура отвечающая за движения и выстрел обоих танков} begin k:=ord(readkey); case k of 115: begin y:=y+32; x1:=15; y1:=35; w:=2 end; {2} 119: begin y:=y-32; x1:=15; y1:=-5; w:=8 end; {8} 97: begin x:=x-32; x1:=-5; y1:=15; w:=4 end; {4} 100: begin x:=x+32; x1:=35; y1:=15; w:=6 end; {6} 50: begin y2:=y2+32; x3:=15; y3:=-5; w1:=2 end; {2} 56: begin y2:=y2-32; x3:=15; y3:=35; w1:=8 end; {8} 52: begin x2:=x2-32; x3:=35; y3:=15; w1:=4 end; {4} 54: begin x2:=x2+32; x3:=-5; y3:=15; w1:=6 end; {6} 32: shot; 48: shot2; else j:=1; end; end; procedure ramka; {Процедура разгранения поля по клеткам и таблица очков} begin cleardevice; setfillstyle(1,2); bar(getmaxx-158,0,getmaxx,32); setcolor(14); moveto(getmaxx-150,8); outtext('Player 1'); moveto(getmaxx-60,8); outtext(s1); setcolor(4); moveto(getmaxx-150,20); outtext('Player 2'); moveto(getmaxx-60,20); outtext(s2); setcolor(2); line(0,0,getmaxx,0); line(0,0,0,getmaxy); line(0,getmaxy,getmaxx,getmaxy); line(getmaxx,0,getmaxx,getmaxy); for i:=0 to round(getmaxx/32) do line(i*32,0,i*32,getmaxy); for i:=0 to round(getmaxy/32) do line(0,i*32,getmaxx,i*32); end; begin {Начало программы} gd:=detect; initgraph(gd,gm,'c:\tp7\unit'); setbkcolor(0); textcolor(0); x:=1; y:=1; {Задание начальных координат и значений} x1:=35; y1:=15; x2:=getmaxx; y2:=getmaxy; x3:=35; y3:=15; li1:=0; li2:=0; repeat {Основной цикл игры} clrscr; cleardevice; f1; str; ramka; kvadrat; kvadrat2; move; until j=1; {Выход из программы} readln; end. {Конец программы} |
![]() ![]() |
![]() |
Текстовая версия | 20.06.2025 8:18 |