forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Условия не работают правильно. В чём может быть причина? (http://forum.boolean.name/showthread.php?t=19894)

softcrasoft 03.07.2015 23:15

Условия не работают правильно. В чём может быть причина?
 
Приветствую.
Есть код, где идут проверки на нажатия клавиш. И там подусловия, т.к как останавливать звуки я не знаю. где:
если x или y игрока превышает предел, или наоборот меньше нуля. так как используется else if, то else происходить должно если все условия не верны. тут же наоборот, условия не верны, а я иду вниз. по крайней мере, я слышу звук ходьбы, хоть x меньше 0 и я жму идти назад.
Помогите пожалуйста разобраться.
Вот весь код:
Код:

Graphics3D 800,600,16,2
SetBuffer BackBuffer()
player = CreateSphere()
cam = CreateCamera(player)
enemy = CreateCube()
PositionEntity enemy,0,0,20
stepsound = LoadSound("step.wav")
While Not KeyHit(1)
If KeyHit(200) Then
MoveEntity player,0,0,0.1
If EntityY#(player) > 40 Then
EntityY# = 40
Else If EntityX#(player) > 40 Then
EntityX# = 40
Else
PlaySound(stepsound)
EndIf
EndIf
If KeyHit(208) Then
MoveEntity player,0,0,-0.1
If EntityY#(player) < 0 Then
EntityY# = 0
Else If EntityX#(player) < 0 Then
EntityX# = 0
Else
PlaySound(stepsound)
EndIf
EndIf
If KeyHit(203) Then TurnEntity player,0,1,0
If KeyHit(205) Then TurnEntity player,0,-1,0
Wend
End

Заранее благодарен!

softcrasoft 03.07.2015 23:17

Ответ: Условия не работают правильно. В чём может быть причина?
 
Сделал ElseIf, тож не канает.

Кирпи4 04.07.2015 00:14

Ответ: Условия не работают правильно. В чём может быть причина?
 
KeyHit замени на KeyDown

softcrasoft 04.07.2015 07:39

Ответ: Условия не работают правильно. В чём может быть причина?
 
А причем тут это?
мне и надо клавишу не даржать а просто нажимать.
И от этого нич не изменилось. всеравно условия не работают.

softcrasoft 05.07.2015 00:45

Ответ: Условия не работают правильно. В чём может быть причина?
 
Ребят у помогите плз.
по поводу KeyDown, там нет таймера, который определяет сколько шагов в 1 сек делает допустим. и выходит так, что воспроизводиться звук оччччень много раз. вот сами попробуйте. но это от условий не зависит.

L-ee-X 06.07.2015 01:19

Ответ: Условия не работают правильно. В чём может быть причина?
 
Интересно и как у тебя по KeyHit игрок будет двигаться? KeyHit выполнит однократное нажатие клавиши и все, далее даже если ты клавишу держишь условие уже выполнятся не будет так как это KeyHit, правильно тебе сказали заменить надо на KeyDown и условия у тебя не правильно выполнены. Заведи переменные. Как остановить звук есть в справке. Читай внимательней. Судя по темам ты не с одним языком не знаком.

softcrasoft 06.07.2015 09:43

Ответ: Условия не работают правильно. В чём может быть причина?
 
C#, pascal, python, Visual Basic.NET.
По поводу keyhit, но таймера я никак не сделаю, а при шагах мне зву кнужен. я и думаю жать однократно.
Условия вроде верны, или как я вот по другому, могу сделать условие больше x или y 50?
так:
if entiteX(player) > 50 or entityY(player)
я по любому не сделаю. т.к оно будет выполняться только тогда, когда 1 из них верно. А мне надо, что бы когда x равна пяти десяти делать x = 50, и так же с y. но никак не одновременно.
то есть, когда у меня будет x > 50, у меня и x и y будут равны 50. а так я не напишу
if entityX(player) > 50 then entityX(player) = 50
if entityY(player) > 50 then entityY(player) = 50
else
playSound(stepsound)
moveentity player,0,0,0.1
end if
т.к совершенно разные условия) ну то есть нужно это все в одном условии, чтоб для них else был одинаков

L-ee-X 06.07.2015 10:57

Ответ: Условия не работают правильно. В чём может быть причина?
 
Вечером покажу как сделать. Но сомневаюсь я что ты с основами знаком

L-ee-X 06.07.2015 12:59

Ответ: Условия не работают правильно. В чём может быть причина?
 
Держи бродяга
PHP код:

Graphics3D 800,600,16,2
SetBuffer BackBuffer
()

run=LoadSound(вСТАВЬ СВОЙ ЗВУК ХОДЬБЫ)
SoundVolume run0
LoopSound run
runChannel 
PlaySound (run)

Repeat
running
#= 0
UpdateWorld()
RenderWorld()

If 
KeyDown(17Then
running 
Rnd (0.350.75)
EndIf
If 
running 0
    ChannelPitch runChannel
Rnd (8000014000)
EndIf
ChannelVolume runChannelrunning


Until KeyHit
(1)

End 


softcrasoft 06.07.2015 14:47

Ответ: Условия не работают правильно. В чём может быть причина?
 
Вопрос был не про звук, а про условия. Но всеравно спасибо.

L-ee-X 06.07.2015 15:05

Ответ: Условия не работают правильно. В чём может быть причина?
 
По крайней мере по твоему недокоду я понял только то, что ты хочешь сделать чтоб воспроизводился звук ходьбы при нажатие клавиши и при отпускание звук останавливался. Сам определись че надо то :)

softcrasoft 06.07.2015 16:35

Ответ: Условия не работают правильно. В чём может быть причина?
 
по поводу звуков я ответил просто в ответ про keydown.
Изначально был вопрос в коде где не правильное условие. там же я и описал алгоритм, а именно:
При движении, нужно проверить поочередно координаты x и y. если x > 50, то x = 50. если y > 50, то y = 50. в else т.е если условия не верны, воспроизводим звук и движемся.

softcrasoft 06.07.2015 16:37

Ответ: Условия не работают правильно. В чём может быть причина?
 
а то у меня получается так, что када он будет уператься в стенку не только будет проходить в нее, но и издавать звук шагов. 1. колиженс я не могу, т.к я его не понимаю и не привык, 2. кроме как elseif я не представляю себе как это сделать. а вроде как во всех бейсиках такая конструкция есть. по крайней мере припоминаю в VB.NET и PB.

L-ee-X 06.07.2015 16:40

Ответ: Условия не работают правильно. В чём может быть причина?
 
Ну так очевидная ошибка в коде EntityY# = 40 это кто? И откуда он?

L-ee-X 06.07.2015 16:42

Ответ: Условия не работают правильно. В чём может быть причина?
 
Переменные задавай игроку.


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

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