ዝርዝር ሁኔታ:

የእራስዎን ፕሮግራም 2048 ጨዋታ ወ/ጃቫ !: 8 ደረጃዎች
የእራስዎን ፕሮግራም 2048 ጨዋታ ወ/ጃቫ !: 8 ደረጃዎች

ቪዲዮ: የእራስዎን ፕሮግራም 2048 ጨዋታ ወ/ጃቫ !: 8 ደረጃዎች

ቪዲዮ: የእራስዎን ፕሮግራም 2048 ጨዋታ ወ/ጃቫ !: 8 ደረጃዎች
ቪዲዮ: ድግምት ወይም መተት እንደተደረገብን በምን እናውቃለን ? ምልክቶቹ ምንድናቸው?Kana TV/EBS TVቀሲስ ሄኖክ ወማርያም Kesis Henok Weldemariam 2024, ሀምሌ
Anonim

በ PranP1My (ያልተሟላ) SiteFollow ተጨማሪ በደራሲው

አርዱዲኖ ሲኤንሲ ማሽን ከተዳኑ ፒሲ ክፍሎች
አርዱዲኖ ሲኤንሲ ማሽን ከተዳኑ ፒሲ ክፍሎች
አርዱዲኖ ሲኤንሲ ማሽን ከተዳኑ ፒሲ ክፍሎች
አርዱዲኖ ሲኤንሲ ማሽን ከተዳኑ ፒሲ ክፍሎች
DIY ዘመናዊ የእንጨት አግዳሚ ወንበሮች
DIY ዘመናዊ የእንጨት አግዳሚ ወንበሮች
DIY ዘመናዊ የእንጨት አግዳሚ ወንበሮች
DIY ዘመናዊ የእንጨት አግዳሚ ወንበሮች
እውቂያ የሌለው በር መክፈቻ (vSTEM)
እውቂያ የሌለው በር መክፈቻ (vSTEM)
እውቂያ የሌለው በር መክፈቻ (vSTEM)
እውቂያ የሌለው በር መክፈቻ (vSTEM)

እኔ ጨዋታውን እወዳለሁ 2048. እና ስለዚህ የራሴን ስሪት ፕሮግራም ለማድረግ ወሰንኩ።

እሱ ከእውነተኛው ጨዋታ ጋር በጣም ይመሳሰላል ፣ ግን እሱ ራሱ ማቀናበር በፈለግኩበት ጊዜ የፈለግኩትን ለመለወጥ ነፃነት ይሰጠኛል። ከተለመደው 4x4 ይልቅ 5x5 ጨዋታ ከፈለግሁ ፣ ‹የቦርድ› ገንቢውን በመጠቀም ቀላል ለውጥ እንድፈቅድልኝ ይፈቅድልኛል። በዘፈቀደ ሳይሆን ለተጫዋቹ በጣም የተወሳሰበ በሚያደርጋቸው ቦታዎች ላይ ቁርጥራጮችን በመጨመር ጨዋታውን የበለጠ ከባድ ማድረግ እፈልጋለሁ በሉ። ቀለል ያለ ስልተ ቀመር በመጠቀም እኔ ያንን ማድረግ እችላለሁ። በዚህ አስተማሪ ውስጥ እነዚህን ሁሉ ማሻሻያዎች ባልሸፍንም ፣ እኔ ስሄድ ብዙ ለመጨመር እቅድ አለኝ።

ለአሁን ግን የ 2048 ን የተለመደ ጨዋታዎን እናቀርባለን።

እንጀምር!

(የጎን ማስታወሻ - ይህ አስተማሪ የፕሮግራም መጠነኛ ዕውቀትን ይጠይቃል - በተለይ ከጃቫ ጋር)

ደረጃ 1: ቁሳቁሶች

ቁሳቁሶች
ቁሳቁሶች

የፕሮግራም አቀራረብ ብቻ ስለሆነ ለዚህ ፕሮጀክት ብዙ አያስፈልግዎትም።

ቁሳቁሶች

  • ላፕቶፕ
  • ግርዶሽ (ወይም የመረጡት ማንኛውም IDE)

አዎን. ይሀው ነው.

ደረጃ 2 - ፕሮግራሙን ይወቁ - ቦርድ

በ GitHub ላይ ሁሉንም ኮዴን ሰቅዬያለሁ - እዚህ ይመልከቱት

