forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Помогите с LoadAnimImage (http://forum.boolean.name/showthread.php?t=15883)

Okay 22.11.2011 01:01

Ответ: Помогите с LoadAnimImage
 
Прошу прощения. Но не пойму в чем ошибка. пол часа сидел, думал исправлял. Не получается. Походу это никогда не закончится :D
Код:

Graphics 800,600
SetBuffer BackBuffer()


AppTitle "The Big Fighter"

Global x = 300
Global y = 300
Global xm = 400
Global ym = 400
Global frame = 0
Global framel = 0
Global frameTime
Global frametimel
Global nado = 0

Global pein = LoadImage("pein.bmp")
Global peinl = LoadImage("peinl.bmp")
Global mario = LoadImage("mario.bmp")
Global cur = LoadImage("cursor.bmp")
Global pein_run = LoadAnimImage("pein_run.bmp",65,85,frame,3)
Global pein_runl = LoadAnimImage("pein_runl.bmp",65,85,framel,3)

MaskImage mario,0,0,0
MaskImage pein,0,0,0
MaskImage peinl,0,0,0
MaskImage pein_run,0,0,0
MaskImage pein_runl,0,0,0

While Not KeyDown(1)


Cls


DrawImage mario,xm,ym



If nado = 0 Then

DrawImage pein,x,y

EndIf

If nado = 10 Then

DrawImage peinl,x,y

EndIf



DrawImage cur,MouseX(),MouseY()


If KeyDown(200) Then
 y = y - 1
EndIf

If KeyDown(208) Then
 y = y + 1
EndIf



If KeyDown(203) Then
nado = 3 ; 3 - бежать
 If MilliSecs() > frameTime + 100 Then
    frameTime = MilliSecs()
    framel = ( framel + 1 ) Mod 3; 3 - количество кадров
End If
DrawImage pein_runl, x, y, framel
 x = x - 4
Else

nado = 10

EndIf



If KeyDown(205) Then
nado = 1 ; 1 - бежать

If MilliSecs() > frameTimel + 100 Then
    frameTimel = MilliSecs()
    frame = ( frame + 1 ) Mod 3; 3 - количество кадров
End If
DrawImage pein_run, x, y, frame
  x = x + 4
Else
nado = 0 ; 0 - стоять на месте
EndIf



HidePointer


Flip
Wend

End


RBK 22.11.2011 02:45

Ответ: Помогите с LoadAnimImage
 
Я тебе советую вынести HidePointer из цикла, поставь его перед ним.

Сначала подумал что ошибка в блоке If KeyDown(203), но потом понял что у тебя условие If KeyDown(205)... else срабатывает.

подумай про использование команд Select, Const и Function.

St_AnGer 22.11.2011 10:19

Ответ: Помогите с LoadAnimImage
 
Код:

If KeyDown(203) Then
nado = 3 ; 3 - бежать
 If MilliSecs() > frameTime + 100 Then
    frameTime = MilliSecs()
    framel = ( framel + 1 ) Mod 3; 3 - количество кадров
End If
DrawImage pein_runl, x, y, framel
 x = x - 4
Else

nado = 10

EndIf



If KeyDown(205) Then
nado = 1 ; 1 - бежать

If MilliSecs() > frameTimel + 100 Then
    frameTimel = MilliSecs()
    frame = ( frame + 1 ) Mod 3; 3 - количество кадров
End If
DrawImage pein_run, x, y, frame
  x = x + 4
Else
nado = 0 ; 0 - стоять на месте
EndIf

изменить на

Код:

If KeyDown(203) Then
    nado = 3 ; 3 - бежать
    If MilliSecs() > frameTime + 100 Then
        frameTime = MilliSecs()
        framel = ( framel + 1 ) Mod 3; 3 - количество кадров
    End If
    DrawImage pein_runl, x, y, framel
    x = x - 4

Else If KeyDown(205) Then

    nado = 1 ; 1 - бежать

    If MilliSecs() > frameTimel + 100 Then
        frameTimel = MilliSecs()
        frame = ( frame + 1 ) Mod 3; 3 - количество кадров
    End If
    DrawImage pein_run, x, y, frame
    x = x + 4
Else
    if nado = 1
        nado = 0 ; 0 - стоять на месте
    else if nado = 3
        nado = 10
    end if
EndIf

Что я сделал? Банально объединил два твоих условия на клавиши 203 и 205. Твоё условие на клавишу 203 попросту не срабатывало из за следующего отдельного от него условия клавиши 205. Банальность, а просидеть над этим можно долго при большом коде(по себе знаю :) )

зыЖ привыкай сразу структурировать код (хотя бы как у меня, просто каждый подуровень на 4 пробела отодвигать), иначе потом запутаешься в коде из за его нечитаемости.

Nex 22.11.2011 10:30

Ответ: Помогите с LoadAnimImage
 
Цитата:

Сообщение от St_AnGer (Сообщение 210605)
[code]
зыЖ привыкай сразу структурировать код (хотя бы как у меня, просто каждый подуровень на 4 пробела отодвигать), иначе потом запутаешься в коде из за его нечитаемости.

Лучше на 5 нажатием кнопки "Tab".

St_AnGer 22.11.2011 10:32

Ответ: Помогите с LoadAnimImage
 
Цитата:

Сообщение от Nex (Сообщение 210607)
Лучше на 5 нажатием кнопки "Tab".

ну я табом и пользуюсь для структурирования. Просто в теге CODE таб не работает, вот на 4 пробела и приходится двигать(поэтому так и написал).

Okay 22.11.2011 23:28

Ответ: Помогите с LoadAnimImage
 
Из-за чего может появляться оранжевая точка перед спрайтом?
В редакторе открывал изображение, ничего лишнего нету.

Okay 22.11.2011 23:32

Ответ: Помогите с LoadAnimImage
 

Dzirt 22.11.2011 23:58

Ответ: Помогите с LoadAnimImage
 
Думаю просто конец одного кадра попадает в начало другого...попробуй просмотреть в редакторе изображение поделив его на кадры.

Okay 23.11.2011 00:28

Ответ: Помогите с LoadAnimImage
 
Спасибо. помогло


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

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