உங்கள் முதல் Android விளையாட்டை ஜாவாவில் எழுதுவது எப்படி

நூலாசிரியர்: John Stephens
உருவாக்கிய தேதி: 1 ஜனவரி 2021
புதுப்பிப்பு தேதி: 19 மே 2024
Anonim
ஜாவாவுடன் உங்கள் முதல் ஆண்ட்ராய்டு அப்ளிகேஷனை உருவாக்குவது எப்படி
காணொளி: ஜாவாவுடன் உங்கள் முதல் ஆண்ட்ராய்டு அப்ளிகேஷனை உருவாக்குவது எப்படி

உள்ளடக்கம்


Android க்காக ஒரு விளையாட்டை உருவாக்க ஏராளமான வழிகள் உள்ளன மற்றும் ஒரு முக்கியமான வழி, ஜாவாவுடன் Android ஸ்டுடியோவில் புதிதாக அதைச் செய்வது. இது உங்கள் விளையாட்டு எவ்வாறு தோற்றமளிக்க வேண்டும் மற்றும் செயல்பட வேண்டும் என்பதற்கான அதிகபட்ச கட்டுப்பாட்டை உங்களுக்கு வழங்குகிறது, மேலும் இந்த செயல்முறை நீங்கள் பல காட்சிகளில் பயன்படுத்தக்கூடிய திறன்களைக் கற்பிக்கும் - நீங்கள் ஒரு பயன்பாட்டிற்கான ஸ்பிளாஸ் திரையை உருவாக்குகிறீர்களா அல்லது நீங்கள் விரும்பினாலும் சில அனிமேஷன்களைச் சேர்க்கவும். இதைக் கருத்தில் கொண்டு, இந்த டுடோரியல் அண்ட்ராய்டு ஸ்டுடியோ மற்றும் ஜாவாவைப் பயன்படுத்தி எளிய 2 டி விளையாட்டை எவ்வாறு உருவாக்குவது என்பதைக் காண்பிக்கும். நீங்கள் பின்பற்ற விரும்பினால் கிதுபில் அனைத்து குறியீடு மற்றும் ஆதாரங்களையும் காணலாம்.

அமைத்தல்

எங்கள் விளையாட்டை உருவாக்க, சில குறிப்பிட்ட கருத்துக்களை நாங்கள் கையாள வேண்டியிருக்கும்: விளையாட்டு சுழல்கள், நூல்கள் மற்றும் கேன்வாஸ்கள். தொடங்க, Android ஸ்டுடியோவைத் தொடங்கவும். நீங்கள் அதை நிறுவவில்லை எனில், Android ஸ்டுடியோவுக்கான எங்கள் முழு அறிமுகத்தையும் பாருங்கள், இது நிறுவல் செயல்முறைக்கு மேல் செல்கிறது. இப்போது ஒரு புதிய திட்டத்தைத் தொடங்கி, ‘வெற்று செயல்பாடு’ வார்ப்புருவைத் தேர்வுசெய்கிறீர்கள் என்பதை உறுதிப்படுத்திக் கொள்ளுங்கள். இது ஒரு விளையாட்டு, எனவே விஷயங்களை சிக்கலாக்கும் FAB பொத்தான் போன்ற கூறுகள் உங்களுக்குத் தேவையில்லை.


நீங்கள் செய்ய விரும்பும் முதல் விஷயம் மாற்ற வேண்டும் AppCompatActivity க்கு நடவடிக்கை. இதன் பொருள் நாங்கள் செயல் பட்டி அம்சங்களைப் பயன்படுத்த மாட்டோம்.

இதேபோல், நாங்கள் எங்கள் விளையாட்டை முழுத்திரையாக மாற்ற விரும்புகிறோம். SetContentView () க்கு அழைப்பதற்கு முன் பின்வரும் குறியீட்டை onCreate () இல் சேர்க்கவும்:

getWindow (). setFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); this.requestWindowFeature (Window.FEATURE_NO_TITLE);

நீங்கள் சில குறியீட்டை எழுதி, அது சிவப்பு நிறத்தில் அடிக்கோடிட்டுக் காட்டப்பட்டால், நீங்கள் ஒரு வகுப்பை இறக்குமதி செய்ய வேண்டும் என்று அர்த்தம். வேறு வார்த்தைகளில் கூறுவதானால், நீங்கள் சில அறிக்கைகளைப் பயன்படுத்த விரும்புகிறீர்கள் என்று Android ஸ்டுடியோவிடம் சொல்ல வேண்டும். அடிக்கோடிட்ட வார்த்தையில் நீங்கள் எங்கும் கிளிக் செய்து Alt + Enter ஐ அழுத்தினால், அது உங்களுக்காக தானாகவே செய்யப்படும்!


