IPB
ЛогинПароль:

 
 Ответить  Открыть новую тему 
> Pascal Graph, глюк с прямоугольником, Поспрашивал на всех форумах, никто не может ответить
zhenka
сообщение 1.06.2012 20:36
Сообщение #1





Группа: Пользователи
Сообщений: 3
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Проблема в том что после того как я несколько раз стреляю в разные стороны, у меня он не стреляет, заранее благодарю!





 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.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
zhenka
сообщение 1.06.2012 23:25
Сообщение #2





Группа: Пользователи
Сообщений: 3
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Нашел Нашел, у меня ведь движение пули идет по 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
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость
сообщение 13.11.2014 19:26
Сообщение #3


Гость






А где программа написана? В каком паскале?
 К началу страницы 
+ Ответить 
alex 10
сообщение 25.11.2014 19:38
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 22
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


Цитата(Гость @ 13.11.2014 19:26) *

А где программа написана? В каком паскале?

да да. Мне тоже интересно
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
alex 10
сообщение 8.12.2014 19:50
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 22
Пол: Мужской
Реальное имя: Алексей

Репутация: -  0  +


мне кажется программа написана в free pascal ninja.gif ninja.gif ninja.gif

Добавлено через 3 мин.
но точно не в паскаль абц 1.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 3.11.2024 8:31
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"