Журнал о программированнии на языках Blitz3D, BlitzPlus, BlitzMax

BlitzMax-код:MouseAsJoystick.bmx

Материал из Blitz Et Cetera

Перейти к: навигация, поиск
'BlitzMax - MouseStick Class Module - Parablax 2006

'Emulates the mouse as a digital joystick
'Class: TMouseStick
'Methods: Init(smoothmove), Refresh
'Properties: Up, Down, Lft, Rght (all readonly)
'(increasing the smoothmove parameter delays the change of a direction from 1 To 0 when no movement is detected)

Strict

Local MouseStick:TMouseStick
MouseStick = New TMouseStick
MouseStick.Init(20)
Graphics 320,240,0
HideMouse()
While Not MouseHit(1)
        Cls
        SetColor 200,200,0
        DrawText "Wiggle the mouse - Click to exit",0,0
        SetColor 200,200,200
        If mousestick.up Then DrawText "up",140,60
        If mousestick.Down Then DrawText "down",140,180
        If mousestick.Lft Then DrawText "left",80,120
        If mousestick.Rght Then DrawText "right",200,120
        MouseStick.Refresh     
        Flip
Wend
End

'Types
Type TMouseStick
        Field Up,Down, Lft, Rght
        Field xspeed[], yspeed[]
       
        Method Init(smoothmove)
                xspeed = New Int[smoothmove]
                yspeed = New Int[smoothmove]
        End Method
       
        Method Refresh()
                Local i, j, xspeed_chk, yspeed_chk
               
                For i = xspeed.length-1 To 1 Step -1
                        xspeed[i] = xspeed[i-1]
                        yspeed[i] = yspeed[i-1]
                Next
       
                xspeed[0] =MouseX() -100
                yspeed[0] =MouseY() -100
                MoveMouse(100,100)
       
                For j = 0 To xspeed.length-1
                        xspeed_chk :+ xspeed[j]
                        yspeed_chk :+ yspeed[j]
                Next

                If xspeed_chk = 0 Then Rght = 0; Lft = 0
                If yspeed_chk = 0 Then Up = 0; Down = 0

                If xspeed[0]<0 Then     Lft = 1; Rght = 0;
                If xspeed[0]>0 Then     Lft = 0; Rght = 1;
                If yspeed[0]<0 Then     Up = 1; Down = 0
                If yspeed[0]>0 Then     Up = 0; Down = 1
        End Method
       

EndType

Другие

Друзья