உங்கள் விளையாட்டு காட்சியை உருவாக்குகிறது

பொத்தான்கள், படங்கள் மற்றும் லேபிள்கள் போன்ற காட்சிகளின் தளவமைப்பை வரையறுக்க எக்ஸ்எம்எல் ஸ்கிரிப்டைப் பயன்படுத்தும் பயன்பாடுகளுக்கு நீங்கள் பயன்படுத்தப்படலாம். இதுதான் வரி setContentView எங்களுக்கு செய்கிறார்.

ஆனால் மீண்டும், இது ஒரு விளையாட்டு, இதற்கு உலாவி சாளரங்கள் அல்லது ஸ்க்ரோலிங் மறுசுழற்சி காட்சிகள் தேவையில்லை. அதற்கு பதிலாக, அதற்கு பதிலாக ஒரு கேன்வாஸைக் காட்ட விரும்புகிறோம். ஆண்ட்ராய்டு ஸ்டுடியோவில் ஒரு கேன்வாஸ் கலையில் உள்ளதைப் போலவே உள்ளது: இது நாம் வரையக்கூடிய ஒரு ஊடகம்.

எனவே படிக்க அந்த வரியை மாற்றவும்:

setContentView (புதிய கேம் வியூ (இது))

இது மீண்டும் சிவப்பு நிறத்தில் அடிக்கோடிட்டுக் காட்டப்படுவதை நீங்கள் காணலாம். ஆனாலும் இப்போது நீங்கள் Alt + Enter ஐ அழுத்தினால், வகுப்பை இறக்குமதி செய்ய உங்களுக்கு விருப்பமில்லை. அதற்கு பதிலாக, உங்களுக்கு விருப்பம் உள்ளது உருவாக்க வகுப்பு. வேறு வார்த்தைகளில் கூறுவதானால், கேன்வாஸில் என்ன நடக்கப் போகிறது என்பதை வரையறுக்கும் எங்கள் சொந்த வகுப்பை உருவாக்க உள்ளோம். இது தான் ஆயத்த காட்சிகளைக் காண்பிப்பதை விட, திரையில் வரைய அனுமதிக்கும்.

எனவே இடதுபுறத்தில் உங்கள் வரிசைக்குள்ளான தொகுப்பு பெயரில் வலது கிளிக் செய்து தேர்வு செய்யவும் புதிய> வகுப்பு. உங்கள் வகுப்பை உருவாக்க உங்களுக்கு இப்போது ஒரு சாளரம் வழங்கப்படும், அதை நீங்கள் அழைக்கப் போகிறீர்கள் GameView. சூப்பர் கிளாஸின் கீழ், எழுதுங்கள்: android.view.SurfaceView அதாவது வர்க்கம் மேற்பரப்புக் காட்சியில் இருந்து முறைகளை - அதன் திறன்களை - பெறும்.

இடைமுகம் (கள்) பெட்டியில், நீங்கள் எழுதுவீர்கள் android.view.SurfaceHolder.Callback. எந்தவொரு வகுப்பையும் போலவே, இப்போது எங்கள் கட்டமைப்பாளரை உருவாக்க வேண்டும். இந்த குறியீட்டைப் பயன்படுத்தவும்:

தனியார் மெயின் த்ரெட் நூல்; பொது கேம் வியூ (சூழல் சூழல்) {சூப்பர் (சூழல்); . GetHolder () addCallback (இந்த); }

ஒவ்வொரு முறையும் ஒரு புதிய பொருளை உருவாக்க எங்கள் வகுப்பு அழைக்கப்படும் (இந்த விஷயத்தில் எங்கள் மேற்பரப்பு), இது கட்டமைப்பாளரை இயக்கும், மேலும் இது ஒரு புதிய மேற்பரப்பை உருவாக்கும். ‘சூப்பர்’ என்ற வரி சூப்பர் கிளாஸை அழைக்கிறது, எங்கள் விஷயத்தில், அது மேற்பரப்பு காட்சி.

கால்பேக்கைச் சேர்ப்பதன் மூலம், நிகழ்வுகளை இடைமறிக்க முடியும்.

இப்போது சில முறைகளை மேலெழுதவும்:

Public பொது வெற்றிட மேற்பரப்பை மாற்றவும் (மேற்பரப்பு ஹோல்டர் வைத்திருப்பவர், முழு வடிவம், முழு அகலம், முழு உயரம்) public public public பொது வெற்றிட மேற்பரப்பை உருவாக்கவும் (மேற்பரப்பு ஹோல்டர் வைத்திருப்பவர்) public public பொது வெற்றிட மேற்பரப்பை மீறவும் (மேற்பரப்பு ஹோல்டர் வைத்திருப்பவர்) {}

இவை அடிப்படையில் சூப்பர் கிளாஸில் (சர்பேஸ் வியூ) முறைகளை மேலெழுத (எனவே பெயர்) அனுமதிக்கின்றன. உங்கள் குறியீட்டில் இப்போது சிவப்பு அடிக்கோடிட்டுக் கொண்டிருக்கக்கூடாது. நைஸ்.

நீங்கள் ஒரு புதிய வகுப்பை உருவாக்கியுள்ளீர்கள், ஒவ்வொரு முறையும் நாங்கள் அதைக் குறிப்பிடும்போது, ​​அது உங்கள் விளையாட்டுக்கு வண்ணம் தீட்ட கேன்வாஸை உருவாக்கும். வகுப்புகள் உருவாக்க பொருள்கள் மற்றும் எங்களுக்கு இன்னும் ஒன்று தேவை.

நூல்களை உருவாக்குதல்

எங்கள் புதிய வகுப்பு அழைக்கப் போகிறது MainThread. அதன் வேலை ஒரு நூலை உருவாக்குவதாக இருக்கும். ஒரு நூல் அடிப்படையில் குறியீட்டின் இணையான முட்கரண்டி போன்றது, இது ஒரே நேரத்தில் இயக்க முடியும் முக்கிய உங்கள் குறியீட்டின் ஒரு பகுதி. நீங்கள் ஒரே நேரத்தில் ஏராளமான நூல்களை இயக்கலாம், இதன்மூலம் கண்டிப்பான வரிசையை கடைபிடிப்பதை விட ஒரே நேரத்தில் விஷயங்கள் நடக்க அனுமதிக்கும். இது ஒரு விளையாட்டுக்கு முக்கியமானது, ஏனென்றால் நிறைய நடந்துகொண்டிருந்தாலும் கூட, அது சீராக இயங்குவதை உறுதி செய்ய வேண்டும்.

நீங்கள் முன்பு செய்ததைப் போலவே உங்கள் புதிய வகுப்பையும் உருவாக்கவும், இந்த முறை அது நீட்டிக்கப் போகிறது நூல். கட்டமைப்பாளரில் நாங்கள் அழைக்கப் போகிறோம் சூப்பர் (). நினைவில் கொள்ளுங்கள், இது சூப்பர் கிளாஸ், இது நூல், இது எங்களுக்கு கனமான தூக்குதல் அனைத்தையும் செய்ய முடியும். இது இப்போது அழைக்கும் உணவுகளை கழுவ ஒரு நிரலை உருவாக்குவது போன்றது துணி துவைக்கும் இயந்திரம்().

இந்த வகுப்பு அழைக்கப்படும்போது, ​​அது ஒரு தனி நூலை உருவாக்கப் போகிறது, இது முக்கிய விஷயத்தின் ஒரு பகுதியாக இயங்கும். அது இருந்து இங்கே எங்கள் கேம் வியூவை உருவாக்க விரும்புகிறோம். அதாவது கேம்வியூ வகுப்பையும் நாங்கள் குறிப்பிட வேண்டும், மேலும் கேன்வாஸைக் கொண்டிருக்கும் சர்ஃபேஸ்ஹோல்டரையும் பயன்படுத்துகிறோம். எனவே கேன்வாஸ் மேற்பரப்பு என்றால், மேற்பரப்பு ஹோல்டர் எளிதானது. கேம்வியூ என்பது அனைத்தையும் ஒன்றாக இணைக்கிறது.

முழு விஷயம் அப்படி இருக்க வேண்டும்:

பொது வகுப்பு மெயின் த்ரெட் நூல் {தனியார் மேற்பரப்பு ஹோல்டர் மேற்பரப்பு ஹோல்டரை நீட்டிக்கிறது; தனிப்பட்ட கேம்வியூ கேம்வியூ; பொது மெயின் த்ரெட் (மேற்பரப்பு ஹோல்டர் மேற்பரப்பு ஹோல்டர், கேம்வியூ கேம் வியூ) {சூப்பர் (); this.surfaceHolder = மேற்பரப்பு ஹோல்டர்; this.gameView = gameView; }}

Schweet. எங்களிடம் இப்போது கேம் வியூ மற்றும் ஒரு நூல் உள்ளது!

விளையாட்டு வளையத்தை உருவாக்குதல்

