![]() |
Массивы
Кто нибуть помогире разобратся с массивами какие они сужествуют? Хочу сделать игру 2d логическую суть игры находить 3 или больше одинаковых фигурки тогда они исчезают например стоит 2 алмаза а третий на 1 клетку выше, перемищаем ее в низ происходит обмен фигурок и все 3 удаляються а сверху появляються другие и будто под действием гравитации смещаются ниже. Я думаю что 50 процентов пользователей форума играли в подобную игру. Может кто знает учебник с хорошым разеснением массивов когда поделитесь пожалуйста. Жду от всех помощи!
|
Ответ: Массивы
существуют двумерные массивы.
|
Ответ: Массивы
Код:
Arrays are created using the standard BASIC 'Dim' statement, and may be of any number of dimensions. For example: |
Ответ: Массивы
Вложений: 1
For a=1 To 8
For b=1 To 8 DrawImage img,-12+b*64,-24+a*64 Next Next Я таким способом заполнил карту, а как сделать хаотическое заполнение разными картинками и обращение к ним? Вот скрин что получилось |
Ответ: Массивы
Код:
dim el(8,8) |
Ответ: Массивы
ещё rnd() и select
|
Ответ: Массивы
Почему все заполняется одной картинкой?
И откуда в єтой строке El(i,j)=Rand(1,5) берется j |
Ответ: Массивы
тьфу. у тебя же a,b а не i,j соответственно.
|
Ответ: Массивы
Graphics 800,600,16,0
SetBuffer BackBuffer() SeedRnd MilliSecs() Font=LoadFont("",19,0,0,0) SetFont Font Dim el(8,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..(это я себе так думаю)? |
Ответ: Массивы
обращятса просто - например
dim shit(2) shit(1)=15 shit(2)=30 |
Ответ: Массивы
В массиве 64 элемента.
Как в коде назначить каждому элементу имя. --------------------------------------------- Массивами я никогда не пользовался и пока понятия не имею как с ними работать, просто 1-хочу научится с ними работать, 2- моей жене нравятся игры такого рода и эту игру я хочу сделать для неё. Пожалуйста помогите! |
Ответ: Массивы
Цитата:
Код:
dim mydim$(8,8) - строковыйКод:
type mytypeКод:
dim mydim.mytype(8,8) |
Ответ: Массивы
просвещайсо на здоровье: http://blitzetc.blitzmax.ru/index.ph...дартный_подход
|
Ответ: Массивы
Почему на сайте http://blitzetc.blitzmax.ru
пишет Создание В чем проблема? |
Ответ: Массивы
кодировка не та - Windows-1251
|
Ответ: Массивы
Вложений: 1
Я уже такого налепил. Со всех примеров натыкал. Кто хочет может посмотреть сбрасываю архив. Может поможет разобраться с этой задачей, а то я сам ну никак не могу.
|
Ответ: Массивы
если неможешь массивами - делай типами
|
Ответ: Массивы
да нафиг тут типы? тут же все элементарно... к тому же с типами ИМХО разобраться тем более сложнее...
|
Ответ: Массивы :SOS:
Дайте кто нибудь справочник по массивам я уже всю голову сломал,:wallbash: методом научного тыка делаю!
|
Ответ: Массивы
http://www.gaps.tstu.ru/win-1251/lab...1251/gl47.html
Отсюда и по порядку. Всё что там - подходит и для Блица |
Ответ: Массивы
Petrofan почитай ту ссыль, что я тебе дал. ам как раз именно то, что ты делаешь. там и вывод и обработка мыши и прочее...
|
Ответ: Массивы
Кто то может скопировать текст по этой ссылке http://blitzetc.blitzmax.ru/index.php/%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_% D1%80%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%BE%D1%80%D0 %B0_%D0%BA%D0%B0%D1%80%D1%82%2C_%D0%BD%D0%B5%D1%81 %D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D0%BD%D 1%8B%D0%B9_%D0%BF%D0%BE%D0%B4%D1%85%D0%BE%D0%B4 и вставить в какой не будь документ и выложить здесь.
|
Ответ: Массивы
Вложений: 1
Держи, просвящайся:
//я б посоветова осилить работу с массивами в "инкубаторе" (простые строки кода с минимальными выводами результатов и возможностью в рантайме менять параметры чтоб въехать чего и как), а не на каком-то проекте |
Ответ: Массивы
Спасибо за документ!
У меня постепенно все получаться но вот и появилась проблема все выходные за компом сидел и так и не понял как решить задачу: Каким образом в поле 8х8 вычислять есть ли одинаковые 3 или больше картинки (по вертикали и горизонтали) и если есть уничтожать а с верху добавить новые сдвигая все вниз массива? |
Ответ: Массивы
Кто то может помочь мне в решении задачи которая описана выше или нет?
Прошу отписаться? |
Ответ: Массивы
Petrofan
для каждого столбца или строки выполняем проход по всем его елементам и делаем что-то типа Код:
if type = lasttype thenсмещать елементы можно так, к примеру ищез елементы k (количество) на позиции i в столбце j, считаем что верх столбика это i = 0 тогда прокручиваем цикл Код:
for z:=0 to i-kидея в том что елементы падают только сверху, потому даже удалая 3 елемента в строке мы должны пройтись по трём столбцам где были эти елементы и сместить там елементы ps. меня радует что у тебя появляются конкретные проблемы которые тебе не понятны :) хотя стоит всё же потренироватся на таких чисто логических задачах по работе с матрицами |
Ответ: Массивы
Ты имеешь в виду типы или массивы?
Вот что я сделал (не нуждается в ресурсах) Код:
Graphics 800,600,32,0 |
Ответ: Массивы
Ну подскажите хотя бы суть как сделать перебор массива языком Blitz3d чтоб находились 3 или больше ячейки и удалялись с массива и записывались другие ячейки. Как это реализовать???
Помогите чтоб я от вас отстал. |
Ответ: Массивы
Перебираешь КАЖДУЮ ячейку двумерного массива.
Проверяешь соседние с ней ячейки (т.е. с индексами -1,0;1,0 и 0,-1;0,1) на совпадение с тем же значением ячейки. Если они все равны - то да, все три одинаковые. Как спустить всё вниз чтобы заполнить образовавшийся промежуток? В ту ячейку, в которой образовались одинаковые предметы (т.е. её нада удалить), кладёшь значение вышестоящей ячейки. В вышестоящую - значение ещё вышестоящей. Пока не доберёшься до самого верха. И так все три ячейки, которые ты хочешь удалить. Вопросы по каждому конкретному пункту пжлст, а не "как сделать всё сразу?" |
Ответ: Массивы
Как этой формулой обменять местами ячейки?
c=a a=b b=c if mousehit(1) then ... ... endif |
Ответ: Массивы
с = a(i1,j1)
a(i1,j1) = a(i2,j2) a(i2,j2) = c |
Ответ: Массивы
(i2, j2)- откуда это?
If MouseHit(1) Then sel=sel+1 If sel>2 Then sel=1 If sel=1 Then If sel=2 Then EndIf Вот я сделал условия как суда подставить? |
Ответ: Массивы
я хз откуда. тебе надо поменять значения в двух ячейках. массив двумерен. поетому нужно 4 числа. две пары координат.
|
Ответ: Массивы
Я уже по всякому пробовал не получаться. Назначить ячейке значение (допустим "1") могу, а поменять а(1,2)=1 на а(2,1)=2 и в итоге получить а(1,2)=2 на а(2,1)=1 не выходит.
|
Ответ: Массивы
c = a(1,2)
a(1,2) = a(2,1) a(2,1) = c это разве не катит? О_о |
Ответ: Массивы
Не катит. Нужно как то реализовать обмен ко всему массиву через map(i,j)
|
Ответ: Массивы
ну ты используй не 1,2 и 2,1 а какие то свои значения, i1,j1 и i2,j2
|
Ответ: Массивы
Цитата:
c = a(1,2) Так и для записи: a(2,1) = c Равно как и для одновременного цтения и записи: a(1,2) = a(2,1) Значит что-то ты криво вставил, потому что это по определению не работать не может. |
Ответ: Массивы
Цитата:
тебе что нада строчки стлобиками заменить ?? нада цикл for? там будут изменятся твои i, j !! |
Ответ: Массивы
Ну как вы не можете понять? есть массив 8х8 заполнен значениями от 1 до 4 (картинки). Требуется при первом щелчке мышки на одной из 64 ячеек куда то записать ее значение при втором щелчке на другую ячейку записать в нее эти значения а ее знач записать в ячейку первого щелчка вот и все.
|
Ответ: Массивы
Заведи ещё одну переменную отдельно от массива.
|
Ответ: Массивы
нужны указатели на кликнутую и кликаную ячейки массива, а также нужно знать какие в них хранятся картинки !!
|
Ответ: Массивы
Вложений: 1
Уважаемый Petrofan, сидя в скуке наткнулся на вашу проблему, потом немного поколдовав сделал, используя вашу графику некую игровую программу, не знаю это ли вы хотели получить в своей программе, но я сделал вот такую игру. Быть может код будет хоть както полезен.
Вложение 5456 |
Ответ: Массивы
Пацаны у кого есть FastImage (не демо) у меня через опредиленое время вызкакивает сообщение "trial"
|
Ответ: Массивы
HolyDel я ошибся все таки катит я взял кое что в примере Randomize плюс твою формулу. Обмен ячеек происходит так как било нужно спасибо всем огромное !!!
А как запретить перемещать ячейку дальше чем можно то есть только с соседними а не менять по всему полю? |
Ответ: Массивы
вот смотри...
ты меняеш ячейку 1 и 2. координаты i1,j1 у первой и i2,j2 у второй. тогда эти ячейки рядом если abs(i1-i2)<2 and abs(j1-j2)<2 |
Ответ: Массивы
Твоя формула у меня звучит так
c=map(sx,sy) map(sx,sy)=map(sx1,sy1) map(sx1,sy1) = c как к ней прикрепить запрет? |
Ответ: Массивы
уууу!!!
Код:
if abs(sx-sx1)<2 and abs(sy-sy1)<2 |
Ответ: Массивы
Вот для наглядности забабахал код без ресурсов
Код:
Graphics 800,600,32,0 |
Ответ: Массивы
Получаться что здесь перемещать можно вокруг стоящих, а надо вверх вниз влево вправо
|
Ответ: Массивы
Код:
Graphics 800,600,32,2 |
Ответ: Массивы
Код:
if (abs(sx-sx1)<2 and sy=sy1) Or (sx=sx1 and abs(sy-sy1)<2)//ЗЫ, ты выбрал какой-то неправильный метод освоения программирования, тебе нужна удочка, а ты все время клянчишь рыбу. |
Ответ: Массивы
Как сделать перебор массива и найти три или больше одинаковых значений и удалить их?
|
Ответ: Массивы
for i=1 to 100
if mass(i)=5 then mass(i)=0 next |
Ответ: Массивы
способ 1. Без дополнительного массива. примерно квадратичная сложность.
Код:
for i = 1 to nесли число значений элементов массива не слишком большое. например 0..10, то можно использовать спецмассив (массив временных значений) Способ 2. С дополнительным массивом. примерно линейная сложность. Код:
for i = 1 to cntvals |
Ответ: Массивы
Что получаться надо заводить новый массив (одномерный)
Или я что то не понял? |
Ответ: Массивы
см. предыдущий пост.
|
Ответ: Массивы
Откуда берется а() ? Объясни мне не образованному! С этими массивами я чета так притупел.
|
Ответ: Массивы
ну у тебя будет не a() а идентификатор_твоего_массива(). неужели я на самом деле так криво объясняю? да и вообще - забей на названия переменных. они не выжны. самое главное - попытайся понять алгоритм. он очень прост!
|
Ответ: Массивы
Я подставлял Map_Grid(i) вилазит ошибка типа недостаточно параметров
|
Ответ: Массивы
скорее всего у тебя двумерный массив. в таком случае можно воспользоваться проекцией на одномерный. как то так:
size_x - размер поля по горизонтали size_y - размер поля по вертикали a - массив Код:
n = size_x * size_y |
Ответ: Массивы
епть... как все запущенно-то... *многадумаю* надо будет написать туториал по массивам чтоли... да и вообще по основным алгоритмам...
|
Ответ: Массивы
и по BlitzMax напиши, а то я там много чего недопонял.
хелп там не изобилует примерами. А примеры хелпом. |
Ответ: Массивы
Все равно не выходит сделать удаление ячеек можно как нибудь с комментариями для того чтоб хотя бы понять что там происходит?
|
| Часовой пояс GMT +4, время: 14:50. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Перевод: zCarot