|
2D-программирование Вопросы, касающиеся двумерного программирования |
22.06.2012, 13:59
|
#1
|
ПроЭктировщик
Регистрация: 17.07.2009
Сообщений: 182
Написано 51 полезных сообщений (для 71 пользователей)
|
создание записи во втором типе через первый
Собственно идея такова , создать связанный список типов и при необходимости заменить в первом типе значение на значение второго типа.
вот код:
увы выдаёт ошибку
Подскажите как правильно сделать !
хочется избежать пробежки по каждому типу в отдельности
Type tsecond ;второй тип
Field f
End Type
Type tfirst ;первый тип
Field ab.tsecond ,d ; ab.tsecond - ссылка на второй тип
End Type
Graphics 800,600
SetBuffer BackBuffer()
q.tfirst= jac() ;создание записи в первом типе
;q\d= 4
q\ab.tsecond =dak() ;создание записи во втором типе через первый
;q\ab\f= 1
; присвоение значения первого типа второму
While Not KeyHit(1)
;If ab.tsecond <> Null Then
q\ab\f = q\d
;EndIf
For q.tfirst=Each tfirst
Text 10,20,"q\d - "+q\d;+" | "+q\y+" q\d# - "+q\d#+ " " ;вывод значений x и y
Text 10,30, "q\ab\f - "+q\ab\f;+" | ";+ q\ab\f ;вывод z#
Next
Flip
Wend
Delete Each tsecond
Delete Each tfirst
End
WaitKey()
Function jac.tfirst()
Local pff.tfirst= New tfirst
pff\d = 4
Return pff
End Function
Function dak.tsecond ()
Local pdd.tsecond = New tsecond
pdd\f= 1
Return pdd
End Function
|
(Offline)
|
|
22.06.2012, 14:26
|
#2
|
Дэвелопер
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений (для 886 пользователей)
|
Ответ: создание записи во втором типе через первый
Всё дело в переменной "q".
Ты перед главным циклом в неё присваиваешь новый объект, а затем в цикле вайл проходишь фором по списку, используя всё ту же q. При завершении for... each... в q содержится Null. Обрати внимание что на экране нарисаван текст, т.е. один раз главный цикл крутанулся.
|
(Offline)
|
|
22.06.2012, 14:31
|
#3
|
ПроЭктировщик
Регистрация: 17.07.2009
Сообщений: 182
Написано 51 полезных сообщений (для 71 пользователей)
|
Ответ: создание записи во втором типе через первый
Поменял на
For w.tfirst=Each tfirst
Text 10,20,"w\d - "+w\d;+" | "+w\y+" w\d# - "+w\d#+ " " ;вывод значений x и y
Text 10,30, "w\ab\f - "+w\ab\f;+" | ";+ w\ab\f ;вывод z#
Next
Заработало ...
Спасибо !
|
(Offline)
|
|
22.06.2012, 14:46
|
#4
|
ПроЭктировщик
Регистрация: 17.07.2009
Сообщений: 182
Написано 51 полезных сообщений (для 71 пользователей)
|
Ответ: создание записи во втором типе через первый
А как динамически присваивать ? например MouseX()
|
(Offline)
|
|
22.06.2012, 14:58
|
#5
|
ПроЭктировщик
Регистрация: 17.07.2009
Сообщений: 182
Написано 51 полезных сообщений (для 71 пользователей)
|
Ответ: создание записи во втором типе через первый
|
(Offline)
|
|
22.06.2012, 16:18
|
#6
|
ПроЭктировщик
Регистрация: 17.07.2009
Сообщений: 182
Написано 51 полезных сообщений (для 71 пользователей)
|
Ответ: создание записи во втором типе через первый
Вот разобрался ...
Код -ответ на свой вопрос :
Global mx , my ,ab.hero
Type hero ;второй тип
Field x ,y
End Type
Type map ;первый тип
Field ab.hero
Field x ,y ; ab.tsecond - ссылка на второй тип
End Type
Graphics 800,600
SetBuffer BackBuffer()
mx = MouseX() : my = MouseY()
q.map=CreateMap() ;создание записи в первом типе
;q\d= 4
q\ab.hero =CreateHero() ;создание записи во втором типе через первый
;q\ab\f= 1
While Not KeyHit(1)
Cls
;If KeyHit(3) Then
If KeyHit(2) Then q\ab\x= q\x : q\ab\y= q\y
For w.map=Each map
If MouseDown(1)Then
w\x =MouseX()
w\y =MouseY()
w\ab\x = w\x ; присвоение значения первого типа второму
w\ab\y = w\y ;
EndIf
If MouseDown(2)Then
w\ab\x = MouseX()
w\ab\y = MouseY()
EndIf
Text w\x,w\y,"q\x - "+w\x+" | w\y - "+w\y ;вывод значений x и y
Text w\ab\x,w\ab\y+10, "q\ab\x - "+w\ab\x+" | w\ab\y - "+ w\ab\y
Next
Flip
Wend
Delete Each hero
Delete Each map
End
WaitKey()
Function CreateMap.map()
Local pff.map= New map
pff\ab.hero = Null
pff\x = 400
pff\y = 200
Return pff
End Function
Function CreateHero.hero()
Local ab.hero= New hero
ab\x= Rnd( 100,600)
ab\y= Rnd( 100,400)
Return ab
End Function
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
22.06.2012, 18:52
|
#7
|
Дэвелопер
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений (для 886 пользователей)
|
Ответ: создание записи во втором типе через первый
Расскажи в чём тут "фишка"?
|
(Offline)
|
|
22.06.2012, 19:58
|
#8
|
ПроЭктировщик
Регистрация: 17.07.2009
Сообщений: 182
Написано 51 полезных сообщений (для 71 пользователей)
|
Ответ: создание записи во втором типе через первый
Смотри мою предыдущую тему про гексагоны.
хочется избавиться от многих прохождений по разным спискам
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 19:03.
|