எங்கள் விளையாட்டை உருவாக்க தேவையான மூலப்பொருட்கள் இப்போது எங்களிடம் உள்ளன, ஆனால் எதுவும் நடக்கவில்லை. விளையாட்டு வளையம் இங்குதான் வருகிறது. அடிப்படையில், இது குறியீட்டின் சுழற்சியாகும், இது சுற்று மற்றும் சுற்று மற்றும் திரையை வரைவதற்கு முன் உள்ளீடுகள் மற்றும் மாறிகளை சரிபார்க்கிறது. எங்கள் நோக்கம் இதை முடிந்தவரை சீரானதாக மாற்றுவதாகும், இதனால் ஃபிரேம்ரேட்டில் எந்த தடுமாற்றங்களும் விக்கல்களும் இல்லை, நான் சிறிது நேரம் கழித்து ஆராய்வேன்.

இப்போதைக்கு, நாங்கள் இன்னும் இருக்கிறோம் MainThread வகுப்பு மற்றும் நாங்கள் சூப்பர் கிளாஸிலிருந்து ஒரு முறையை மேலெழுதப் போகிறோம். இது ஒன்று ரன்.

இது போன்ற ஒரு சிறிய விஷயம் செல்கிறது:

Run இயங்கும் போது பொது வெற்றிட ரன் () ஐ மீறவும் {கேன்வாஸ் = பூஜ்யம்; முயற்சிக்கவும் {canvas = this.surfaceHolder.lockCanvas (); ஒத்திசைக்கப்பட்டது (மேற்பரப்பு ஹோல்டர்) {this.gameView.update (); this.gameView.draw (கேன்வாஸ்); }} பிடிக்கவும் (விதிவிலக்கு இ) {} இறுதியாக {if (கேன்வாஸ்! = பூஜ்யம்) {முயற்சிக்கவும் {surfaceHolder.unlockCanvasAndPost (கேன்வாஸ்); } பிடிக்கவும் (விதிவிலக்கு இ) {e.printStackTrace (); }}}}}

நீங்கள் நிறைய அடிக்கோடிட்டுக் காண்பீர்கள், எனவே நாங்கள் இன்னும் சில மாறிகள் மற்றும் குறிப்புகளைச் சேர்க்க வேண்டும். மேலே திரும்பிச் சேர்க்கவும்:

தனியார் மேற்பரப்பு ஹோல்டர் மேற்பரப்பு ஹோல்டர்; தனிப்பட்ட கேம்வியூ கேம்வியூ; தனியார் பூலியன் இயங்கும்; பொது நிலையான கேன்வாஸ் கேன்வாஸ்;

கேன்வாஸை இறக்குமதி செய்ய நினைவில் கொள்க. கேன்வாஸ் என்பது நாம் உண்மையில் வரைந்து கொண்டிருக்கும் விஷயம். ‘லாக் கேன்வாஸை’ பொறுத்தவரை, இது முக்கியமானது, ஏனென்றால் கேன்வாஸை நாம் அதை வரைய அனுமதிக்க முக்கியமாக உறைகிறது. இது முக்கியமானது, இல்லையெனில், ஒரே நேரத்தில் பல நூல்களை வரைய முயற்சிக்கலாம். கேன்வாஸைத் திருத்த, நீங்கள் முதலில் வேண்டும் என்பதை அறிந்து கொள்ளுங்கள் பூட்டு கேன்வாஸ்.

புதுப்பிப்பு என்பது நாம் உருவாக்கப் போகும் ஒரு முறையாகும், இங்குதான் வேடிக்கையான விஷயங்கள் பின்னர் நடக்கும்.

தி முயற்சி மற்றும் பிடி இதற்கிடையில் ஜாவாவின் தேவைகள், கேன்வாஸ் தயாராக இல்லாவிட்டால் ஏற்படக்கூடிய விதிவிலக்குகளை (பிழைகள்) முயற்சித்து கையாள நாங்கள் தயாராக உள்ளோம் என்பதைக் காட்டுகிறது.

இறுதியாக, நமக்குத் தேவைப்படும்போது எங்கள் நூலைத் தொடங்க முடியும். இதைச் செய்ய, விஷயங்களை இயக்கத்தில் அமைக்க அனுமதிக்கும் மற்றொரு முறை இங்கே நமக்குத் தேவை. அதுதான் இயங்கும் மாறி என்பது (பூலியன் என்பது ஒரு வகை மாறி, அது எப்போதும் உண்மை அல்லது தவறானது என்பதை நினைவில் கொள்க). இந்த முறையைச் சேர்க்கவும் MainThread வர்க்கம்:

public void setRunning (பூலியன் isRunning) {running = isRunning; }

ஆனால் இந்த கட்டத்தில், ஒரு விஷயத்தை இன்னும் முன்னிலைப்படுத்த வேண்டும், அதுதான் மேம்படுத்தல். புதுப்பிப்பு முறையை நாங்கள் இன்னும் உருவாக்கவில்லை என்பதே இதற்குக் காரணம். எனவே மீண்டும் பாப் GameView இப்போது முறையைச் சேர்க்கவும்.

பொது வெற்றிட புதுப்பிப்பு () {}

நாமும் வேண்டும் தொடக்கத்தில் நூல்! இதை நாங்கள் எங்களில் செய்யப் போகிறோம் surfaceCreated முறை:

Public பொது வெற்றிட மேற்பரப்பு உருவாக்கப்பட்டது (மேற்பரப்பு ஹோல்டர் வைத்திருப்பவர்) {thread.setRunning (உண்மை); thread.start (); }

மேற்பரப்பு அழிக்கப்படும் போது நாம் நூலையும் நிறுத்த வேண்டும். நீங்கள் யூகித்திருக்கலாம் எனில், இதை நாங்கள் கையாளுகிறோம் surfaceDestroyed முறை. ஆனால் ஒரு நூலை நிறுத்த உண்மையில் பல முயற்சிகள் எடுக்கக்கூடும் என்பதால், இதை ஒரு வட்டத்திற்குள் வைத்து பயன்படுத்தப் போகிறோம் முயற்சி மற்றும் பிடி மீண்டும். அப்படி:

Public பொது வெற்றிட மேற்பரப்பை மாற்றியமைத்தல் (மேற்பரப்பு ஹோல்டர் வைத்திருப்பவர்) {பூலியன் மீண்டும் முயற்சித்தல் = உண்மை; (மீண்டும் முயற்சிக்கவும்) {try {thread.setRunning (false); thread.join (); } பிடிக்கவும் (குறுக்கீடு எக்ஸ்செப்சன் இ) {e.printStackTrace (); } மீண்டும் முயற்சிக்கவும் = பொய்; }}

இறுதியாக, கட்டமைப்பாளரிடம் சென்று உங்கள் நூலின் புதிய நிகழ்வை உருவாக்குவதை உறுதிசெய்து கொள்ளுங்கள், இல்லையெனில் நீங்கள் பயமுறுத்தும் பூஜ்ய சுட்டிக்காட்டி விதிவிலக்கு பெறுவீர்கள்! பின்னர் நாங்கள் கேம் வியூவை மையப்படுத்தப் போகிறோம், அதாவது நிகழ்வுகளை கையாள முடியும்.

நூல் = புதிய மெயின் த்ரெட் (getHolder (), இது); setFocusable (உண்மை);

இப்பொழுது உன்னால் முடியும் இறுதியாக உண்மையில் இந்த விஷயத்தை சோதிக்கவும்! அது சரி, ரன் என்பதைக் கிளிக் செய்து, அது வேண்டுமா உண்மையில் எந்த பிழையும் இல்லாமல் இயங்கும். அடித்துச் செல்லத் தயாராகுங்கள்!

இது… அது… வெற்றுத் திரை! அந்த குறியீடு அனைத்தும். வெற்றுத் திரைக்கு. ஆனால், இது ஒரு வெற்றுத் திரை வாய்ப்பு. நிகழ்வுகளைக் கையாள உங்கள் மேற்பரப்பை உயர்த்தியதோடு, விளையாட்டு வளையத்துடன் இயங்குகிறீர்கள். இப்போது எஞ்சியிருப்பது விஷயங்களைச் செய்ய வைக்கிறது. இது வரை டுடோரியலில் உள்ள அனைத்தையும் நீங்கள் பின்பற்றவில்லையென்றாலும் பரவாயில்லை. புள்ளி என்னவென்றால், புகழ்பெற்ற விளையாட்டுகளை உருவாக்க இந்த குறியீட்டை மறுசுழற்சி செய்யலாம்!

கிராபிக்ஸ் செய்வது

சரி, இப்போது நம்மிடம் ஒரு வெற்றுத் திரை உள்ளது, அதை நாம் வரைய வேண்டும். அதிர்ஷ்டவசமாக, இது எளிய பகுதியாகும். நீங்கள் செய்ய வேண்டியது எல்லாம் டிரா முறையை மேலெழுத வேண்டும் GameView வகுப்பிற்குப் பிறகு சில அழகான படங்களைச் சேர்க்கவும்:

Public ஓவர்ரைடு பொது வெற்றிட டிரா (கேன்வாஸ் கேன்வாஸ்) {super.draw (கேன்வாஸ்); if (கேன்வாஸ்! = பூஜ்யம்) {canvas.drawColor (Color.WHITE); பெயிண்ட் பெயிண்ட் = புதிய பெயிண்ட் (); பெயிண்ட்.செட் கலர் (Color.rgb (250, 0, 0%); canvas.drawRect (100, 100, 200, 200, பெயிண்ட்); }}

இதை இயக்கவும், இப்போது வெள்ளை திரையின் மேல் இடதுபுறத்தில் அழகான சிவப்பு சதுரம் இருக்க வேண்டும். இது நிச்சயமாக ஒரு முன்னேற்றம்.

இந்த முறைக்குள் (மற்றும் மேலெழுதும்) ஒட்டுவதன் மூலம் உங்கள் முழு விளையாட்டையும் கோட்பாட்டளவில் உருவாக்கலாம் onTouchEvent உள்ளீட்டைக் கையாள) ஆனால் விஷயங்களைப் பற்றிப் பேச இது ஒரு நல்ல வழியாக இருக்காது. எங்கள் வளையத்திற்குள் புதிய பெயிண்ட் வைப்பது விஷயங்களை கணிசமாகக் குறைக்கும், இதை நாம் வேறு இடத்தில் வைத்தாலும், அதிக குறியீட்டைச் சேர்ப்போம் வரைய முறை அசிங்கமான மற்றும் பின்பற்ற கடினமாக இருக்கும்.

அதற்கு பதிலாக, விளையாட்டு பொருள்களை அவற்றின் சொந்த வகுப்புகளுடன் கையாள இது மிகவும் அர்த்தமுள்ளதாக இருக்கிறது. ஒரு பாத்திரத்தைக் காட்டும் ஒன்றைத் தொடங்குவோம், இந்த வகுப்பு அழைக்கப்படும் CharacterSprite. மேலே சென்று அதை உருவாக்குங்கள்.

இந்த வகுப்பு கேன்வாஸில் ஒரு மனிதனை வரையப் போகிறது, அது போல் இருக்கும்

பொது வகுப்பு கேரக்டர்ஸ்பிரைட் {தனியார் பிட்மேப் படம்; public CharacterSprite (பிட்மேப் bmp) {image = bmp; } பொது வெற்றிட டிரா (கேன்வாஸ் கேன்வாஸ்) {canvas.drawBitmap (படம், 100, 100, பூஜ்யம்); }}

இப்போது இதைப் பயன்படுத்த, நீங்கள் முதலில் பிட்மாப்பை ஏற்ற வேண்டும், பின்னர் வகுப்பை அழைக்க வேண்டும் GameView. ஒரு குறிப்பைச் சேர்க்கவும் தனிப்பட்ட கேரக்டர்ஸ்பிரைட் கேரக்டர்ஸ்பிரைட் பின்னர் surfaceCreated முறை, வரியைச் சேர்க்கவும்:

characterSprite = புதிய கேரக்டர்ஸ்பிரைட் (BitmapFactory.decodeResource (getResources (), R.drawable.avdgreen));

நீங்கள் பார்க்கிறபடி, நாங்கள் ஏற்றும் பிட்மேப் வளங்களில் சேமிக்கப்படுகிறது, இது avdgreen என அழைக்கப்படுகிறது (இது முந்தைய விளையாட்டிலிருந்து வந்தது). இப்போது நீங்கள் செய்ய வேண்டியது அந்த பிட்மாப்பை புதிய வகுப்பிற்கு அனுப்ப வேண்டும் வரைய உடன் முறை:

characterSprite.draw (கேன்வாஸ்);

இப்போது ரன் என்பதைக் கிளிக் செய்து, உங்கள் திரையில் உங்கள் கிராஃபிக் தோன்றுவதைக் காண வேண்டும்! இது பீபூ. எனது பள்ளி பாடப்புத்தகங்களில் அவரை வரைவது வழக்கம்.

இந்த சிறிய பையனை நகர்த்த நாம் விரும்பினால் என்ன செய்வது? எளிமையானது: நாம் அவரது நிலைகளுக்கு x மற்றும் y மாறிகள் உருவாக்கி, பின்னர் இந்த மதிப்புகளை ஒரு மேம்படுத்தல் முறை.

எனவே உங்கள் குறிப்புகளைச் சேர்க்கவும் CharacterSprite பின்னர் உங்கள் பிட்மாப்பை வரையவும் x, y. புதுப்பிப்பு முறையை இங்கே உருவாக்கவும், இப்போது நாங்கள் முயற்சிக்கப் போகிறோம்:

ஒய் ++;

ஒவ்வொரு முறையும் கேம் லூப் இயங்கும் போது, ​​நாங்கள் பாத்திரத்தை திரையில் நகர்த்துவோம். நினைவில் ஒய் ஆயத்தொகுப்புகள் மேலே இருந்து அளவிடப்படுகின்றன 0 திரையின் மேற்பகுதி. நிச்சயமாக நாம் அழைக்க வேண்டும் மேம்படுத்தல் முறை CharacterSprite இருந்து மேம்படுத்தல் முறை GameView.

மீண்டும் விளையாட்டை அழுத்தவும், இப்போது உங்கள் படம் மெதுவாக திரையில் இருப்பதைக் காண்பீர்கள். நாங்கள் இதுவரை எந்த விளையாட்டு விருதுகளையும் வெல்லவில்லை, ஆனால் இது ஒரு தொடக்கமாகும்!

சரி, பொருட்களை உருவாக்க சற்று மிகவும் சுவாரஸ்யமானது, நான் இங்கே சில ‘பவுன்சி பந்து’ குறியீட்டை கைவிடப் போகிறேன். இது பழைய விண்டோஸ் ஸ்கிரீன்சேவர்களைப் போலவே விளிம்புகளிலிருந்து திரையில் எங்கள் கிராஃபிக் பவுன்ஸ் செய்யும். உங்களுக்கு தெரியும், வித்தியாசமாக ஹிப்னாடிக்.

பொது வெற்றிட புதுப்பிப்பு () {x + = xVelocity; y + = yVelocity; if ((x & gt; screenWidth - image.getWidth ()) || (x & lt; 0)) {xVelocity = xVelocity * -1; } if ((y & gt; screenHeight - image.getHeight ()) || (y & lt; 0)) {yVelocity = yVelocity * -1; }}

இந்த மாறிகளையும் நீங்கள் வரையறுக்க வேண்டும்:

தனியார் எண்ணாக xVelocity = 10; தனியார் எண்ணாக yVelocity = 5; private int screenWidth = Resources.getSystem (). getDisplayMetrics (). அகல பிக்சல்கள்; private int screenHeight = Resources.getSystem (). getDisplayMetrics (). heightPixels;

உகப்பாக்கம்

அங்கு உள்ளது நிறைய பிளேயர் உள்ளீட்டைக் கையாளுதல், படங்களை அளவிடுதல், திரையில் ஒரே நேரத்தில் நகரும் ஏராளமான எழுத்துக்களை நிர்வகிப்பது வரை இங்கு ஆராய்வதற்கு மேலும் பல. இப்போது, ​​கதாபாத்திரம் துள்ளிக் கொண்டிருக்கிறது, ஆனால் நீங்கள் மிக நெருக்கமாகப் பார்த்தால் லேசான தடுமாற்றம் இருக்கிறது. இது பயங்கரமானது அல்ல, ஆனால் அதை நீங்கள் நிர்வாணக் கண்ணால் பார்க்க முடியும் என்பது ஒரு எச்சரிக்கை அறிகுறியாகும். இயற்பியல் சாதனத்துடன் ஒப்பிடும்போது எமுலேட்டரில் வேகம் நிறைய மாறுபடும். இப்போது நீங்கள் என்ன நடக்கும் என்று கற்பனை செய்து பாருங்கள் டன் ஒரே நேரத்தில் திரையில் நடக்கிறது!

இந்த பிரச்சினைக்கு சில தீர்வுகள் உள்ளன. தொடங்குவதற்கு நான் என்ன செய்ய விரும்புகிறேன், ஒரு தனிப்பட்ட முழு எண்ணை உருவாக்குவது MainThread அதை அழைக்கவும் targetFPS. இதன் மதிப்பு 60 ஆக இருக்கும்.எனது விளையாட்டை இந்த வேகத்தில் இயக்க முயற்சிக்கிறேன், இதற்கிடையில், அது இருக்கிறதா என்று சரிபார்க்கிறேன். அதற்காக, நான் ஒரு தனியார் இரட்டையர் வேண்டும் averageFPS.

நான் புதுப்பிக்கப் போகிறேன் ரன் ஒவ்வொரு விளையாட்டு வளையத்திற்கும் எவ்வளவு நேரம் ஆகும் என்பதை அளவிடுவதற்கான முறை இடைநிறுத்தம் இலக்கு எஃப்.பி.எஸ்ஸை விட தற்காலிகமாக இருந்தால் அந்த விளையாட்டு வளையம் தற்காலிகமாக இருக்கும். அது எவ்வளவு காலம் என்பதைக் கணக்கிடப் போகிறோம் இப்போது எடுத்து அதை அச்சிடுங்கள், எனவே அதை பதிவில் காணலாம்.

