Помогите чайнику
| |
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
|
|
| |
|