Пятница, 29 Марта 2024, 05:06

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » Basic » Найти ошибку в небольшом коде Blitz3D (Basic) (Я начал изучать язык Blitz3D)
Найти ошибку в небольшом коде Blitz3D (Basic)
denis79513Дата: Среда, 13 Октября 2010, 13:09 | Сообщение # 1
был не раз
Сейчас нет на сайте
Я начал изучать язык Blitz3D так как он не требует серьезных навыков, прост в изучении и дает неплохие возможности, превым делом, решил реализовать управление автомобилем, как обычно создается тело (машина (cub)), плоскось (plane), и освещение с камерой.
В моем случае, Матина, то есь куб имеет переменную car.
Самое начало, делаем так, как обычно:
Code

  If KeyDown(200) MoveEntity car,0,0,.1 (клавиши вверх - движение вперед)
  If KeyDown(208) MoveEntity car,0,0,-.1 (клавиша вниз- движение назад)
  If KeyDown(203) TurnEntity car,0,1,0 (клавиша влево - поворот влево)
  If KeyDown(205) TurnEntity car,0,-1,0 (клавиша вправо - поворот вправо)

С передним ходом все OK. нажимаем влево, вперед - движется налево и вперед.
Но дело в том, что возникают проблемы с задним ходом, то есть если игрок нажимает влево и назад, то машина должна двигаться влево, назад, а здесь она движется вправо, назад.
Поэтому я решил ввести переменную, которая будет стоять вместо градусов поворота. Например Cr:
Code

If KeyDown(200) MoveEntity car,0,0,.cr

Тогда нам нужно прописать, что если игрок нажимает (вперед) + (влево или вправо) то cr=1
а если он нажимает (вназадеред) + (влево или вправо) то cr=-1 (то есть в обратную сторону).
Полностью мой код теперь выглядит так:
Code

Graphics3D 1280,1024,32,1

SetBuffer BackBuffer()

cr%=5
lit=CreateLight()
car=CreateCube()
EntityColor car,0,255,0
cam=CreateCamera(car)
plan=CreatePlane(10)

EntityColor plan,0,0,255

PositionEntity plan,0,-1,5
PositionEntity cam,0,3,-7

If  
  KeyDown(208)
And
  KeyDown(203)  
Or
  KeyDown(205)
Then  
cr=5
Else  
cr=-5
EndIf

Repeat
  If KeyDown(200) MoveEntity car,0,0,.1
  If KeyDown(208) MoveEntity car,0,0,-.1
  If KeyDown(203) TurnEntity car,0,1,0
  If KeyDown(205) TurnEntity car,0,-1,0
UpdateWorld
RenderWorld
Flip
Until KeyHit(1)
End

Помогите найти ошибку, при попытке запуска, вылетает: "Expecting Expression" заранее спасибо!
TrelanДата: Среда, 13 Октября 2010, 14:14 | Сообщение # 2
участник
Сейчас нет на сайте
Ошибка в этом:
Quote (denis79513)
If
KeyDown(208)
And
KeyDown(203)
Or
KeyDown(205)
Then
cr=5
Else
cr=-5
EndIf

Чтобы ее не было сделайте так:

If KeyDown(208) And KeyDown(203) Or KeyDown(205) Then
cr=5
Else
cr=-5
EndIf


Мои игры:
Planet Lander
Escape From Hospital (в разработке)

Сообщение отредактировал Trelan - Среда, 13 Октября 2010, 14:17
denis79513Дата: Среда, 13 Октября 2010, 18:18 | Сообщение # 3
был не раз
Сейчас нет на сайте
Большое спасибо.
Форум игроделов » Программирование » Basic » Найти ошибку в небольшом коде Blitz3D (Basic) (Я начал изучать язык Blitz3D)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг