Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 2D-программирование

2D-программирование Вопросы, касающиеся двумерного программирования

Ответ
 
Опции темы
Старый 14.10.2010, 16:15   #16
volgeras
AnyKey`щик
 
Регистрация: 10.09.2010
Сообщений: 17
Написано 0 полезных сообщений
(для 0 пользователей)
Сообщение Ответ: Помогите с Type

Вот возник еще вопрос о типе. Есть такой тип:
Type enemy_ships
	Field id
	Field alpha#
	Field rotate%
	Field long$
	Field x1%,z1%
	Field x2%,z2%
	Field x3%,z3%
	Field x4%,z4%
End Type
И такой код:
While Not Eof(stream_in)
s_l = ReadLine(stream_in)
s_x = ReadLine(stream_in)
s_z = ReadLine(stream_in)
s_r = ReadLine(stream_in)
sh.enemy_ships = New enemy_ships
sh\alpha = "1"
sh\rotate = s_r
sh\long = s_l
If s_l = 1 Then
    sh\id = LoadMesh("3d_1.3ds")
    ScaleEntity sh\id,0.35,0.3,0.2
    EntityAlpha sh\id,1
    sh\x1 = s_x
    sh\z1 = s_z
    sh\x2 = 0
    sh\z2 = 0
    sh\x3 = 0
    sh\z3 = 0
    sh\x4 = 0
    sh\z4 = 0
;Тут еще несколько похожих проверок
EndIf
Wend
Когда пытаюсь запустить программу, то на строчке, выделенной красным, она отказывается запускаться, говорит: "Variable type mismatch". Не подскажите в чем возможна проблема? Я уже много вариантов перепробовал, но все равно та же ошибка.
(Offline)
 
Ответить с цитированием
Старый 14.10.2010, 16:43   #17
DStalk
Разработчик
 
Аватар для DStalk
 
Регистрация: 27.06.2009
Адрес: Рязань-Москва
Сообщений: 471
Написано 401 полезных сообщений
(для 1,072 пользователей)
Ответ: Помогите с Type

По моему ты напутал при объявлении типа. Символ # - float(с плавющей точкой), % - boolean(true/false), $ - string(текст).
__________________
galaxies.su | dstalk.ru
(Offline)
 
Ответить с цитированием
Старый 14.10.2010, 17:00   #18
volgeras
AnyKey`щик
 
Регистрация: 10.09.2010
Сообщений: 17
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Помогите с Type

Да я там менял, тоже непомогло...
(Offline)
 
Ответить с цитированием
Старый 14.10.2010, 20:02   #19
baton4ik
Дэвелопер
 
Аватар для baton4ik
 
Регистрация: 21.11.2009
Адрес: Киев
Сообщений: 1,699
Написано 657 полезных сообщений
(для 1,962 пользователей)
Ответ: Помогите с Type

Возможно ты раньше юзал другой тип как sh. Если да, то обзови этот, к примеру, she:

she.enemy_ships = New enemy_ships
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
volgeras (15.10.2010)
Старый 14.06.2014, 18:43   #20
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,018
Написано 2,312 полезных сообщений
(для 5,349 пользователей)
Ответ: Помогите с Type

Вопрос как листать тайп?
Мне нужно, доходя до конца списка автоматически перемещаться в начало и наоборот. Максимум получилось листать назад.

Здесь у меня уже бред, хотя писал вроде логично:
If xKeyHit(44) = True Then ;назад "z"

        
Sobj Before Sobj
        
If Handle(Sobj) <= 0 Then Sobj.StaticObject Last StaticObject

End 
If

If 
xKeyHit(45) = True Then ;вперёд "x"

        
Sobj After Sobj
        
If Handle(Sobj) > numbstatic Then Sobj.StaticObject First StaticObject

End 
If 
numbstatic это количество объектов в списке

Буду рад если у кого-нибудь есть собственный код реализации, для примера.
(Offline)
 
Ответить с цитированием
Старый 14.06.2014, 19:03   #21
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Помогите с Type

Сообщение от Arton Посмотреть сообщение
Вопрос как листать тайп?
Мне нужно, доходя до конца списка автоматически перемещаться в начало и наоборот.
Вот так наверно.
If xKeyHit(44) = True Then ;назад "z"

	If Handle(Sobj) = First StaticObject Then Sobj.StaticObject = Last StaticObject	
        Else Sobj = Before Sobj EndIf
	
       
End If

If xKeyHit(45) = True Then ;вперёд "x"
        
        If Handle(Sobj) = Last StaticObject Then Sobj.StaticObject = First StaticObject
	Else Sobj = After Sobj EndIf

End If
(Offline)
 
Ответить с цитированием
Старый 14.06.2014, 19:08   #22
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,018
Написано 2,312 полезных сообщений
(для 5,349 пользователей)
Ответ: Помогите с Type

