[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]


  • Страница 1 из 1
  • 1
Модератор форума: Spidy, turBO, blitz3d  
Форум мира Blitz3D » Язык Blitz3D » 3D программирование » Помогите чайнику (У меня проблема)
Помогите чайнику
LendonДата: Вторник, 14.07.2009, 23:03 | Сообщение # 1
ламер
Группа: Пользователи
Сообщений: 3
Награды: 0
Репутация: 0
Статус: Offline
Здравствуйте. Сегодня скачал блиц, написал свою первую тестовую прогу, только вот проблема - ошибка выскакивает "expected end-of-file". Помогите пожалуйста решить проблему, а то я никак не пойму где ошибка. Вот код:

Graphics3D 800,600,32,0
SetBuffer FrontBuffer()
light = CreateLight()
camera = CreateCamera()
con = CreateCone (64)
MoveEntity con 0,0,5

While Not KeyDown(1)

x# = 0
y# = 0
z# = 0

If KeyDown(203) = True Then x# = -0.5
If KeyDown(205) = True Then x# = 0.5
If KeyDown(200) = True Then y# = 0.5
If KeyDown(208) = True Then y# = -0.5
If KeyDown(30) = True Then z# = 0.5
If KeyDown(44) = True Then z# = -0.5
If KeyDown(57) = True Then RotateEntity con, Rnd(0,360),Rnd(0,360),Rnd(0,360)

MoveEntity con,x#,y#,z#

RenderWorld

Text 0,0 "Use cursur/keys A/Z and spacebar to move object\n"
Text 0,20 "X = " +x
Text 0,40 "Y = " +y
Text 0,60 "Z = " +z

Flip
Wend
End

 
deejexДата: Среда, 15.07.2009, 08:54 | Сообщение # 2
заядлый прогер
Группа: Пользователи
Сообщений: 522
Награды: 2
Репутация: 14
Статус: Offline
Исправление ошибок:

Code
Graphics3D 800,600,32,0  
light = CreateLight()  
camera = CreateCamera()  
con = CreateCone (64)  
MoveEntity con,0,0,5 ;Ты после con забыл запятую поставить

While Not KeyDown(1)  

x# = 0  
y# = 0  
z# = 0  

If KeyDown(203) = True Then x# = -0.3 ;Может лучше уменьшить силу?
If KeyDown(205) = True Then x# = 0.3
If KeyDown(200) = True Then y# = 0.3  
If KeyDown(208) = True Then y# = -0.3  
If KeyDown(30) = True Then z# = 0.3  
If KeyDown(44) = True Then z# = -0.3  
If KeyDown(57) = True Then TurnEntity con, Rand(-1,1),Rand(-1,1),Rand(-1,1)  

MoveEntity con,x#,y#,z#  

RenderWorld  

Text 0,0,"Use cursur/keys A/Z and spacebar to move object\n"  ;После координат тоже нужно запятые ставить
Text 0,20,"X = " +x  
Text 0,40,"Y = " +y  
Text 0,60,"Z = " +z  

Delay 10 ;Так будет лучше
Flip  
Wend  
End

Добавлено (15.07.2009, 08:54)
---------------------------------------------
Кстати блиц ты освоил неплохо!




 
SpidyДата: Среда, 15.07.2009, 09:04 | Сообщение # 3
Полковник
Группа: Модераторы
Сообщений: 339
Награды: 6
Репутация: 13
Статус: Offline
Я поясню ошибку, ты пропустил запятые в следующих строчках:

MoveEntity con,0,0,5

Text,0,0,"Use cursur/keys A/Z and spacebar to move object\n"

Text,0,20 "X = " +x

Text,0,40 "Y = " +y

Text,0,60 "Z = " +z


Компьютерная мышь ночью собирает крошки у тебя со стола и прячет их в клавиатуру, делает запасы на зиму
 
LendonДата: Среда, 15.07.2009, 09:23 | Сообщение # 4
ламер
Группа: Пользователи
Сообщений: 3
Награды: 0
Репутация: 0
Статус: Offline
О, спасибо большое. А можешь обьяснить почему ты убрал буфер ? Я просто прочитал где то в помощи что буфер нужен для отображения мира, хотя у меня с этим еще асоциируется RenderWorld и CreateCamera() . Можешь обьяснить разницу между этими вещами ?

Добавлено (15.07.2009, 09:13)
---------------------------------------------
Где нужно использовать буфер, а где можна не использовать обьясните чайнику

Добавлено (15.07.2009, 09:23)
---------------------------------------------
Да уж, одно мне не нравитсья в блице - он не показывает где ошибка, как это делают компиляторы

 
deejexДата: Среда, 15.07.2009, 11:03 | Сообщение # 5
заядлый прогер
Группа: Пользователи
Сообщений: 522
Награды: 2
Репутация: 14
Статус: Offline
Есть два основных буффера - Back и Front
Front лучше вообще не использовать. Back в 3д стоит по умолчанию.




 
LendonДата: Среда, 15.07.2009, 11:23 | Сообщение # 6
ламер
Группа: Пользователи
Сообщений: 3
Награды: 0
Репутация: 0
Статус: Offline
У меня еще возникли вопросы.
Я дописал немного код. Создал второй обьект, создал для них типы колизий и создал колизию для этих типов обьектов.

Интересует меня вот этот кусочек кода:

SetFont fntArial$
If (EntityCollided(con,2))
score% = score% + CountCollisions(con)
Text 0,100,"Score = " +score%
EndIf

Здесь два вопроса: Перед этим у меня выводится текст "Х =", "Y = ".... Я хочу чтобы только score% печатался моим шрифтом, а остальной текст печатался обычным. Я в конце перед endif ставил FreeFont fntArial$, но выбивало ошибку типа "Font don't exists". Как поступить ?
Второй вопрос - Я хочу чтобы выводился счет сколько раз я столкнулся с обьектом. При этом если я стакливаюсь - выводится score% но он быстро возрастает. А если выводить просто CountCollisions(con) вместо score%, то выводится всегда 1. А я же хочу чтобы выводило сперва 1, потом 2 и тп...... Как изменить код чтобы достичь этого ?

 
turBOДата: Среда, 15.07.2009, 11:27 | Сообщение # 7
Полковник
Группа: Администраторы
Сообщений: 297
Награды: 5
Репутация: 12
Статус: Offline
Quote (Lendon)
Да уж, одно мне не нравитсья в блице - он не показывает где ошибка, как это делают компиляторы

У него есть компиллятор, а любой компиллятор умеет определять место в коде где произошла ошибка.
Если ты работаешь в IDE-оболочке, попробуй выставить список Release\Debug в положение Debug, если в Blitz3D.exe - отметь галочкой пункт меню Program > Debug Enabled.


If 2+2<>4 Then Restart
 
turBOДата: Среда, 15.07.2009, 11:35 | Сообщение # 8
Полковник
Группа: Администраторы
Сообщений: 297
Награды: 5
Репутация: 12
Статус: Offline
Quote (Lendon)
Я хочу чтобы только score% печатался моим шрифтом, а остальной текст печатался обычным.

Грузи два различных шрифта:

Code
fntCourier12 = LoadFont ("Courier",12,1,0)
fntArial24 = LoadFont ("Arial",24,1,0)

Затем задавай в нужном месте необходимый в данный момент шрифт:

Code
SetFont fntArial24
       Text 10,50,"Score = " +score%
    SetFont fntCourier12
       Text 10,90,"Level = " +level+1


If 2+2<>4 Then Restart
 
Форум мира Blitz3D » Язык Blitz3D » 3D программирование » Помогите чайнику (У меня проблема)
  • Страница 1 из 1
  • 1
Поиск: