文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>SDL游戏摇杆(Joy Stick)开发

SDL游戏摇杆(Joy Stick)开发

时间:2010-08-21  来源:bluedrum

Andrew Haung <[email protected]>
    一直以为LINUX下SDL游戏摇杆(JoyStick)编程好象没有什么含意,没有什么合适的硬件来测试。近日去找华强北找实验模块,偶然找到USB的游戏摇杆.买来来一试,插上Linux直接支持,并且以在支持JoyStick的游戏可以直接操作。(比如SDLPAL).      这个外设解决了我一直头痛的问题--在开发板上如何方便打游戏。触摸屏太慢,不方便,USB键盘不能移动。USB鼠标就更不方便了。Joy Stick完美解决这个问题。在开发板,甚至是手机或者MID都可以用它来做外设。

一.JoyStick的硬件安装 --------------------------------------------------------------   将USB的接口的JoyStick 插RHEL 5的主机上。可以直接被识别。   用dmesg | tail 查看

usb 3-2: new low speed USB device using uhci_hcd and address 3 

usb 3-2: configuration #1 chosen from 1 choice 

input: DragonRise Inc. Generic USB Joystick as /class/input/input3 input: USB HID v1.10 Joystick [DragonRise Inc. Generic USB Joystick ] on usb-0000:00:1d.1-2

可以看Joy Stick已经安装到系统当中   查看系统结点 ls -l /dev/input  
event0  event1  event2  event3  js0  mice  mouse0
  其中/dev/input/event3就是joy Stick.而js0是表示第一个游戏摇杆。它实际指向/dev/input/event3   至此硬件安装完毕。   用sdlpal(SDL版仙剑奇侠传)来测试,方向能工作正常。
 
二.SDL Joy Stick编程  ---------------------------------------------------------------     SDL的Joy Stick编程相当简单。      2.1 首先在初始化时要初始化Joy Stick模块         用SDL_Init(SDL_INIT_JOYSTICK | ...) 或者 SDL_Init(SDL_INIT_EVERYTHING);      2.2 初始化游戏摇杆设备         定义Joy Stick 数据结构            SDL_Joystick     *g_pJoy;        检测Joy Stick设备是否存在           SDL_NumJoysticks()        打开JoyStick设备           SDL_JoystickOpen(0); #0表示第一个设备        设置JoyStick事件生效           SDL_JoystickEventState(SDL_ENABLE);

if (SDL_NumJoysticks() > 0)
   {
      g_pJoy = SDL_JoystickOpen(0);
      if (g_pJoy != NULL)
      {
         SDL_JoystickEventState(SDL_ENABLE);
      }
   }


   2.3 在事件处理函数加入对游戏摇杆事件处理。       对Joy Stick事件处理主要如下几个事件.             SDL_JOYAXISMOTION : Joy移动事件                 SDL_Event.jaxis.axis 表示移动方向,0 ,X方向移动,1,Y方向移动                 SDL_Event.jaxis.value 表示移动位移               SDL_JOYBUTTONDOWN: Joy Stick几个标准按键事件                SDL_Event.jbutton.button 表明是按下哪一个按键                                    2.4 关闭Joy Stick设备       用 SDL_JoystickClose(g_pJoy);关闭       
    

if (SDL_JoystickOpened(0))
   {
      //assert(g_pJoy != NULL);

      SDL_JoystickClose(g_pJoy);
      g_pJoy = NULL;
   }


三.下一阶段工作 -----------------------------------------------------------------       1.将不支持Joy Stick的游戏加入相关支持。    2.在开发板加入Joy Stick支持    3.在MID上加入Joy Stick支持


相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载