ጨዋታውን በ 3 ክፍሎች ከፍዬዋለሁ - ቦርድ ፣ ሰድር እና ጨዋታ።

ቦርድ ፦

መግለጫ - የቦርዱ ክፍል ከጨዋታ ሰሌዳ ጋር ይገናኛል ፣ የ ‹ሰድር› ንጥረ ነገሮችን ድርድር ያዘጋጃል ፣ የአሁኑን ውጤት እና ከፍተኛውን ሰድር ያግኙ ፣ እና ድርድርን በሕብረቁምፊ ውስጥ ያስቀምጣል (በኋላ ላይ በ ‹ጨዋታ› ውስጥ ጥቅም ላይ ይውላል)። አብዛኛው አመክንዮ እዚህ አለ ፣ ክፍሉ በዘፈቀደ ቦታዎች 2 እና 4 ን ለመራባት ዘዴዎችን ይሰጣል ፣ ወደ ላይ ፣ ወደ ታች ፣ ወደ ግራ እና ወደ ቀኝ መንቀሳቀስ እና ጨዋታው ሲያልቅ ተጫዋቾችን ማሳወቅ።

ግንበኞች:

/ * ለቦርዱ ነባሪ ገንቢ - 4x4 ማትሪክስ ያዘጋጃል */

የህዝብ ቦርድ () {…}

/ * ለቦርዱ ገንቢ - ከተጠቀሰው የፍርግርግ መጠን ጋር ማትሪክስ ያዘጋጃል */

የሕዝብ ቦርድ (int grids) {…}

ዘዴዎች:

/ * ቦርዱን የሚመልስ የጌተር ዘዴ */

ይፋዊ ሰድር getBoard () {…}

/ * ውጤቱን የሚመልስ የጌተር ዘዴ */

public int getScore () {…}

/ * በቦርዱ ላይ ያለውን ከፍተኛ ሰድር አግኝቶ ይመልሰዋል */

public int getHighTile () {…}

/ * ሰሌዳውን በኮንሶል ላይ ያትማል - ለሙከራ ዓላማዎች */

ይፋዊ ባዶ ህትመት () {…}

/ * ሰሌዳውን እንደ ሕብረቁምፊ ይመልሳል - በ GUI ውስጥ ጥቅም ላይ ውሏል */

public String toString () {…}

/ * እንቅስቃሴ በሚደረግበት ጊዜ 2 (ወይም 4) ባዶ ቦታ ላይ ይወልዳል/

የህዝብ ባዶ ቦታ () {…}

/ * ቦርዱ ሙሉ በሙሉ የጠቆረ መሆኑን እና እሱ ካለ ተጫዋቾቹን እንደገና እንዲጀምሩ ያደርጋቸዋል */

ይፋዊ ቡሊያን ጥቁር መውጫ () {…}

/ * ጨዋታው ካለቀ ለማየት ይፈትሻል - ቦርዱ ሲጨልም እና አንዳቸውም ሰቆች ማዋሃድ አይችሉም/

ይፋዊ ቡሊያን ጨዋታ () {…}

/ * 'W' ወይም ወደ ላይ ቀስት ሲጫን ተጠርቷል - በቦርዱ ላይ ላለው እያንዳንዱ ሰድር '' '' '' '/' '' '' '' '' '' '

የህዝብ ባዶነት () {…}

/ * የ ‹ወይም› ቀስት ሲጫን ተጠርቷል - በቦርዱ ላይ ላሉት እያንዳንዱ ሰድር ‹ቁልቁል› */የሕዝብ ባዶነት () {…}

/ * 'D' ወይም የቀስት ቀስት ሲጫን ተጠርቷል - በቦርዱ ላይ ላሉት እያንዳንዱ ንጣፍ 'horizontalMove' ን 'ግቤት' * */የህዝብ ባዶ መብት () {…}

/ * 'ሀ' ወይም የግራ ቀስት ሲጫን ተጠርቷል - በቦርዱ ላይ ላሉት እያንዳንዱ ሰድር 'ግራ' * '' ''/'' ''

የህዝብ ባዶ ባዶ () {…}

