forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   if then непонятно (http://forum.boolean.name/showthread.php?t=2991)

smersh 20.03.2007 00:22

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

mudriy 20.03.2007 01:02

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

иначе я ничего не понял:(...

moka 20.03.2007 01:24

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]

Ещё в коде есть такой критерий "Читабельность", который я считая Очень важен. Поэтому не забывай, делать свой код Читабельным.

smersh 20.03.2007 01:55

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

moka 20.03.2007 02:01

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, происходит сброс всех нажатий, и тогда идён ввод.

smersh 20.03.2007 02:10

Re: if then непонятно
 
ооо так то даа
благодарю


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot