forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   MidletPascal (http://forum.boolean.name/forumdisplay.php?f=46)
-   -   Помогите исправить ошибку (http://forum.boolean.name/showthread.php?t=15748)

leonid 09.11.2011 18:22

Ответ: Помогите исправить ошибку
 
Да, неплохо бы готовый пример, если не затруднит.

PassCall 09.11.2011 18:24

Ответ: Помогите исправить ошибку
 
Вложений: 1
Минутку...

Вот. Пользуйся.
Вложение 15408

leonid 09.11.2011 19:11

Ответ: Помогите исправить ошибку
 
Цитата:

program lol;

var
i,j,x,y,key,:integer;
S:string;
res:resource;
land_image:array [1..2] of image;
land_array:array [1..30,1..30] of integer;
pers:image;

begin

land_image[1]:=loadimage('/land1.png');
land_image[2]:=loadimage('/land2.png');
for i:=1 to 30 do
for j:=1 to 30 do
land_array [i,j]:=1;
res:=openresource('/map.txt');
for i:=1 to 10 do

begin
S:=readline (res);
land_array[j,i]:=stringtointeger(GetChar(S,j-1));
end;
closeresource (res);
REPEAT

setcolor(255,255,255);
fillrect(0,0,240,320);

for i:=1 to 11 do
for j:=1 to 9 do
begin
drawimage (land_image[land_array[j+,i+]],(j-1+)*30-,(i-1)*30);
end;

drawimage (pers,50,40);
key:=GetKeyPressed;

if keytoaction(key)=GA_UP then
begin
y:=y-1;
end;

if keytoaction(key)=GA_DOWN then
begin
y:=y+1;
end;

if keytoaction(key)=GA_LEFT then
begin
x:=x-1;
end;

if keytoaction(key)=GA_RIGHT then
begin
x:=x+1;
end;

repaint;
delay (20);

UNTIL (GetKeyPressed=KE_KEY0);

end.
Немного упростил под себя. Но при компиляции тычет в строку с "var" и на ту, где рисуется белый прямоугольник на весь экран.

PassCall 09.11.2011 20:24

Ответ: Помогите исправить ошибку
 
"i,j,x,y,key,:integer;" убери лишнюю запятую - она вводит МидлетПаскаль в заблуждение

"drawimage (land_image[land_array[j+,i+]],(j-1+)*30-,(i-1)*30);" лишние минусы и плюсы. нет такого числа как "5+" или "3-" =)

leonid 09.11.2011 20:34

Ответ: Помогите исправить ошибку
 
Ах да, невнимательность =)
Но почему-то всё равно белый экран...

PassCall 09.11.2011 20:35

Ответ: Помогите исправить ошибку
 
А ты персонажа в память загрузил?

leonid 09.11.2011 20:36

Ответ: Помогите исправить ошибку
 
Конечно.

leonid 09.11.2011 20:37

Ответ: Помогите исправить ошибку
 
А, и правда не загрузил. Я думал, ты про ресурс.

leonid 09.11.2011 20:40

Ответ: Помогите исправить ошибку
 
Да даже с персом виснет

PassCall 09.11.2011 20:45

Ответ: Помогите исправить ошибку
 
Регистр соблюден?

"Pers.png" и "pers.png" это два разных файла

И вставь вот это

for i:=1 to 30 do
for j:=1 to 30 do
land_array[i,j]:=1;

перед S:=readline (res);

Так как по умолчанию значения этого массива ноль, то движок пытается вывести картинку ландшафта под номером ноль. А у нас есть только 1 и 2.

leonid 09.11.2011 20:47

Ответ: Помогите исправить ошибку
 
Так точно, соблюден.

PassCall 09.11.2011 20:54

Ответ: Помогите исправить ошибку
 
а код вставил?

секунду, а зачем в коде вот это (выделено жирным)?

program lol;

var
i,j,x,y,key,:integer;
S:string;
res:resource;
land_image:array [1..2] of image;
land_array:array [1..30,1..30] of integer;
pers:image;

begin

land_image[1]:=loadimage('/land1.png');
land_image[2]:=loadimage('/land2.png');
for i:=1 to 30 do
for j:=1 to 30 do
land_array [i,j]:=1;
res:=openresource('/map.txt');
for i:=1 to 10 do

begin
S:=readline (res);
land_array[j,i]:=stringtointeger(GetChar(S,j-1));
end;
closeresource (res);
REPEAT

setcolor(255,255,255);
fillrect(0,0,240,320);

for i:=1 to 11 do
for j:=1 to 9 do
begin
drawimage (land_image[land_array[j+,i+]],(j-1+)*30-,(i-1)*30);
end;

drawimage (pers,50,40);
key:=GetKeyPressed;

if keytoaction(key)=GA_UP then
begin
y:=y-1;
end;

if keytoaction(key)=GA_DOWN then
begin
y:=y+1;
end;

if keytoaction(key)=GA_LEFT then
begin
x:=x-1;
end;

if keytoaction(key)=GA_RIGHT then
begin
x:=x+1;
end;

repaint;
delay (20);

UNTIL (GetKeyPressed=KE_KEY0);

end.

PassCall 09.11.2011 20:59

Ответ: Помогите исправить ошибку
 
Чтото ты намудрил.
Должно быть так

for i:=1 to 10 do
begin
S:=readline (res);
for j:=1 to 10 do
land_array[j,i]:=stringtointeger(GetChar(S,j-1));
end;
closeresource (res);

То, что красным выделено, ты пропустил

leonid 09.11.2011 21:12

Ответ: Помогите исправить ошибку
 
Исправил, но всё равно белый экран =(

PassCall 09.11.2011 21:15

Ответ: Помогите исправить ошибку
 
Скинь короче мне свой проект, счас посмотрю, в чем дело


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

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