forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   Масив + цикл + картинка (http://forum.boolean.name/showthread.php?t=16758)

OSW 07.05.2012 09:11

Масив + цикл + картинка
 
Не могу разобратся в чем ошибка, код:

Код:

program MMaiv;
var Masiv:array [1..4, 1..4] of image;
A, B : image;
x, y, n, m : integer;

begin
x:=0; y:=0;

A:=loadimage('/land0.png');
B:=loadimage('/land1.png');

masiv[1,1] := A;
masiv[1,2] := B;
masiv[1,3] := B;
masiv[1,4] := A;

masiv[2,1] := B;
masiv[2,2] := A;
masiv[2,3] := A;
masiv[2,4] := B;

masiv[3,1] := B;
masiv[3,2] := A;
masiv[3,3] := A;
masiv[3,4] := B;

masiv[4,1] := A;
masiv[4,2] := B;
masiv[4,3] := B;
masiv[4,4] := A;

for n := 1 to 4 do begin

for m := 0 to 4 do begin
drawimage(masiv[n,m],x,y);
  repaint;
        delay(30);
x := x+30;
end;
x:=0;
y := y+30

end;

drawimage(masiv[1,1],0,0);
 
  repaint;
        delay(3000);

end.

Компилируется но при запуске программи белий екран.:"(

PassCall 07.05.2012 12:09

Ответ: Масив + цикл + картинка
 
Внимательно посмотри на это:
Код:

var Masiv:array [1..4, [1..4] of image;
.................
for m := 0 to 4 do begin

и подумай, в чём ошибка :В

PassCall 07.05.2012 12:11

Ответ: Масив + цикл + картинка
 
И таки да, не загружай в массив изображения, делай "ссылки" на них

OSW 07.05.2012 13:19

Ответ: Масив + цикл + картинка
 
PassCall а можно поподробние чо за силки?

PassCall 07.05.2012 14:06

Ответ: Масив + цикл + картинка
 
Код:

var
Masiv:array [1..4, 1..4] of integer;
img:array [1..2] of image;
........................................
img[1]:=loadimage('/land0.png');
img[2]:=loadimage('/land1.png');

masiv[1,1] := 1;
masiv[1,2] := 2;
masiv[1,3] := 2;
masiv[1,4] := 1;

for n := 1 to 4 do begin
for m := 1 to 4 do begin
drawimage (img[masiv[n,m]],x,y);

repaint;
delay(30);


OSW 07.05.2012 14:49

Ответ: Масив + цикл + картинка
 
Пока получилось с 1-м масивом:

Код:

program Masiv;

var Masiv:array [1..4] of integer;
img:array [1..2] of image;
n, m, x, y, k : integer;

begin
x:=0; y:=0;

img[1]:=loadimage('/land0.png');
img[2]:=loadimage('/land1.png');

masiv[1] := 1;
masiv[2] := 2;
masiv[3] := 2;
masiv[4] := 1;

for k := 1 to 4 do begin
for n := 1 to 4 do begin
//for m := 1 to 4 do begin
drawimage (img[masiv[n]],x,y);
x := x+30;
end;
x:= 0;
y:= y+30;
end;
repaint;
delay(30);

end.

Чето я накрутил непонятное:

Цитата:

program Masiv;

var Masiv:array [1..4, 1..4] of integer;
img:array [1..2] of image;
n, m, x, y, k, i, ii, nx: integer;

begin
x:=0; y:=0;
nx:=1;

img[1]:=loadimage('/land0.png');
img[2]:=loadimage('/land1.png');

for i := 1 to 4 do begin
masiv[i,1] := 1;
masiv[i,2] := 2;
masiv[i,3] := 2;
masiv[i,4] := 1;
i:= i + 1;
end;

for ii := 1 to 4 do begin
i:= ii;
for n := 1 to 4 do begin
drawimage (img[masiv[i,n]],x,y);
n:= n+1;
x := x+30;
end;
ii:= ii+1;

x:= 0;
y:= y+30;
end;
repaint;
delay(30);

end.
:"( Уже хоть виводит 4 строчкии 2 столбца (первий land0.png' а втарой land1.png')

Перекинул код с program Masiv в program MMaiv. Грубо говоря изменилось только Masiv --> MMaiv и программа не работает. Опять белий екран. А в program Masiv всеравно работает?

FireOwl 07.05.2012 15:52

Ответ: Масив + цикл + картинка
 
Если изменилось только program X; то наверняка название программы совпало с названием какой-нибудь переменной.

OSW 07.05.2012 19:09

Ответ: Масив + цикл + картинка
 
Программа с совпадением переной и именем программи - работает:

Цитата:

program Masiv;

var Masiv:array [1..4, 1..4] of integer;
img:array [1..2] of image;
n, m, x, y, k, i, ii, nx: integer;
А программа что не совпадает - и не работает:

Цитата:

program MMaiv;
var Masiv:array [1..4, 1..4] of integer;
img:array [1..2] of image;
n, m, x, y, k, i, ii, nx: integer;
Виводит просто белий фон екрана.:dontknow:

Незнаю точно но изменил имя програми полностю МMaiv на Maiv и все заработало. Че нельзя использовать в имени програми и проекта две больших букви?

Я не знаю в чем ошибка, помогите пожалуста:

Цитата:

program Maiv;
var
Masiv: array[1..4, 1..4] of integer;
img: array[1..4] of image;
n, m, x, y, k, i, ii, nx: integer;

begin
x := 0;
y := 0;
nx := 1;

img[1] := loadimage('/land0.png');
img[2] := loadimage('/land1.png');
img[3] := loadimage('/land2.png');
img[4] := loadimage('/land3.png');

for i := 1 to 4 do
begin
masiv[i, 1] := 1;
masiv[i, 2] := 2;
masiv[i, 3] := 3;
masiv[i, 4] := 4;
i := i + 1;
end;

for ii := 1 to 4 do
begin
i := ii;
for n := 1 to 4 do
begin
drawimage(img[masiv[i, n]], x, y);
repaint;
delay(3000);
n := n + 1;
x := x + 30;
end;
ii := ii + 1;

x := 0;
y := y + 30;
end;
Виводит замесь ожидаемих катинок с номерами:

1234
1234
1234
1234

вот такие:

13
13

Почему столбец 2, 4 и строки 3, 4 не виводятся вообще?

FireOwl 07.05.2012 22:53

Ответ: Масив + цикл + картинка
 
Цикл for подразумевает что переменная i будет сама увеличиваться, по умолчанию на единицу.
Строчка "i := i + 1;" в первом цикле не нужна.
Так же и в других циклах for в программе.

OSW 08.05.2012 08:30

Ответ: Масив + цикл + картинка
 
Спс FireOwl

Serg153 08.05.2012 13:46

Ответ: Масив + цикл + картинка
 
2 OSW - маленький совет - тут уже писали - насчёт массивов = Обьявляй их размерность начиная с 0...4
иначе компилятор сам начнёт нумеровать и массивы и ссылки на них с 0, добавляя в указателях операцию -1, минус 1 :)
типа так
Код:

  img: array[1..4] of image;
...
for(m_nI = 1; 4 >= m_nI; m_nI++)                                                                             
  m_GcGraphics._drawImagecImageIIIV(
    m_imgar_cImage[m_masivar_ar_I[m_iiI - 1][m_nI - 1] - 1], m_xI, m_yI, 20);

а если бы с 0 начал то код был бы поменьше и выполнялся быстрее:

Код:

img: array[0..4] of image;
...
for(m_nI = 1; 4 >= m_nI; m_nI++) {
  m_GcGraphics._drawImagecImageIIIV(
      m_imgar_cImage[m_masivar_ar_I[m_iiI][m_nI]], m_xI, m_yI, 20);


OSW 09.05.2012 06:51

Ответ: Масив + цикл + картинка
 
Ура все работает:

Цитата:

program Maiv;
var
Masiv: array[1..4, 1..4] of integer;
img: array[1..4] of image;
n, m, m1, m2, m3, m4, x, y, k, i, ii, nx: integer;

begin
x := 0;
y := 0;
nx := 1;

img[1] := loadimage('/land0.png');
img[2] := loadimage('/land1.png');
img[3] := loadimage('/land2.png');
img[4] := loadimage('/land3.png');


masiv[1, 1] := 1;
masiv[1, 2] := 2;
masiv[1, 3] := 3;
masiv[1, 4] := 4;

masiv[2, 1] := 1;
masiv[2, 2] := 2;
masiv[2, 3] := 3;
masiv[2, 4] := 4;

masiv[3, 1] := 1;
masiv[3, 2] := 2;
masiv[3, 3] := 3;
masiv[3, 4] := 4;

masiv[4, 1] := 1;
masiv[4, 2] := 2;
masiv[4, 3] := 3;
masiv[4, 4] := 4;


for ii := 1 to 4 do
begin
i := ii;
for n := 1 to 4 do
begin
drawimage(img[masiv[i, n]], x, y);
repaint;
delay(3000);

x := x + 30;
end;


x := 0;
y := y + 30;
end;

end.

FireOwl 09.05.2012 07:02

Ответ: Масив + цикл + картинка
 
А все таки заполнение массива красивее сделать так:
Код:

for i:=1 to 4 do
    for j:=1 to 4 do
        masiv[i,j]:=j;



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

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