forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   Помогите с boolean!!! (http://forum.boolean.name/showthread.php?t=12506)

im_zorg 16.05.2010 12:04

Ответ: Помогите с boolean!!!
 
Незачто.

Rock2roll 16.05.2010 13:12

Ответ: Помогите с boolean!!!
 
Вот! Новая проблема...Мышь не работает...Вот код:

Program LaFull;
Var int,log,mouse,tab,ping:image;
w,h,key,x,y:integer;
bulLogin,bulMouse,bulPing:boolean;

Procedure Pings;
begin
repeat
drawImage(int,0,0);
drawImage(ping,w-85,h-69);
repaint;
until false;
end;

Procedure mouseX;
begin
repeat
Key:=getKeyPressed;
if (Key=GA_LEFT) then X:=X-2;
if (Key=GA_RIGHT) then X:=X+2;
if (Key=GA_UP) then Y:=Y-2;
if (Key=GA_DOWN) then Y:=Y+2;
if x<0 then x:=0;
if y<0 then y:=0;
if y>getheight-5 then y:=getheight-5;
if x>getwidth-5 then x:=getwidth-5;
until false;
end;

Procedure login;
begin
repeat
drawImage(int,0,0);
drawImage(log,w-98,h-31);
drawImage(tab,getwidth-118,getheight-86);
drawImage(mouse,x,y);
repaint;
if (x>45) and (y>185) and (x<115) and (y<200) and (KeyToAction(getKeyPressed)=GA_FIRE) then bulPing:=true;
until false;
end;

Procedure data;
begin
repeat
x:=getwidth/2; y:=getheight/2;
w:=getwidth/2; h:=getheight/2;
bulMouse:=true;
bulLogin:=true;
bulPing:=false;

int:=LoadImage('/int.png');
log:=loadimage('/log.png');
mouse:=loadimage('/mouse.png');
tab:=loadimage('/tab.png');
ping:=LoadImage('/ping.png');

if (bulPing=true) then bulLogin:=false;
if (bulLogin=true) then login;
if (bulPing=true) then Pings;
if (bulMouse=true) then MouseX;

until false;
end;

begin
repeat
data;
until false;
end.



Обьясню: При запуске сразу должно отображаться всё из Login, мышь должна бегать из MouseX, при нажатии на координаты Login закрывается, Мышь (MouseX) работает дальше, а Pings запускается...Тоесть мышь работает всё время! Как это зделать, на основе этого кода желательно. Кто поможет, буду очень благодарен!

Igor 16.05.2010 18:01

Ответ: Помогите с boolean!!!
 
Мышь не работает, потому что после нажатия на координаты Login закрывается, прога доходит до
if (bulPing=true) then Pings;
где и остается в бесконечном цикле.
можно изменить на
Procedure Pings;
begin
repeat
drawImage(int,0,0);
drawImage(ping,w-85,h-69);
mouseX;
drawImage(mouse,x,y);
repaint;
until false;
end;

Procedure mouseX;
begin
Key:=getKeyPressed;
if (Key=GA_LEFT) then X:=X-2;
if (Key=GA_RIGHT) then X:=X+2;
if (Key=GA_UP) then Y:=Y-2;
if (Key=GA_DOWN) then Y:=Y+2;
if x<0 then x:=0;
if y<0 then y:=0;
if y>getheight-5 then y:=getheight-5;
if x>getwidth-5 then x:=getwidth-5;
end;

Igor 16.05.2010 18:18

Ответ: Помогите с boolean!!!
 
И ещё:
Procedure login;
begin
repeat
drawImage(int,0,0);
drawImage(log,w-98,h-31);
drawImage(tab,getwidth-118,getheight-86);
MouseX;
drawImage(mouse,x,y);
repaint;
if (x>45) and (y>185) and (x<115) and (y<200) and (KeyToAction(getKeyPressed)=GA_FIRE) then bulPing:=true;
until bulping=true;
end;

Вроде должна заработать.

А вообще, прога очень коряво написана.
Использование
repeat
...
until false;
приводит к бесконечному циклу без возможности выйти из него (единственный способ - halt, но это выход из программы), а у тебя таких циклов целых четыре!
Или например: процедура data каждый виток цикла загружает изображения заново,а смысл?!
В общем, еще учиться, учиться и учиться!

Rock2roll 16.05.2010 18:54

Ответ: Помогите с boolean!!!
 
Спасибо и на этом)) а ты не мог бы зделать чуть лучше код? Я просто как не смотрю, никак не делается =(

Igor 17.05.2010 18:11

Ответ: Помогите с boolean!!!
 
В само вычисление не вдавался, просто исправил недочеты с использованием функций.

Procedure data;
begin
x:=getwidth/2; y:=getheight/2;
w:=getwidth/2; h:=getheight/2;
bulPing:=false;

int:=LoadImage('/int.png');
log:=loadimage('/log.png');
mouse:=loadimage('/mouse.png');
tab:=loadimage('/tab.png');
ping:=LoadImage('/ping.png');

login;
Pings;

end;

Rock2roll 17.05.2010 20:09

Ответ: Помогите с boolean!!!
 
Нет, не работает всёровно =((

Нет, не работает всёровно =(( блина помогите

Igor 17.05.2010 20:19

Ответ: Помогите с boolean!!!
 
Как. Что именно не работает?
В смысле, что работает?

Выложи сам проект, а то у меня нет ни картинок ни возможности проверить.

Igor 17.05.2010 22:46

Ответ: Помогите с boolean!!!
 
процедура mouseX должна быть указана выше процедуры pings, потому что внутри pings есть вызов процедуры mouseX;
Держи трофей

Program LaFull;
Var int,log,mouse,tab,ping:image;
w,h,key,x,y:integer;
bulPing:boolean;

Procedure mouseX;
begin
Key:=getKeyPressed;
if (Key=GA_LEFT) then X:=X-2;
if (Key=GA_RIGHT) then X:=X+2;
if (Key=GA_UP) then Y:=Y-2;
if (Key=GA_DOWN) then Y:=Y+2;
if x<0 then x:=0;
if y<0 then y:=0;
if y>getheight-5 then y:=getheight-5;
if x>getwidth-5 then x:=getwidth-5;
drawimage(mouse,x,y);
end;

Procedure Pings;
begin
repeat
drawImage(int,0,0);
drawImage(ping,w-85,h-69);
mouseX;
repaint;
until false;
end;


Procedure login;
begin
repeat
drawImage(int,0,0);
drawImage(log,w-98,h-31);
drawImage(tab,getwidth-118,getheight-86);
MouseX;
repaint;
if (x>45) and (y>185) and (x<115) and (y<200) and (KeyToAction(getKeyPressed)=GA_FIRE) then bulPing:=true;
until bulping=true;
end;


Procedure data;
begin
x:=getwidth/2; y:=getheight/2;
w:=getwidth/2; h:=getheight/2;
bulPing:=false;

int:=LoadImage('/int.png');
log:=loadimage('/log.png');
mouse:=loadimage('/mouse.png');
tab:=loadimage('/tab.png');
ping:=LoadImage('/ping.png');

login;
Pings;

end;

begin
data;
end.


Если не будет работать, то ошибка в названиях изображений. (их у меня нет, проверит не могу)

Igor 21.05.2010 23:16

Ответ: Помогите с boolean!!!
 
Вложений: 1
Исправил


Часовой пояс GMT +4, время: 15:26.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot