|
2D-программирование Вопросы, касающиеся двумерного программирования |
18.02.2009, 16:42
|
#1
|
ПроЭктировщик
Регистрация: 26.08.2008
Сообщений: 149
Написано 10 полезных сообщений (для 18 пользователей)
|
Массивы
Кто нибуть помогире разобратся с массивами какие они сужествуют? Хочу сделать игру 2d логическую суть игры находить 3 или больше одинаковых фигурки тогда они исчезают например стоит 2 алмаза а третий на 1 клетку выше, перемищаем ее в низ происходит обмен фигурок и все 3 удаляються а сверху появляються другие и будто под действием гравитации смещаются ниже. Я думаю что 50 процентов пользователей форума играли в подобную игру. Может кто знает учебник с хорошым разеснением массивов когда поделитесь пожалуйста. Жду от всех помощи!
|
(Offline)
|
|
18.02.2009, 16:52
|
#2
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Массивы
существуют двумерные массивы.
|
(Offline)
|
|
18.02.2009, 17:20
|
#3
|
злобный флудер
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений (для 1,476 пользователей)
|
Ответ: Массивы
Arrays are created using the standard BASIC 'Dim' statement, and may be of any number of dimensions. For example:
Dim arr(10)
Creates a one dimensional array called 'arr' with 11 elements numbered 0...10.
Arrays may be of any basic type, or a custom type.
The type of an array is specified using a type tag. For example:
Dim Deltas#(100)
Creates an array called 'Deltas' of 101 floating point elements.
If the type tag is omitted, the array defaults to an integer array.
An array may be dimensioned at more than one point in a program, each time an array is dimensioned, it's previous contents are discarded. Arrays may be dimensioned inside functions, but a corresponding 'Dim' statement of the same array must also appear somewhere in the main program. For example:
Dim test(0,0)
Function Setup( x,y )
Dim test(x,y)
End Function
|
(Offline)
|
|
18.02.2009, 18:06
|
#4
|
ПроЭктировщик
Регистрация: 26.08.2008
Сообщений: 149
Написано 10 полезных сообщений (для 18 пользователей)
|
Ответ: Массивы
For a=1 To 8
For b=1 To 8
DrawImage img,-12+b*64,-24+a*64
Next
Next
Я таким способом заполнил карту, а как сделать хаотическое заполнение разными картинками и обращение к ним?
Вот скрин что получилось
|
(Offline)
|
|
18.02.2009, 18:24
|
#5
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Массивы
dim el(8,8)
dim img(4)
for i = 1 to 4
img(i)=loadimage(i+".bmp")
next
For a=1 To 8
For b=1 To 8
El(i,j)=rand(1,4);
Next
Next
For a=1 To 8
For b=1 To 8
DrawImage img(El(i,j)),-12+b*64,-24+a*64
Next
Next
|
(Offline)
|
|
18.02.2009, 18:33
|
#6
|
злобный флудер
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений (для 1,476 пользователей)
|
Ответ: Массивы
ещё rnd() и select
|
(Offline)
|
|
18.02.2009, 18:58
|
#7
|
ПроЭктировщик
Регистрация: 26.08.2008
Сообщений: 149
Написано 10 полезных сообщений (для 18 пользователей)
|
Ответ: Массивы
Почему все заполняется одной картинкой?
И откуда в єтой строке El(i,j)=Rand(1,5) берется j
|
(Offline)
|
|
18.02.2009, 19:03
|
#8
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Массивы
тьфу. у тебя же a,b а не i,j соответственно.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
19.02.2009, 11:44
|
#9
|
ПроЭктировщик
Регистрация: 26.08.2008
Сообщений: 149
Написано 10 полезных сообщений (для 18 пользователей)
|
Ответ: Массивы
Graphics 800,600,16,0
SetBuffer BackBuffer()
SeedRnd MilliSecs()
Font=LoadFont("",19,0,0,0)
SetFont Font
Dim el(8,
Dim img(5)
While KeyDown(1)=0
Cls
For a=1 To 8
For b=1 To 8
;Text -12+b*65,-24+a*65,a
Text 20+b*65,-44+a*65,b
Next
Next
Flip
Wend
End
Вот я попробовал сделать текстом чтобы увидеть что происходит если розкоментировать текст который выводит переменую а и закоментировать текст ... b то видно как заполняется масив.
Вопрос:
Как теперь обращатся к этим ячейкам по имене или числу? Откуда узнать курсору где какая ячейка типа x1y1, x2y1,x3y1..(это я себе так думаю)?
|
(Offline)
|
|
19.02.2009, 15:43
|
#10
|
злобный флудер
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений (для 1,476 пользователей)
|
Ответ: Массивы
обращятса просто - например
dim shit(2)
shit(1)=15
shit(2)=30
|
(Offline)
|
|
19.02.2009, 16:00
|
#11
|
ПроЭктировщик
Регистрация: 26.08.2008
Сообщений: 149
Написано 10 полезных сообщений (для 18 пользователей)
|
Ответ: Массивы
В массиве 64 элемента.
Как в коде назначить каждому элементу имя.
---------------------------------------------
Массивами я никогда не пользовался и пока понятия не имею как с ними работать, просто 1-хочу научится с ними работать, 2- моей жене нравятся игры такого рода и эту игру я хочу сделать для неё. Пожалуйста помогите!
|
(Offline)
|
|
19.02.2009, 16:38
|
#12
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Ответ: Массивы
В массиве 64 элемента.
Как в коде назначить каждому элементу имя.
|
сам елемент массива может быть у тебя именем !! если неуказовать тип масива то он по умолчанию он целочисленый !!
dim mydim$(8,8) - строковый
dim mydim#(8,8) - с запятой
For a=1 To 8
For b=1 To 8
mydim(a,b)=str("mycellname"+(a+b)); здесь записуем имя ячейки которая есть ее номером
Next
Next
если нада что бы было и имя и еще номер или сама картинка для каждого елемента масива, то создаем свой тип даных:
type mytype
field cellname$
field cellnuber%
;.... заносим все что нужно - в елементи списка
end type
теперь создаем масив типа mytype:
и заполняем !!
|
(Offline)
|
|
19.02.2009, 17:07
|
#13
|
Бывалый
Регистрация: 12.10.2006
Сообщений: 737
Написано 131 полезных сообщений (для 452 пользователей)
|
Ответ: Массивы
|
(Offline)
|
|
19.02.2009, 17:27
|
#14
|
ПроЭктировщик
Регистрация: 26.08.2008
Сообщений: 149
Написано 10 полезных сообщений (для 18 пользователей)
|
Ответ: Массивы
Почему на сайте http://blitzetc.blitzmax.ru
пишет Создание В чем проблема?
|
(Offline)
|
|
19.02.2009, 19:13
|
#15
|
злобный флудер
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений (для 1,476 пользователей)
|
Ответ: Массивы
кодировка не та - Windows-1251
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 10:50.
|