/* የሁለት ሰድር እሴቶችን በአንድነት ያወዳድራል እና ተመሳሳይ ከሆኑ ወይም አንዱ ከ 0 (ተራ ሰድር) ጋር እኩል ከሆነ - እሴቶቻቸው ተጨምረዋል (የምናወዳድራቸው ሰቆች ሁለት የተለያዩ ሰቆች እና ወደ ተገቢው አቅጣጫ እየሄዱ ከሆነ) - በተከታታይ ረድፍ ውስጥ//

ይፋዊ ባዶ አግድም አግድም (int row ፣ int col ፣ String direction) {…}

/* የሁለት ሰድር እሴቶችን በአንድነት ያወዳድራል እና ተመሳሳይ ከሆኑ ወይም አንዱ ከ 0 (ተራ ሰድር) ጋር እኩል ከሆነ - እሴቶቻቸው ተጨምረዋል (የምናወዳድራቸው ሰቆች ሁለት የተለያዩ ሰቆች እና ወደ ተገቢው አቅጣጫ እየሄዱ ከሆነ) - በአዕማዱ ውስጥ */ በተደጋጋሚ ይንቀሳቀሳል

ይፋዊ ባዶነት verticalMove (int ረድፍ ፣ int col ፣ String direction) {…}

አዎ ፣ ያ ብዙ ዘዴዎች ነው - ግን አይጨነቁ ፣ አብዛኛዎቹ ለመረዳት በጣም ቀላል ናቸው። በዚያ ላይ የ ‹ቦርድ› ክፍል በጣም የተወሳሰበ ነው ፣ ስለዚህ ከዚህ በኋላ ሁሉም ነገር በአንፃራዊነት ቀላል ይሆናል።

ደረጃ 3 - ፕሮግራሙን ይወቁ - ሰድር

ሰድር

መግለጫ - የሰድር ክፍል ከግለሰቦች ሰቆች ጋር ይሠራል ፣ እና ከሁሉም ክፍሎች በጣም ትንሹ ነው። እያንዳንዱ ሰድር ኢንቲጀር እሴት እና ቀለም አለው። እሴት 0 (ነባሪ) ወይም እሴት #ን የሚፈጥሩ ሁለት ገንቢዎች አሉት። ዘዴዎቹ በአብዛኛው እራሳቸውን የሚገልጹ ናቸው ፣ በ ‹getter› እና ‹setter› ዘዴዎች ከጠቅላላው ብዙ።

ግንበኞች:

/ * በ 0 */እሴት መሰረታዊ ሰድር ይገነባል

ይፋዊ ሰድር () {…}

/ * የቁጥር እሴት ያለው ሰድር ይገነባል */

ይፋዊ ሰድር (int ቁጥር) {…}

ዘዴዎች:

/ * የሰድር ዋጋን ያገኛል */

public int getValue () {…}

/ * የሰድር ዋጋን ያዘጋጃል - ሁለት ንጣፎችን አንድ ላይ ሲጨምሩ ጥቅም ላይ ይውላል */

የሕዝብ ባዶነት ስብስብ እሴት (int እሴት) {…}

/ * ሰድርን እንደ ሕብረቁምፊ ይወክላል - በ GUI ውስጥ ጥቅም ላይ ውሏል */

public String toString () {…}

/ * የሰድርውን ቀለም በእሴቱ መሠረት ያዘጋጃል */

የህዝብ ባዶነት setColor () {…}

/ * የሰድርን ቀለም ያገኛል */

የህዝብ ባዶነት getColor () {…}

ደረጃ 4 - ፕሮግራሙን ይወቁ - ጨዋታ

ጨዋታ

መግለጫ -የጨዋታ ክፍሉ ዋናው ዘዴ ፣ አብዛኛዎቹ የ GUI ዘዴዎች እና የቁልፍ ግንኙነቶች። እሱ የሰድር እና የቦርድ ትምህርቶችን ሁለቱንም ይወስዳል ፣ እና አብረው እንዲሠሩ ያስችላቸዋል።

ግንበኞች:

የለም

ዘዴዎች:

/ * GUI ን በተገቢው መጠኖች ያዋቅራል እና ቁልፍ አድማጭ ያክላል */

ይፋዊ የማይንቀሳቀስ ባዶነት ስብስብUpGUI () {…}

/ * ዋሽ ወይም የቀስት ቁልፎች ተጭነው ተገቢ እርምጃዎችን እንደሚፈፅሙ ለማየት ይፈትሻል - በእያንዳንዱ እንቅስቃሴ * JFrame ን ያዘምናል */