Сообщение от dsd Посмотреть сообщение
Вот так наверно.
If xKeyHit(44) = True Then ;назад "z"

	If Handle(Sobj) = First StaticObject Then Sobj.StaticObject = Last StaticObject	
        Sobj = Before Sobj
	
       
End If

If xKeyHit(45) = True Then ;вперёд "x"
        
        If Handle(Sobj) = Last StaticObject Then Sobj.StaticObject = First StaticObject
	Sobj = After Sobj

End If
Так нельзя, First и Last только перемещают.

"Error: Illegal type conversion"
(Offline)
 
Ответить с цитированием
Старый 14.06.2014, 19:17   #23
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Помогите с Type

Пример:

mine.MyType=First MyType ;mine=first object in the type list
mine=After( mine ) ;mine=second object
mine=After( mine ) ;mine=third object
mine=Before( mine ) ;mine=second object
mine=Before( mine ) ;mine=first again!
'After' и 'Before' возвращают 'Null' если тип пуст или объектов дальше нет. Пример:
mine.MyType=Last MyType ;mine=last object
mine=After( mine ) ;object after last does not exist!
Так же можно вставлять опретором Insert в любое место списка. Пример:
mine1.MyType=New MyType
mine2.MyType=New MyType
Insert mine2 Before mine1
Прмер как вставить новый эллемент в начало списка:
Insert mine Before First MyType
Специальная форма For...Next позволяет вам легко проверить каждый эллемент типа в листе. Пример:
For mine.MyType=Each MyType
Next
Наконец, опертор 'Delete Each' Позволит вам удалить все эеллементы из листа типа. Пример:
Delete Each MyType
Вот от того что красным выделено надо управление делать. И хэндл объекта не является его номером.
(Offline)
 
Ответить с цитированием
Старый 14.06.2014, 19:55   #24
Nex
Гигант индустрии
 
Аватар для Nex
 
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений
(для 3,298 пользователей)
Ответ: Помогите с Type

Наверно будет проще задать каждому "Type" уникальный id-номер и сделать перебор с сравнением id.
(Offline)
 
Ответить с цитированием
Старый 14.06.2014, 20:01   #25
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,018
Написано 2,312 полезных сообщений
(для 5,349 пользователей)
Ответ: Помогите с Type

Сообщение от dsd Посмотреть сообщение
Вот от того что красным выделено надо управление делать. И хэндл объекта не является его номером.
Всё верно, After'ом и Before'ом листаю список, всё прекрасно работает. Но, когда доходит до выше начала или конца списка получается ошибка, тоже всё правильно.
Значит надо сделать проверку, когда превышает диапазон, так вот эта проверка работает через одно место. Максимум получилось стопорить если листать назад:
If xKeyHit(44) = True Then ;назад "z"

    
Sobj Before Sobj
    
If Handle(Sobj) < 1 Then Sobj.StaticObject First  StaticObject

End 
If 
При "вперёд" вообще ничего не сработало.

И как ты кстати предлагаешь без First и Last перемещаться в начало и конец списка?

Твой пример крутил и так и эток...

Прикрутил так, но это бред и он не работает:
If xKeyHit(44) = True Then ;назад "z"

        
Sobj.StaticObject Last StaticObject
        
        Sobj 
Before(Sobj)

End If 
Переходит с первого объекта (у меня сброс на начало) на второй (вместо третьего!) и останавливается.

Не понимаю
(Offline)
 
Ответить с цитированием
Старый 14.06.2014, 20:12   #26
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Помогите с Type

If xKeyHit(44) = True Then ;назад "z"

        
Sobj Before Sobj

        
If Sobj Null Then Sobj.StaticObject Last StaticObject

End 
If

If 
xKeyHit(45) = True Then ;вперёд "x"

        
Sobj After Sobj
        
If Sobj Null Then Sobj.StaticObject First StaticObject

End 
If 
Я что то наподобие вот этого в виду имел.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо dsd за это полезное сообщение:
Arton (14.06.2014), LLI.T.A.L.K.E.R. (15.06.2014)
Старый 14.06.2014, 20:39   #27
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,018
Написано 2,312 полезных сообщений
(для 5,349 пользователей)
Ответ: Помогите с Type

Сообщение от dsd Посмотреть сообщение
If xKeyHit(44) = True Then ;назад "z"

        
Sobj Before Sobj

        
If Sobj Null Then Sobj.StaticObject Last StaticObject

End 
If

If 
xKeyHit(45) = True Then ;вперёд "x"

        
Sobj After Sobj
        
If Sobj Null Then Sobj.StaticObject First StaticObject

End 
If 
Я что то наподобие вот этого в виду имел.
Вот как, я даже не думал так
Большое спасибо, всё работает.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com