Проблема в том что после того как я несколько раз стреляю в разные стороны, у меня он не стреляет, заранее благодарю!
program tanki; uses crt, graph; var gd, gm, ax, ay, bx, by, px, py, pux, puy: integer; color: byte; ch: char; gun, vverx, vniz, vlevo, vpravo, doshel, doshelvniz, doshelvverx, doshelvpravo, doshelvlevo: boolean; begin ax := 20; ay := 20; bx := 40; by := 40; clrscr; gd := detect; initgraph(gd, gm, ' '); cleardevice; setcolor(2); rectangle(bx, by, ax, ay); doshel:=true; repeat if keypressed then begin ch := readkey; if ch in ['s','w','a','d'] then begin setcolor(0); rectangle(bx, by, ax, ay); case ch of 's': begin ay := ay + 5; by := by + 5; vniz:=true; vverx:=false; vlevo:=false; vpravo:=false; end; 'w': begin ay := ay - 5; by := by - 5; vniz:=false; vverx:=true; vlevo:=false; vpravo:=false; end; 'a': begin ax := ax - 5; bx := bx - 5; vniz:=false; vverx:=false; vlevo:=true; vpravo:=false; end; 'd': begin ax := ax + 5; bx := bx + 5; vniz:=false; vverx:=false; vlevo:=false; vpravo:=true; end; end; end; end; setcolor(2); rectangle(bx, by, ax, ay); if ch=#32 then begin gun:=true; end; { ---------------------------------------------------------------} if (gun=true) and (doshel=true) and (vniz=true) then begin doshelvniz:=true; py:=by+2; puy:=ay+2; px:=bx-2; pux:=ax+2; end; if (gun=true) and (doshel=true) and (vverx=true) then begin doshelvverx:=true; py:=by-2; puy:=ay-2; px:=bx-2; pux:=ax+2; end; if (gun=true) and (doshel=true) and (vpravo=true) then begin doshelvpravo:=true; py:=by-2; puy:=ay+2; px:=bx-2; pux:=ax-2; end; if (gun=true) and (doshel=true) and (vlevo=true) then begin doshelvlevo:=true; py:=by-2; puy:=ay+2; px:=bx-2; pux:=ax-2; end;
{-------------------------------------------------------------------------} {-------------------------------------------------------------------------} if doshelvverx=true then begin doshelvniz:=false; doshelvpravo:=false; doshelvlevo:=false; setcolor(0); rectangle(px, py, pux, puy); setcolor(2); doshel:=false; py:=py-2; puy:=puy-2; rectangle(px, py, pux, puy) end; if doshelvniz=true then begin doshelvverx:=false; doshelvpravo:=false; doshelvlevo:=false; setcolor(0); rectangle(px, py, pux, puy); setcolor(2); doshel:=false; py:=py+2; puy:=puy+2; rectangle(px, py, pux, puy) end; if doshelvpravo=true then begin doshelvverx:=false; doshelvniz:=false; doshelvlevo:=false; setcolor(0); rectangle(px, py, pux, puy); setcolor(2); doshel:=false; px:=px+2; pux:=pux+2; rectangle(px, py, pux, puy) end; if doshelvlevo=true then begin doshelvverx:=false; doshelvpravo:=false; doshelvniz:=false; setcolor(0); rectangle(px, py, pux, puy); setcolor(2); doshel:=false; px:=px-2; pux:=pux-2; rectangle(px, py, pux, puy) end;
{--------------------------------------------------------------------------} if (px=0) or (py=0) or (pux=0) or (puy=0) or (px=getmaxx) or (pux=getmaxx) or (py=getmaxy) or (puy=getmaxy) then begin doshel:=true; doshelvniz:=false; doshelvverx:=false; doshelvpravo:=false; doshelvlevo:=false; gun:=false; setcolor(0); rectangle(px, py, pux, puy); setcolor(2); end;
delay(1000);
until ch = #27 end.
zhenka
2.06.2012 3:25
Нашел Нашел, у меня ведь движение пули идет по 2 пикселям, то есть правильней было бы
if ((px<=1) or (py<=1) or (pux<=1) or (puy<=1) or (px>=getmaxx-1) or (pux>=getmaxx-1) or (py>=getmaxy-1) or (puy>=getmaxy-1)) and (gun=true) then
Гость
13.11.2014 23:26
А где программа написана? В каком паскале?
alex 10
25.11.2014 23:38
Цитата(Гость @ 13.11.2014 19:26)
А где программа написана? В каком паскале?
да да. Мне тоже интересно
alex 10
8.12.2014 23:50
мне кажется программа написана в free pascal
Добавлено через 3 мин. но точно не в паскаль абц
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.