|
Основной форум Сюда все проблемы связанные с программированием. |
16.05.2010, 12:04
|
#31
|
Знающий
Регистрация: 25.10.2009
Сообщений: 338
Написано 53 полезных сообщений (для 61 пользователей)
|
Ответ: Помогите с boolean!!!
Незачто.
|
(Offline)
|
|
16.05.2010, 13:12
|
#32
|
Знающий
Регистрация: 14.05.2010
Сообщений: 297
Написано 13 полезных сообщений (для 13 пользователей)
|
Ответ: Помогите с 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 запускается...Тоесть мышь работает всё время! Как это зделать, на основе этого кода желательно. Кто поможет, буду очень благодарен!
__________________
G502, GT S5230w user!
|
(Offline)
|
|
16.05.2010, 18:01
|
#33
|
Мастер
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,218
Написано 438 полезных сообщений (для 790 пользователей)
|
Ответ: Помогите с 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;
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
16.05.2010, 18:18
|
#34
|
Мастер
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,218
Написано 438 полезных сообщений (для 790 пользователей)
|
Ответ: Помогите с 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 каждый виток цикла загружает изображения заново,а смысл?!
В общем, еще учиться, учиться и учиться!
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
16.05.2010, 18:54
|
#35
|
Знающий
Регистрация: 14.05.2010
Сообщений: 297
Написано 13 полезных сообщений (для 13 пользователей)
|
Ответ: Помогите с boolean!!!
Спасибо и на этом)) а ты не мог бы зделать чуть лучше код? Я просто как не смотрю, никак не делается =(
__________________
G502, GT S5230w user!
|
(Offline)
|
|
17.05.2010, 18:11
|
#36
|
Мастер
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,218
Написано 438 полезных сообщений (для 790 пользователей)
|
Ответ: Помогите с 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;
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
17.05.2010, 20:09
|
#37
|
Знающий
Регистрация: 14.05.2010
Сообщений: 297
Написано 13 полезных сообщений (для 13 пользователей)
|
Ответ: Помогите с boolean!!!
Нет, не работает всёровно =((
Нет, не работает всёровно =(( блина помогите
__________________
G502, GT S5230w user!
|
(Offline)
|
|
17.05.2010, 20:19
|
#38
|
Мастер
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,218
Написано 438 полезных сообщений (для 790 пользователей)
|
Ответ: Помогите с boolean!!!
Как. Что именно не работает?
В смысле, что работает?
Выложи сам проект, а то у меня нет ни картинок ни возможности проверить.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
17.05.2010, 22:46
|
#39
|
Мастер
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,218
Написано 438 полезных сообщений (для 790 пользователей)
|
Ответ: Помогите с 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.
Если не будет работать, то ошибка в названиях изображений. (их у меня нет, проверит не могу)
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
21.05.2010, 23:16
|
#40
|
Мастер
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,218
Написано 438 полезных сообщений (для 790 пользователей)
|
Ответ: Помогите с boolean!!!
Исправил
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 11:29.
|