![]() |
Ответ: Помогите с boolean!!!
Незачто.
|
Ответ: Помогите с 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 запускается...Тоесть мышь работает всё время! Как это зделать, на основе этого кода желательно. Кто поможет, буду очень благодарен! |
Ответ: Помогите с 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; |
Ответ: Помогите с 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 каждый виток цикла загружает изображения заново,а смысл?! В общем, еще учиться, учиться и учиться! |
Ответ: Помогите с boolean!!!
Спасибо и на этом)) а ты не мог бы зделать чуть лучше код? Я просто как не смотрю, никак не делается =(
|
Ответ: Помогите с 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; |
Ответ: Помогите с boolean!!!
Нет, не работает всёровно =((
Нет, не работает всёровно =(( блина помогите |
Ответ: Помогите с boolean!!!
Как. Что именно не работает?
В смысле, что работает? Выложи сам проект, а то у меня нет ни картинок ни возможности проверить. |
Ответ: Помогите с 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. Если не будет работать, то ошибка в названиях изображений. (их у меня нет, проверит не могу) |
Ответ: Помогите с boolean!!!
Вложений: 1
Исправил
|
Часовой пояс GMT +4, время: 15:26. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot