Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для мобильных телефонов > MidletPascal

Ответ
 
Опции темы
Старый 02.11.2011, 09:38   #1
leonid
Оператор ЭВМ
 
Регистрация: 01.11.2011
Сообщений: 35
Написано 0 полезных сообщений
(для 0 пользователей)
Помогите исправить ошибку

Здрасте. Я в МП совсем салага. Хотел сделать что-то наподобие полосы загрузки, но она не продвигается. Почему?

program Load;

var
progress,i:Integer;

begin
SetColor(0,0,0);
DrawRect(10,10,100,10);
for i:=0 to 100 do

begin
progress:=1;
FillRect(12,12,progress,7);
repaint;
progress:=progress+1;
repaint;
end;

end.
(Offline)
 
Ответить с цитированием
Старый 02.11.2011, 14:51   #2
FireOwl
Бывалый
 
Аватар для FireOwl
 
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений
(для 1,836 пользователей)
Ответ: Помогите исправить ошибку

У тебя progress приравнивается к единице в самом начале цикла.
Вынеси наружу.
И repaint чем меньше вызываешь - тем лучше. В идеале - один раз в конце цикла. А тут он непонятно зачем два раза вызван.
__________________
N"Gasta! Kvata! Kvakis!
Ahkstas so novajxletero (oix jhemile) so Ranetauw.
(Offline)
 
Ответить с цитированием
Старый 02.11.2011, 15:06   #3
leonid
Оператор ЭВМ
 
Регистрация: 01.11.2011
Сообщений: 35
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Помогите исправить ошибку

Спасибо, "загрузка" идет
(Offline)
 
Ответить с цитированием
Старый 02.11.2011, 15:07   #4
FireOwl
Бывалый
 
Аватар для FireOwl
 
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений
(для 1,836 пользователей)
Ответ: Помогите исправить ошибку

Можно прибавлять по два (или больше).
__________________
N"Gasta! Kvata! Kvakis!
Ahkstas so novajxletero (oix jhemile) so Ranetauw.
(Offline)
 
Ответить с цитированием
Старый 02.11.2011, 16:05   #5
leonid
Оператор ЭВМ
 
Регистрация: 01.11.2011
Сообщений: 35
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Помогите исправить ошибку

Я знаю)
(Offline)
 
Ответить с цитированием
Старый 02.11.2011, 16:36   #6
leonid
Оператор ЭВМ
 
Регистрация: 01.11.2011
Сообщений: 35
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Помогите исправить ошибку

program loadcar;

var
progress,i,S:Integer;

begin
progress:=1;
S:=1;
SetColor(0,0,0);
FillRect(1,1,240,320);
SetColor(200,170,0);
DrawText('Loading',100,130);
DrawRect(70,155,100,10);
for i:=0 to 96 do

begin
FillRect(72,157,progress,7);
progress:=progress+1;
drawImage(loadImage('/car.png')S,200);
S:=S+2;
repaint;
delay(20);
end;

end.
Должна идти загрузка и ехать внизу машина, но при компиляции выскакивает "error, parameter list is too short"
Что на этот раз не так?
(Offline)
 
Ответить с цитированием
Старый 02.11.2011, 16:54   #7
DIMMON4IK
Знающий
 
Аватар для DIMMON4IK
 
Регистрация: 21.07.2009
Адрес: Украина
Сообщений: 219
Написано 44 полезных сообщений
(для 78 пользователей)
Ответ: Помогите исправить ошибку

drawImage(loadImage('/car.png')S,200); замени на drawImage(loadImage('/car.png'),S,200);
__________________


(Offline)
 
Ответить с цитированием
Старый 02.11.2011, 17:18   #8
leonid
Оператор ЭВМ
 
Регистрация: 01.11.2011
Сообщений: 35
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Помогите исправить ошибку

Вот блин. Из-за какой-то запятой) Спасибо.
Как сделать, чтобы она не оставляла след?
(Offline)
 
Ответить с цитированием
Старый 02.11.2011, 18:39   #9
Igor
Мастер
 
Аватар для Igor
 
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,217
Написано 436 полезных сообщений
(для 784 пользователей)
Ответ: Помогите исправить ошибку

заполнять экран белым чёрным цветом
Setcolor(0,0,0);
fillrect(getwidth,getheight);

А вообще лучше сделать
var car:image;
car:=loadImage('/car.png');
а потом рисовать
drawImage(car,S,200);
__________________
О¯О ¡¡¡ʁɔvʎнdǝʚǝdǝu dиW

Последний раз редактировалось Igor, 02.11.2011 в 20:32.
(Offline)
 
Ответить с цитированием
Старый 02.11.2011, 19:39   #10
barsunduk
ПроЭктировщик
 
Аватар для barsunduk
 
Регистрация: 09.05.2010
Адрес: рф ро шахты
Сообщений: 177
Написано 65 полезных сообщений
(для 263 пользователей)
Ответ: Помогите исправить ошибку



вот примерчик для любого разрешения

// progress sample for leonid
// (c) barsunduk
// 02.11.2011

program carload;

var
    
carimage;
    
iscrWscrHinteger;

// на входе состояние прогресса
// от 0 до scrW (ширина экрана)
procedure progress(xinteger);
var
    
whyinteger;
    
sstring;
begin
    w 
:= GetImageWidth(car);
    
:= GetImageHeight(car);
    
:= scrH h;
    
// очищается полоса с машинкой
    
SetColor(000);
    
FillRect(0yscrWh);
        
// это можно удалить
        // тут полоска зеленая рисуется с процентами
        
SetColor(01700);
        
FillRect(0yxh);
      
SetColor(240255240);
        
:= 'loading... ' + (100 scrW) + '% ';
        
DrawText(sGetStringWidth(s), GetStringHeight(s));
        
// для жирности
        
DrawText(sGetStringWidth(s), GetStringHeight(s));
    
// рисуется машинка    
    
DrawImage(carxy);
end;

begin
    car 
:= loadImage('/car.png');
    
scrW := GetWidth;
    
scrH := GetHeight;
    
SetColor(000);
    
FillRect(00scrWscrH);
    
// цикл с шагом в 2 пиксела
    
for := 0 to scrW do
    
begin
        progress
(2);
        
repaint;
        
delay(40);
    
end;
    
// очищаем память от ненужной картинки
    
car := loadImage('');
    
delay(2000);
end
в архиве тот же код
Вложения
Тип файла: zip carload.zip (12.6 Кб, 139 просмотров)
__________________
to be or not to be - it's not a question!
2b or not 2b = ff
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо barsunduk за это полезное сообщение:
leonid (03.11.2011), midlet_pascal (28.01.2012)
Старый 02.11.2011, 20:44   #11
barsunduk
ПроЭктировщик
 
Аватар для barsunduk
 
Регистрация: 09.05.2010
Адрес: рф ро шахты
Сообщений: 177
Написано 65 полезных сообщений
(для 263 пользователей)
Ответ: Помогите исправить ошибку



вариант со снятием огрызка скриншота вместо рисования одноцветных прямоугольников, затирающих нашу машинку и ее какашки в виде надписи "loading N%"

// progress sample for leonid
// (c) barsunduk
// 02.11.2011

program carload;

var
    
carbackimage;
    
iwwscrWscrHinteger;

// на входе состояние прогресса
// от 0 до scrW (ширина экрана)
procedure progress(xinteger);
var
    
whyinteger;
    
sstring;
begin
    w 
:= GetImageWidth(car);
    
:= GetImageHeight(car);
    
:= scrH h;
    
// восстанавливаем содержимое экрана из скриншота - стираем прогрессбар
    
DrawImage(back0y);
        
:= 'loading... ' + (100 scrW) + '% ';
      
SetColor(000);
        
DrawText(sGetStringWidth(s), GetStringHeight(s));
      
SetColor(240255240);
        
DrawText(sGetStringWidth(s) - 1GetStringHeight(s) - 1);
    
// рисуется машинка    
    
DrawImage(carxy);
end;

begin
    car 
:= loadImage('/car.png');
    
scrW := GetWidth;
    
scrH := GetHeight;
    
SetColor(000);
    
FillRect(00scrWscrH);
    
// тут рисуется всякое... ну там реклама, лого, заставка, хз
    // ...
    // например завалим экран мусором:
    
ww := scrW;
    if 
ww 255 then
            ww 
:= 255;
    for 
:= 0 to ww do
    
begin
        SetColor
(ww iww iww i);
        
DrawLine(i0iscrH);
    
end;
    
// берем кусок скриншота
    
back := ImageFromCanvas(0scrH GetImageHeight(car) * 2,  GetWidthGetImageHeight(car));
    
// цикл с шагом в 2 пиксела
    
for := 0 to scrW do
    
begin
        progress
(2);
        
repaint;
        
delay(40);
    
end;
    
// очищаем память от ненужных картинок
    
delay(2000);
end
__________________
to be or not to be - it's not a question!
2b or not 2b = ff

Последний раз редактировалось barsunduk, 09.11.2011 в 20:14.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
leonid (03.11.2011)
Старый 02.11.2011, 21:06   #12
baton4ik
Дэвелопер
 
Аватар для baton4ik
 
Регистрация: 21.11.2009
Адрес: Киев
Сообщений: 1,699
Написано 657 полезных сообщений
(для 1,962 пользователей)
Ответ: Помогите исправить ошибку

И зачем? Судя по его проблемам, он в твоей коде ничего не поймёт. Поощряешь бездумный копипаст.
leonid, почитай встроенную справку, и перед тем, как задавать вопросы, пользуйся поиском.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Reks888 (03.11.2011)
Старый 02.11.2011, 21:44   #13
barsunduk
ПроЭктировщик
 
Аватар для barsunduk
 
Регистрация: 09.05.2010
Адрес: рф ро шахты
Сообщений: 177
Написано 65 полезных сообщений
(для 263 пользователей)
Ответ: Помогите исправить ошибку

Сообщение от baton4ik Посмотреть сообщение
И зачем? Судя по его проблемам, он в твоей коде ничего не поймёт. Поощряешь бездумный копипаст.
leonid, почитай встроенную справку, и перед тем, как задавать вопросы, пользуйся поиском.
мне все же кажется, что на примерах с комментариями человеку легче будет разобраться. до некоторых вещей своим ходом доберешься нескоро, а заметив незнакомую функцию в чужом коде, обратишь на нее внимание. в следующий раз уже будешь знать, что искать, какой раздел хелпа штудировать в первую очередь.
а советы типа "читай справку" лично у меня убивают веру в сапиенсов.
__________________
to be or not to be - it's not a question!
2b or not 2b = ff
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
leonid (03.11.2011)
Старый 03.11.2011, 09:56   #14
leonid
Оператор ЭВМ
 
Регистрация: 01.11.2011
Сообщений: 35
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Помогите исправить ошибку

Большое спасибо, вроде разобрался.
(Offline)
 
Ответить с цитированием
Старый 03.11.2011, 13:28   #15
leonid
Оператор ЭВМ
 
Регистрация: 01.11.2011
Сообщений: 35
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Помогите исправить ошибку

program wormshow;

var
scrW,scrH,xworm1,yworm1,i:integer;
title,worm1,box,map,worm,wormInfo,wormEnemy:image;

begin
scrW:=getWidth;
scrH:=getHeight;
title:=loadImage('/title.png');
box:=loadImage('/box.png');
worm1:=loadImage('/worm1.png');
xworm1:=230;
yworm1:=237;
SetColor(100,190,255);
FillRect(0,0,scrW,scrH);
drawImage(title,25,10);
drawImage(box,20,240);
if xworm1=60 then
box:=loadImage('');

for i:=0 to 60 do

begin
drawImage(worm1,xworm1,yworm1);
xworm1:=xworm1-4;
repaint;
delay(100);
end;
title:=loadImage('');
box:=loadImage('');

begin
map:=loadImage('/map.png');
wormEnemy:=loadImage('/wormEnemy.png');
wormInfo:=loadImage('/wormInfo.png');
worm:=loadImage('/worm.png');
DrawImage(map,0,0);
DrawImage(wormEnemy,1,184);
DrawImage(worm,210,12);
DrawImage(wormInfo,210,1);
repaint;
delay(3000);
end;

end.
Когда цикл заканчивается, все зависает. Почему?
Вложения
Тип файла: rar bin.rar (145.7 Кб, 149 просмотров)
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +1, время: 14:56.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com