বেসিক সি/ইভেন্টস
GetEvents
[সম্পাদনা]কমান্ডটি কল করে GetSDLEvents (); রিডিং সিস্টেমের ঘটনা ঘটায়:
- সনাক্ত করা উইন্ডো ইভেন্টের সংখ্যার সাথে সম্পর্কিত বিটগুলি WindowEvent ভেরিয়েবলে সেট করা হয়
- প্রস্থান ভেরিয়েবল 1 (SDL_TRUE) সেট করা হয় যদি প্রোগ্রামটি বন্ধ করতে হয়, যেমন একটি উইন্ডো বন্ধ করা হয়
- সর্বশেষ চাপানো কীটির SDL_Keycode InKey ভেরিয়েবলে সংরক্ষণ করা হয়
- SDLTEXT $ দ্বারা নির্দেশিত ভেরিয়েবলটি যখন StartTextInput কল করা হয় তখন প্রবেশ করা অক্ষরগুলির সাথে সংরক্ষণ করা হয়
- চাপা কীগুলির SDLKeyboardState টেবিল আপডেট করা হয়েছে
- MouseK MouseX MouseY ভেরিয়েবলে মাউসের অবস্থা আপডেট করা হয়েছে
InKey(K)
[সম্পাদনা]SDL_Scancode K কী চাপলে 1 রিটার্ন করে, না হলে 0 দেয়।
InKey (K) ফাংশন এবং InKey ভেরিয়েবলের মধ্যে বেশ কিছু পার্থক্য রয়েছে। ফাংশনটি SDL_Scancode-এর উপর ভিত্তি করে তৈরি করা হয়েছে, যা সিস্টেম থেকে স্বাধীন ফিজিক্যাল কী কোড। এই ভেরিয়েবলটিতে সিস্টেম-নির্ভর SDL_Keycode রয়েছে এবং সিস্টেমটি সাধারণত কীস্ট্রোক ইভেন্টটি পর্যায়ক্রমে পুনরাবৃত্তি করে যদি কীটি সব সময় চাপা থাকে। কী রিলিজ ইভেন্টটি শুধুমাত্র একবার তৈরি করা হয়, যখন এটি আসলে প্রকাশ করা হয়, কিন্তু এটি GetSDLEvents দ্বারা সমর্থিত নয়, যদি প্রয়োজন হয় - আপনি নিজেই এটির সমর্থন যোগ করুন বা আপনার নিজের ইভেন্ট হ্যান্ডলার লিখুন। ভেরিয়েবলটিতে শুধুমাত্র 1 কী-এর কোড রয়েছে, ফাংশনটি সমস্ত কী সম্পর্কে তথ্য ধারণকারী SDLKeyboardState টেবিলের অবস্থা পড়ে, InKey (K) এর পরিবর্তে আপনি SDLKeyboardState [K] ব্যবহার করতে পারেন। যাইহোক, সাধারণত একই সাথে চাপানো কী সম্পর্কে সঠিক তথ্যের পরিমাণ কয়েকটির মধ্যে সীমাবদ্ধ থাকে, সম্ভবত হার্ডওয়্যারের কারণে।
সামগ্রিকভাবে, InKey মেনু এবং টেক্সট ইনপুটের জন্য আরও উপযুক্ত, এবং ফাংশনটি চলমান বস্তু নিয়ন্ত্রণ করার জন্য ভাল, যেমন গেমগুলিতে।
কোড টেবিল:
https://eduinf.waw.pl/inf/prg/011_sdl2/1128.php
WaitInKey
[সম্পাদনা]একটি কী চাপা না হওয়া পর্যন্ত প্রোগ্রামটিকে বিরতি দেয় (আপাতদৃষ্টিতে) অথবা ভেরিয়েবল Quit 1 এ সেট করা হয়। GetSDLEvents (); যখন (InKey == 0 && প্রস্থান করুন == 0);
StartTextInput (T)
[সম্পাদনা]কীবোর্ড টেক্সট ইনপুট মোড সক্রিয় করে। সেই মুহূর্ত থেকে, SDLTEXT $ দ্বারা নির্দেশিত পরিবর্তনশীল T (STRING প্রকারের, বা char *) GetEvents কল করার পরে প্রবেশ করা অক্ষর দ্বারা পূর্ণ হয়। কল {SDL_StartTextInput (); SDLTEXT $ = T;}
StopTextInput
[সম্পাদনা]পাঠ্য ইনপুট মোড বন্ধ করে। SDL_StopTextInput ();
GetFinger (F)
[সম্পাদনা]SDLFinger-এর কাছে স্ক্রীন 0 স্পর্শ করা F নম্বর সম্পর্কে পরিবর্তনশীল তথ্য লেখে। SDLFinger = SDL_GetTouchFinger (SDLTouchID, F);
একটি পরিবর্তনশীল পড়া:
SDLFinger-> আইডি টাচ আইডি
SDLFinger-> স্পর্শ ইভেন্টের x অক্ষে x অবস্থান, স্বাভাবিক করা হয়েছে (0 ... 1)
SDLFinger-> টাচ ইভেন্টের y y অবস্থান, স্বাভাবিক করা হয়েছে (0 ... 1)
SDLFinger-> চাপ প্রয়োগ করা চাপ, স্বাভাবিক (0 ... 1)
মনোযোগ! স্ক্রীন স্পর্শ না করে একটি আঙুল দিয়ে এই কমান্ডটি চালানো একটি মারাত্মক ত্রুটির কারণ।
NumFingers
[সম্পাদনা]টাচস্ক্রিন 0 স্পর্শ করা আঙ্গুলের সংখ্যা নির্দিষ্ট করে। SDL_GetNumTouchFingers (SDLTouchID) কল করে
Stick(J,S)
[সম্পাদনা]J সংখ্যা দ্বারা জয়স্টিকের S সংখ্যা দ্বারা অক্ষের কাত রিপোর্ট করে। সংখ্যা 0 থেকে। ফলাফলটি পরিসরে (-32768 থেকে 32767)। SDL_JoystickGetAxis (SDLJoystick [J], S) কল করে
Strig(J,S)
[সম্পাদনা]জয়স্টিক J এর বোতাম S এর অবস্থা দেয়। 1 - চাপা, 0 - না। SDL_JoystickGetButton (SDLJoystick [J], S) কল করে
NumJoys
[সম্পাদনা]সংযুক্ত জয়স্টিক সংখ্যা নির্দেশ করে। SDL_NumJoysticks কল করে ()
SetMouse(x,y)
[সম্পাদনা]মাউস পয়েন্টারকে x, y-এ অবস্থান করে।
ShowM(s)
[সম্পাদনা]কার্সারের দৃশ্যমানতা সেট করে, এর জন্য: SDL_ENABLE দৃশ্যমান, SDL_DISABLE লুকানো, SDL_QUERY কার্সারের দৃশ্যমানতার বর্তমান অবস্থা পরীক্ষা করার জন্য।
WindowEvent(E)
[সম্পাদনা]উইন্ডো ইভেন্ট নম্বর E এর উপস্থিতির জন্য পরীক্ষা করে। ফলাফলটি অনুরূপ বিট নম্বর সেট সহ Uint16 প্রকারের একটি সংখ্যা, অথবা 0 যদি কোনো ঘটনা সনাক্ত না হয়। এটি কল করে: (WindowEvent & (1 << E))
E-এর পরিবর্তে, SDL-এ সংজ্ঞায়িত সংশ্লিষ্ট ধ্রুবকের নাম দেওয়া উত্তম। সম্ভাব্য উইন্ডো ইভেন্ট:
https://www.eduinf.waw.pl/inf/prg/011_sdl2/1133.php
উদাহরণ:
#include "BasicSDL.h"
STRING znak=" ";
STRING napis;
MAIN
SDLOpen(0)
Repeat
Cls
GetEvents
If (InKey>0 AND InKey<128)
znak[0]=InKey;
Add$(napis,znak)
EndIf
GPrintAt(0,0,napis)
ShowPage
Print MouseX _ MouseY _ MouseK NL
Until (Quit OR InKey(SDL_SCANCODE_ESCAPE))
if(WindowEvent(SDL_WINDOWEVENT_CLOSE)) {Print$ "ZAMKNIETO OKNO" NL}
SDLQuit
ENDMAIN