 |
3D-программирование Вопросы, касающиеся программирования 3D мира |
20.03.2007, 00:22
|
#1
|
Нуждающийся
Регистрация: 23.02.2007
Сообщений: 98
Написано 0 полезных сообщений (для 0 пользователей)
|
if then непонятно
вопрос - понимаю глупый
объясните почему не работает (при выборе 1-2)
az1=0
az2=0
pitch#=0
QWE=2
While Not KeyDown( 1 )
If KeyDown( 2 )=True Then QWE=Input("num")
If KeyDown( 205 )=True Then pitch#=-1
If KeyDown( 203 )=True Then pitch#=1
If qwe=1 Then az1=az1+pitch#
If qwe=2 Then az2=az2+pitch#
RotateEntity zx1,0,0,az1
RotateEntity zx2,0,0,az2
RenderWorld
Text 0,20,"Pitch: "+az1
Flip
Wend
End
|
(Offline)
|
|
20.03.2007, 01:02
|
#2
|
Нуждающийся
Регистрация: 20.10.2006
Сообщений: 66
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: if then непонятно
в гамаке и стоя...
Graphics3D 800,600,32,1
c = CreateCamera()
PositionEntity c,0,0,-3
d = CreateCube()
Repeat
If KeyDown(2) MoveEntity c,0,0,-0.1;<1>
If KeyDown(3) MoveEntity c,0,0,0.1;<2>
RenderWorld
Flip
Until KeyHit(1)
End
или
Graphics3D 800,600,32,1
c = CreateCamera()
PositionEntity c,0,0,-10
d = CreateCube()
Repeat
If KeyDown(2) q#=.1
If KeyDown(3) q#=-.1
MoveEntity d,0,0,q#
RenderWorld
Flip
Until KeyHit(1)
End
иначе я ничего не понял  ...
|
(Offline)
|
|
20.03.2007, 01:24
|
#3
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Re: if then непонятно
Так, начнём с того что код пишем грамотно. А тоесь:
Форма:
[blitz]If ... Then
Else
EndIf[/blitz]
Имеет лишнию штучку, "Then"
Тоесть можно писать и так:
If qwe=1 az1=az1+pitch
Вообще я бы сделал не так. Я бы использовал Select
[blitz]Select qwe
Case 1
az1=az1+pitch
Case 2
az2=az2+pitch
End Select[/blitz]
Ещё в коде есть такой критерий "Читабельность", который я считая Очень важен. Поэтому не забывай, делать свой код Читабельным.
|
(Offline)
|
|
20.03.2007, 01:55
|
#4
|
Нуждающийся
Регистрация: 23.02.2007
Сообщений: 98
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: if then непонятно
не то куда не ставлю не катит,
вот код
Graphics3D 800,600,16,2
SetBuffer BackBuffer()
ca=CreateCamera()
light=CreateLight()
zx1=CreatePivot ()
PositionEntity zx1,0,0,9
kb1=CreateCube(zx1)
ScaleEntity kb1,.5,.5,.5
zx2=CreatePivot (zx1)
PositionEntity zx2,0,3,0
kb2=CreateCube(zx2)
ScaleEntity kb2,.5,.5,.5
az1=0
az2=0
pitch#=0
QWE=2
While Not KeyDown( 1 )
If KeyDown( 2 )=True Then QWE=Input("num")
If KeyDown( 205 )=True Then pitch#=-1
If KeyDown( 203 )=True Then pitch#=1
If qwe=1 Then az1=az1+pitch#
If qwe=2 Then az2=az2+pitch#
RotateEntity zx1,0,0,az1
RotateEntity zx2,0,0,az2
RenderWorld
Text 0,20,"Pitch: "+az1
Flip
Wend
End
это начало . будут далее зависимые объекты
zx3....zx90
|
(Offline)
|
|
20.03.2007, 02:01
|
#5
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Re: if then непонятно
Всё просто, это всё Input. При нажатии "1", он делает Iput и сразу вводит единичку.
Замени эту строчку:
If KeyDown( 2 )=True Then QWE=Input("num")
На это:
[blitz]If KeyHit( 2 )
FlushKeys
QWE%=Input("num: ")
EndIf[/blitz]
Тоесть при нажатии цифры 1, происходит сброс всех нажатий, и тогда идён ввод.
|
(Offline)
|
|
20.03.2007, 02:10
|
#6
|
Нуждающийся
Регистрация: 23.02.2007
Сообщений: 98
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: if then непонятно
ооо так то даа
благодарю
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 00:05.
|