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)

Rock2roll 14.05.2010 08:37

Помогите с boolean!!!
 
Прошу помочь! Я знаю что более нормальная программа работает при использовании булеанов. Тоесть
procedure Init;
begin
...
end;

procedure h;
begin
init:=true;
end;


В чём вопрос? У меня подобное компилит без проблем, но на эмуляторе и телефоне тупо вылетает. Я буду очень благодарен если мне обьяснят как осуществить:
1) Прорисовка картинки)
2) При нажатии на обьект (к примеру) иконку, init=true;
3) Init "живёт", пока не нажмут на что-то другое. Заранее спасибо.

Жека 14.05.2010 09:54

Ответ: Помогите с boolean!!!
 
Пиши на j2me, тогда подскажу.:p

cherepets 14.05.2010 10:02

Ответ: Помогите с boolean!!!
 
эм, компилиться???
инит - процедура, ты ей присваиваешь тру и оно компилится???
полный бред...

var init:boolean;

т.е. просто переменную создаем, процедуре нельзя ниче присвоить

Rock2roll 14.05.2010 22:08

Ответ: Помогите с boolean!!!
 
Нет, это не то. Вот код:

Program test;
Var intro, paint:boolean;

procedure intro;
begin
прорисовка картинки;
ожидание нажатия на координаты;
{при нажатии на нужные координаты paint=true};


procedure paint;
begin
прорисовка картинок;
delay(-1);
end;

Procedure data;
begin
intro:=true;
paint:=false;
end;

Procedure intro;
Begin
data;
end.


Что тут неправильно???

_Nox_ 14.05.2010 22:40

Ответ: Помогите с boolean!!!
 
delay(-1); Улыбнуло

jimon 14.05.2010 22:55

Ответ: Помогите с boolean!!!
 

хм, кто-то откроет для себя что у программ есть главный цикл ?

Rock2roll 14.05.2010 23:06

Ответ: Помогите с boolean!!!
 
люди...мне кто-то поможет???

_Nox_ 14.05.2010 23:07

Ответ: Помогите с boolean!!!
 
Во первых ты куда-то дел главный цикл + у тебя 2 раза повторяется процедура intro + количество end-ов не совпадает с количеством begin-ов + delay (-1) уже само собой должно насторожить, ты пытаешься сказать программе чтобы она ждала -1 секунду (вообщем эта строчка чоть и откомпилится но будет запорывать твою программу)

Rock2roll 14.05.2010 23:09

Ответ: Помогите с boolean!!!
 
но прога компилится...а в приложении белый экран..=(

_Nox_ 14.05.2010 23:10

Ответ: Помогите с boolean!!!
 
нет она не компилится

Rock2roll 14.05.2010 23:14

Ответ: Помогите с boolean!!!
 
Я 1 энд тут не дописал. Но у меня в исходнике есть. Что за цикл? И ещё...ты почем на свой сайт не заходишь?

_Nox_ 14.05.2010 23:17

Ответ: Помогите с boolean!!!
 
Захожу, смотрю кто что написал, ты первый кто что-то написал вообще

_Nox_ 14.05.2010 23:19

Ответ: Помогите с boolean!!!
 
Program test;
Var intro, paint:boolean;

procedure p_intro;
begin
прорисовка картинки;
ожидание нажатия на координаты;
{при нажатии на нужные координаты paint=true};
end;
procedure p_paint;
begin
прорисовка картинок;
delay(1000);
end;

Procedure data;
begin
intro:=true;
paint:=false;
end;

Begin
data;
end.

Rock2roll 14.05.2010 23:26

Ответ: Помогите с boolean!!!
 
Слушай! Огромное спасибо! Я тебя не забуду хД Я хочу тебе помочь с сайтом и прогой! Если есть время давай займемся серьёзно этим! Ещё рас спасибо!

_Nox_ 14.05.2010 23:44

Ответ: Помогите с boolean!!!
 
Пиши в личку

Rock2roll 14.05.2010 23:52

Ответ: Помогите с boolean!!!
 
а почему procedure p_paint;?

_Nox_ 14.05.2010 23:58

Ответ: Помогите с boolean!!!
 
ну просто есть переменная с названием intro и paint, потом сложно будет в этом разбираться, путаться будешь, или вообще не скомпилится

ViNT 15.05.2010 00:01

Ответ: Помогите с boolean!!!
 
Что-то не могу понять, что значит
Код:

Procedure data;
begin
intro:=true;//--------------?
paint:=false;//-------------?
end;

Что делают выделенные конструкции?
Да еще и при том, что переменная и процедура имеют одинаковые имена.

Rock2roll 15.05.2010 00:47

Ответ: Помогите с boolean!!!
 
я не знаю...помогли бы лучше...я вообще в булеанах не понимаю...может кто обьяснит толком? Прошу! Мне оч надо!

ViNT 15.05.2010 00:59

Ответ: Помогите с boolean!!!
 
Так я вот и спрашиваю - что нужно получить в итоге?

_Nox_ 15.05.2010 00:59

Ответ: Помогите с boolean!!!
 
В общем Boolean - логический тип данных который может принимать два значения true или false (да или нет). Используется много где. например если я хочу чтобы чтобы после какого-то действия чтото или не выполнялось или выполнялось

var
p:boolean;
a,b,i:integer;

p:=false;
for i:=1 to 100 do
begin
a:=a+i;
if a>150 then p:=true;
if p<> true then b:=b+a;
end;

Rock2roll 15.05.2010 08:22

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

Rock2roll 15.05.2010 08:51

Ответ: Помогите с boolean!!!
 
Что не так:

Program LaFull;
Var int:image;
bulLogin:boolean;

Procedure login;
begin
drawImage(int,0,0);

repaint;
delay(-1);
end;

Procedure data;
begin
bulLogin:=true;

if (bulLogin=true) then login;

int:=LoadImage('/int.png');
end;

begin
data;
end.

?????
Всё компилит, а экран белый!

Bruteo 15.05.2010 11:16

Ответ: Помогите с boolean!!!
 
Код:

if (bulLogin=true) then login;

int:=LoadImage('/int.png');

Местами поменять

Rock2roll 15.05.2010 11:33

Ответ: Помогите с boolean!!!
 
Bruteo!!!! Огромнейшее спасибо тебе!!!! Я так мучался из-за этого! Ты меня прямо спас!!! Я тебе очень благодарен! Огромнейшее спасибо!!!

Rock2roll 15.05.2010 12:46

Ответ: Помогите с boolean!!!
 
Program LaFull;
Var int,log,mouse,tab,ping:image;
w,h,key,x,y:integer;
bulLogin,bulMouse,bulPing:boolean;

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

Procedure mouseX;
begin
Key:=KeyToAction(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);
repaint;
end;

Procedure login;
begin
repeat
drawImage(int,0,0);
drawImage(log,w-98,h-31);
drawImage(tab,getwidth-118,getheight-86);

repaint;
if (x>45) and (y>185) and (x<115) and (y<200) and (KeyToAction(getKeyPressed)=GA_FIRE) then
bulPing:=true;
until (x>-100) and (y>-100) and (x<-50) and (y<-50) and (KeyToAction(getKeyPressed)=GA_FIRE);
end;

Procedure data;
begin
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 (bulMouse=true) then mouseX;
if (bulLogin=true) then login;
if (bulPing=true) then Pings;

end;

begin
data;
end.

Почему не двигается мышь?, та которая mouse? И как задержать процедуру без делай норм?

demon112 15.05.2010 19:24

Ответ: Помогите с boolean!!!
 
чёт я вообще недоганяю... зачем тебе там эти всякие булеаны? а чем тебе delay(100) не устраивает? можно ещё так:
var ms:integer;
begin
ms:=GetRelativeTimeMs;
...
код
...
while GetRelativeTimeMs-ms<100 do // задержка
begin
end;
end.

тут задержка будет ровно 100мс, т.к. тут считается время выполнения цикла.

Rock2roll 15.05.2010 20:57

Ответ: Помогите с boolean!!!
 
Нет, мне нужны именно булеаны. Как сделать чтобы перемещался курсор?? ПОМОГИТЕ!! Прошу

im_zorg 16.05.2010 11:10

Ответ: Помогите с boolean!!!
 
вот код:
Код:

Program NewProject1;
var
key,cursorx,cursory,a,ScrW,ScrH:integer;
cursor:image;
domause:boolean;

procedure cls;
begin
setColor(255,255,255);
fillRect(0,0,getWidth,getHeight);
end;

        procedure mause;
        begin
        cursorx:=5;
        cursory:=5;
        repeat
        key:=getkeyclicked;
        if key=KE_KEY4 then cursorx:=cursorx-11;
        if key=KE_KEY6 then cursorx:=cursorx+11;
        if key=KE_KEY2 then cursory:=cursory-11;
        if key=KE_KEY8 then cursory:=cursory+11;
        if cursorx>scrW then cursorx:=scrw;
        if cursory>scrH then cursory:=scrh;
        if cursorx<0 then cursorx:=0;
        if cursory<0 then cursory:=0;
        drawimage(cursor,cursorx,cursory);
        repaint;
        delay(50);
        cls;
        until false;
        end;
       
procedure data;
begin
repeat
a:=a+1;
drawtext(''+a,0,0);
repaint;
delay(100);
cls;
setcolor(0,0,0);
until a>=50;
domause:=true;
end;

Begin
        cursor:=loadimage('/icon.png');
        ScrW:= GetWidth;
        ScrH:= GetHeight;       
        data;
        if domause then mause;
End.

сначала идет процедура дата которая прибовляет к "а" по одному, когдп "а" будет равна 50 то идёт процедура mause

Rock2roll 16.05.2010 11:31

Ответ: Помогите с boolean!!!
 
Спасибо огромное

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, время: 01:23.

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