የህዝብ ባዶነት ቁልፍ ተጭኗል (KeyEvent e) {…}

/ * GUI ን በተከታታይ ሕብረቁምፊዎች ፣ ሰሌዳ ፣ ሰቆች ይቀባል እና ጨዋታው ሲያልቅ እንደገና መቀባቱን ያረጋግጣል */

የህዝብ ባዶነት ቀለም (ግራፊክስ ሰ) {…}

/ * አንድ ግለሰብ ሰድር ይሳላል - ከቀለም ዘዴ ተጠርቷል */

ይፋዊ ባዶነት ስዕሎች (ግራፊክስ g ፣ የሰድር ሰድር ፣ int x ፣ int y) {…}

/ * ዋናው ዘዴ - GUI ን ያዋቅራል እና ጨዋታውን ይጀምራል/

ይፋዊ የማይንቀሳቀስ ባዶ ባዶ (ሕብረቁምፊ args) {…}

ደረጃ 5 አስፈላጊ ዘዴዎች - እንቅስቃሴ

የእንቅስቃሴ ዘዴዎች ለመረዳት በጣም አስፈላጊ ናቸው ፣ ግን መልካም ዜናው አንዴ አቀባዊ እንቅስቃሴዎችን ከተረዱ በኋላ ያንን ግንዛቤ ወደ አግድም እንቅስቃሴዎች መተግበር ይችላሉ። እንደ እውነቱ ከሆነ ፣ ሦስቱ አቀባዊ የመንቀሳቀስ ዘዴዎች ልክ እንደ ሦስቱ አግድም ዘዴ እንቅስቃሴዎች አንድ ናቸው ፣ አንደኛው በመደዳዎች ላይ ሌላኛው በአምዶች ላይ ካልተዘዋወረ በስተቀር። በዚህ ምክንያት ፣ በአቀባዊ የመንቀሳቀስ ዘዴዎች ላይ ብቻ እናተኩር።

የግል ባዶ ቀጥ ያለ አንቀሳቅስ (int ረድፍ ፣ int col ፣ String direction)

{የሰድር መጀመሪያ = ሰሌዳ [ድንበር] [col]; የሰድር ማወዳደር = ሰሌዳ [ረድፍ] [col]; ከሆነ (initial.getValue () == 0 || initial.getValue () == Compa.getValue ()) {ከሆነ (ረድፍ> ድንበር || (direction.equals ("down") && (ረድፍ <border))) {int addScore = initial.getValue () + Compa.getValue (); ከሆነ (initial.getValue ()! = 0) {score += addScore; } initial.setValue (addScore); Compa.setValue (0); }} ሌላ {ከሆነ (direction.equals ("down")) {border--; } ሌላ {ድንበር ++; } verticalMove (ረድፍ ፣ ኮል ፣ አቅጣጫ); }}

ከላይ የተጠቀሰው ዘዴ ፣ አቀባዊ ሞቭ ፣ በ ‹ላይ› እና ‹ታች› ዘዴዎች ይጠራል። የ “ወደላይ” ዘዴን እንመልከት።

የህዝብ ባዶነት ()

{ለ (int i = 0; i <grids; i ++) {border = 0; ለ (int j = 0; j <grids; j ++) {ከሆነ (ሰሌዳ [j] .getValue ()! = 0) {ከሆነ (ድንበር <= j) {verticalMove (j ፣ i ፣ “up”); }}}}}

ይህ ዘዴ በጠቅላላው ቦርድ ውስጥ ያልፋል እና ልኬቱ “ወደ ላይ” ላለው ለእያንዳንዱ ንጣፍ verticalMove ብሎ ይጠራል። verticalMove ከዚያ ሰቅሉን በአቀማመጥ 'j' እና 'i' ላይ ካለው ንጣፍ 'ድንበር' እና 'i' ጋር ያወዳድራል። ሁለቱ እኩል ከሆኑ ተጣምረዋል። እነሱ ከሌሉ ፣ የድንበሩ ሰድር በ 1 ጨምሯል (በቦታው ላይ ያለው መመዘኛ ‹ከፍ› ስለሆነ) ፣ እና አቀባዊ ሞቭ እንደገና ተጠርቷል።

የሚመከር: