|
Основной форум Сюда все проблемы связанные с программированием. |
07.05.2012, 09:11
|
#1
|
AnyKey`щик
Регистрация: 20.04.2012
Сообщений: 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.
Компилируется но при запуске программи белий екран.
|
(Offline)
|
|
07.05.2012, 12:09
|
#2
|
Разработчик
Регистрация: 07.04.2011
Адрес: Млечный путь, Земля, Европа, Беларусь, Могилев
Сообщений: 391
Написано 94 полезных сообщений (для 319 пользователей)
|
Ответ: Масив + цикл + картинка
Внимательно посмотри на это:
var Masiv:array [1..4, [1..4] of image;
.................
for m := 0 to 4 do begin
и подумай, в чём ошибка :В
__________________
Мечта программиста: запрограммировать процесс программирования.
Всё гениальное - просто.
http://passcall.ucoz.com
|
(Offline)
|
|
07.05.2012, 12:11
|
#3
|
Разработчик
Регистрация: 07.04.2011
Адрес: Млечный путь, Земля, Европа, Беларусь, Могилев
Сообщений: 391
Написано 94 полезных сообщений (для 319 пользователей)
|
Ответ: Масив + цикл + картинка
И таки да, не загружай в массив изображения, делай "ссылки" на них
__________________
Мечта программиста: запрограммировать процесс программирования.
Всё гениальное - просто.
http://passcall.ucoz.com
|
(Offline)
|
|
07.05.2012, 13:19
|
#4
|
AnyKey`щик
Регистрация: 20.04.2012
Сообщений: 11
Написано одно полезное сообщение
|
Ответ: Масив + цикл + картинка
PassCall а можно поподробние чо за силки?
|
(Offline)
|
|
07.05.2012, 14:06
|
#5
|
Разработчик
Регистрация: 07.04.2011
Адрес: Млечный путь, Земля, Европа, Беларусь, Могилев
Сообщений: 391
Написано 94 полезных сообщений (для 319 пользователей)
|
Ответ: Масив + цикл + картинка
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);
__________________
Мечта программиста: запрограммировать процесс программирования.
Всё гениальное - просто.
http://passcall.ucoz.com
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
07.05.2012, 14:49
|
#6
|
AnyKey`щик
Регистрация: 20.04.2012
Сообщений: 11
Написано одно полезное сообщение
|
Ответ: Масив + цикл + картинка
Пока получилось с 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 всеравно работает?
Последний раз редактировалось ViNT, 07.05.2012 в 23:27.
|
(Offline)
|
|
07.05.2012, 15:52
|
#7
|
Бывалый
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений (для 1,836 пользователей)
|
Ответ: Масив + цикл + картинка
Если изменилось только program X; то наверняка название программы совпало с названием какой-нибудь переменной.
|
(Offline)
|
|
07.05.2012, 19:09
|
#8
|
AnyKey`щик
Регистрация: 20.04.2012
Сообщений: 11
Написано одно полезное сообщение
|
Ответ: Масив + цикл + картинка
Программа с совпадением переной и именем программи - работает:
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;
|
Виводит просто белий фон екрана.
Незнаю точно но изменил имя програми полностю М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 не виводятся вообще?
Последний раз редактировалось ViNT, 07.05.2012 в 23:26.
|
(Offline)
|
|
07.05.2012, 22:53
|
#9
|
Бывалый
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений (для 1,836 пользователей)
|
Ответ: Масив + цикл + картинка
Цикл for подразумевает что переменная i будет сама увеличиваться, по умолчанию на единицу.
Строчка "i := i + 1;" в первом цикле не нужна.
Так же и в других циклах for в программе.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
08.05.2012, 08:30
|
#10
|
AnyKey`щик
Регистрация: 20.04.2012
Сообщений: 11
Написано одно полезное сообщение
|
Ответ: Масив + цикл + картинка
Спс FireOwl
|
(Offline)
|
|
08.05.2012, 13:46
|
#11
|
Нуждающийся
Регистрация: 03.01.2009
Сообщений: 93
Написано 8 полезных сообщений (для 15 пользователей)
|
Ответ: Масив + цикл + картинка
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);
|
(Offline)
|
|
09.05.2012, 06:51
|
#12
|
AnyKey`щик
Регистрация: 20.04.2012
Сообщений: 11
Написано одно полезное сообщение
|
Ответ: Масив + цикл + картинка
Ура все работает:
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.
|
|
(Offline)
|
|
09.05.2012, 07:02
|
#13
|
Бывалый
Регистрация: 16.09.2009
Адрес: Sun system
Сообщений: 831
Написано 442 полезных сообщений (для 1,836 пользователей)
|
Ответ: Масив + цикл + картинка
А все таки заполнение массива красивее сделать так:
for i:=1 to 4 do
for j:=1 to 4 do
masiv[i,j]:=j;
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 02:54.
|