پرش به محتوا

برنامه نویسی PSP/ورودی کاربر

ویکی‎کتاب، کتابخانهٔ آزاد

صفحه ۴ ►◄ برنامه نویسی PSP ►◄ صفحه ۶


ورودی دکمه

[ویرایش]

ما می‌خواهیم یک دکمه بسازیم که کار بر بتواند بر روی آن لمس کند.
در اول فایل کدهای زیر را اضافه می‌کنیم:

# include <pspkernel.h>
# include <pspdebug.h>
# include <pspctrl.h>

# include "../common/callback.h"

کد بالا چند کتابخانه به برنامه اضافه می‌کند.
کد زیر را نیز اضافه می‌کنیم:

# define VERS    1
# define REVS    1

PSP_MODULE_INFO("Button Input", PSP_MODULE_USER, VERS, REVS);
PSP_MAIN_THREAD_ATTR(PSP_THREAD_ATTR_USER);
PSP_HEAP_THRESHOLD_SIZE_KB(0);

# define printf pspDebugScreenPrintf

کد بالا یک ورودی اضافه می‌کند.
در فانکشن اصلی برنامه کد زیر را برای شروع اضافه می‌کنیم.

int main()
{      
 pspDebugScreenInit();
 setupExitCallback();

 int running = isRunning();

 SceCtrlData buttonInput;

 sceCtrlSetSamplingCycle(0);
 sceCtrlSetSamplingMode(PSP_CTRL_MODE_ANALOG);

ما حلقه‌ای را ایجاد می‌کنیم، ما موقعیت را برای چاپ تنظیم مجدد می‌کنیم و موقعیت پد آنالوگ را چاپ می‌کنیم. چاپ متغیر با عبور ان در پارامتر دوم و استفاده از '٪d' به عنوان نگهدارنده برای ان انجام می‌شود.

 while(running)
 {
  running = isRunning();

  pspDebugScreenSetXY(0, 0);
  printf("Analog X = %d ", buttonInput.Lx);
  printf("Analog Y = %d \n", buttonInput.Ly);

هنگامی که ما می‌خواهیم بررسی کنیم که چه دکمه‌هایی فشار داده می‌شوند، ابتدا بررسی می‌کنیم که آیا دکمه‌ها فشار داده شده‌اند. اگر دکمه "شروع" فشار داده شود، ما ان را چاپ می‌کنیم و سپس برنامه خود را با ساختن "در حال اجراً برابر با صفر می‌بندیم.

  sceCtrlPeekBufferPositive(&buttonInput, 1);

  if(buttonInput.Buttons != ۰)
  {
  if(buttonInput.Buttons & PSP_CTRL_START){
  printf("Start");
  running = ۰;
  }
  if(buttonInput.Buttons & PSP_CTRL_SELECT) printf("Select");

ما همین کار را با دکمه‌های دیگر انجام می‌دهیم، اما برنامه را نمی‌بندیم، فقط نام دکمه را چاپ می‌کنیم.

  if(buttonInput.Buttons & PSP_CTRL_UP) printf("Up");
  if(buttonInput.Buttons & PSP_CTRL_DOWN) printf("Down");
  if(buttonInput.Buttons & PSP_CTRL_RIGHT) printf("Right");
  if(buttonInput.Buttons & PSP_CTRL_LEFT) printf("Left");

  if(buttonInput.Buttons & PSP_CTRL_CROSS) printf("Cross");
  if(buttonInput.Buttons & PSP_CTRL_CIRCLE) printf("Circle");
  if(buttonInput.Buttons & PSP_CTRL_SQUARE) printf("Square");
  if(buttonInput.Buttons & PSP_CTRL_TRIANGLE) printf("Triangle");

  if(buttonInput.Buttons & PSP_CTRL_RTRIGGER) printf("R-Trigger");
  if(buttonInput.Buttons & PSP_CTRL_LTRIGGER) printf("L-Trigger");
  }
 }

 sceKernelExitGame();
 return 0;
}

Makefile یک بار دیگر فایل "Makefile"

TARGET  = ButtonInput
OBJS  = main.o .. /common/callback.o

INCDIR  =
CFLAGS  = -O2 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)

BUILD_PRX = ۱

LIBDIR  =. /
LIBS  = -lm
LDFLAGS =
EXTRA_TARGETS  = EBOOT.PBP
PSP_EBOOT_TITLE = ButtonInput

PSPSDK = $(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak

هنگامی که برنامه اجرا شد و همه چیز کار کرد به آموزش بعدی بروید.