Public பொது வெற்றிடத்தை இயக்கவும் () {நீண்ட தொடக்க நேரம்; நீண்ட நேரம் மில்லிஸ்; நீண்ட காத்திருப்பு நேரம்; நீண்ட மொத்த நேரம் = 0; int frameCount = 0; நீண்ட இலக்கு டைம் = 1000 / இலக்கு எஃப்.பி.எஸ்; (இயங்கும் போது) {startTime = System.nanoTime (); canvas = பூஜ்யம்; முயற்சிக்கவும் {canvas = this.surfaceHolder.lockCanvas (); ஒத்திசைக்கப்பட்டது (மேற்பரப்பு ஹோல்டர்) {this.gameView.update (); this.gameView.draw (கேன்வாஸ்); }} பிடிக்கவும் (விதிவிலக்கு இ) {} இறுதியாக {if (கேன்வாஸ்! = பூஜ்யம்) {முயற்சிக்கவும் {surfaceHolder.unlockCanvasAndPost (கேன்வாஸ்); } பிடிக்கவும் (விதிவிலக்கு இ) {e.printStackTrace (); M}} timeMillis = (System.nanoTime () - startTime) / 1000000; waitTime = targetTime - timeMillis; முயற்சிக்கவும் {this.sleep (waitTime); } பிடிக்கவும் (விதிவிலக்கு இ) {} totalTime + = System.nanoTime () - தொடக்க நேரம்; frameCount ++; if (frameCount == targetFPS) {averageFPS = 1000 / ((totalTime / frameCount) / 1000000); frameCount = 0; மொத்த நேரம் = 0; System.out.println (averageFPS); }}}

இப்போது எங்கள் விளையாட்டு இது FPS ஐ 60 ஆக பூட்ட முயற்சிக்கிறது, மேலும் இது பொதுவாக நவீன சாதனத்தில் 58-62 FPS ஐ மிகவும் நிலையானதாக அளவிடும் என்பதை நீங்கள் கண்டறிய வேண்டும். முன்மாதிரியில் நீங்கள் வேறு முடிவைப் பெறலாம்.

அந்த 60 முதல் 30 ஐ மாற்ற முயற்சிக்கவும், என்ன நடக்கிறது என்று பாருங்கள். விளையாட்டு குறைகிறது மற்றும் அது வேண்டுமா இப்போது உங்கள் லோகேட்டில் 30 ஐப் படியுங்கள்.

எண்ணங்களை மூடுவது

செயல்திறனை மேம்படுத்தவும் நாம் செய்யக்கூடிய வேறு சில விஷயங்கள் உள்ளன. இந்த விஷயத்தில் ஒரு சிறந்த வலைப்பதிவு இடுகை இங்கே உள்ளது. வர்ணத்தின் உள்ளே பெயிண்ட் அல்லது பிட்மாப்களின் புதிய நிகழ்வுகளை உருவாக்குவதிலிருந்து விலகி, எல்லாவற்றையும் துவக்க முயற்சிக்கவும் வெளியே விளையாட்டு தொடங்குவதற்கு முன்.

அடுத்த வெற்றிகரமான Android விளையாட்டை உருவாக்க நீங்கள் திட்டமிட்டால், அங்கே உள்ளன நிச்சயமாக இந்த நாட்களில் அதைப் பற்றி எளிதான மற்றும் திறமையான வழிகள். ஆனால் ஒரு கேன்வாஸில் வரைவதற்கு நிச்சயமாக இன்னும் பயன்படுத்தக்கூடிய சூழ்நிலைகள் உள்ளன, மேலும் இது உங்கள் திறமைக்குச் சேர்க்க மிகவும் பயனுள்ள திறமையாகும். இந்த வழிகாட்டி ஓரளவு உதவியது என்று நம்புகிறேன், மேலும் உங்கள் வரவிருக்கும் குறியீட்டு முயற்சிகளில் உங்களுக்கு வாழ்த்துக்கள்!

அடுத்ததுஜாவாவுக்கு ஒரு தொடக்க வழிகாட்டி

ஐ.எஃப்.ஏ 2019 இல் புதிய அச்சகங்களை அமேசான் ஸ்மார்ட் பொழுதுபோக்கு தயாரிப்புகளின் வகைப்படுத்தலை வெளியிட்டுள்ளது. தேர்வில் ஃபயர் டிவி பதிப்பு ஸ்மார்ட் டிவிகளுக்கான புதிய கூட்டாண்மை, ஐரோப்பா மற்றும் வட அம...

புதுப்பிப்பு, பிப்ரவரி 28, 2019 (12:38 பிற்பகல் ET): நீங்கள் Google I / O 2019 க்கு விண்ணப்பிக்க விரும்பினால், நேற்று பிற்பகல் பயன்பாட்டு சாளரம் மூடப்பட்டதால் உங்களுக்கு அதிர்ஷ்டம் இல்லை. நீங்கள் விண்...

எங்கள் வெளியீடுகள்