Агуулгын хүснэгт:
- Алхам 1: Материал
- Алхам 2: Хөтөлбөртэй танилцана уу
- Алхам 3: Хөтөлбөртэй танилцана уу - Хавтан
- Алхам 4: Хөтөлбөртэй танилцах - Тоглоом
- Алхам 5: Чухал арга - Хөдөлгөөн
Видео: Java 2048 тоглоомыг өөрийн гараар програмчлах: Java: 8 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:00
By PranP1My (Бүрэн бус) SiteFollow Зохиогчийн дэлгэрэнгүй:
Би 2048 тоглоомд дуртай. Тэгээд би өөрийнхөө хувилбарыг програмчлахаар шийдсэн.
Энэ нь бодит тоглоомтой маш төстэй боловч өөрөө програмчлах нь надад хүссэн бүхнээ хүссэн үедээ өөрчлөх эрх чөлөөг өгдөг. Хэрэв би ердийн 4x4 -ийн оронд 5х5 хэмжээтэй тоглоом хүсч байвал 'Board' конструктор ашиглан хийсэн энгийн өөрчлөлт надад үүнийг хийх боломжийг олгоно. Тоглоомыг санамсаргүй байдлаар биш харин тоглогчийн хувьд хамгийн төвөгтэй болгоно. Энгийн алгоритмыг ашиглан би үүнийг хийж чадна. Энэхүү зааварчилгаанд би эдгээр бүх өөрчлөлтийг хамруулахгүй ч гэсэн би явж байхдаа нэмж оруулахаар төлөвлөж байна.
Гэхдээ одоогоор бид таны ердийн тоглоом болох 2048 оныг програмчлах болно.
Эхэлцгээе!
(Хажуугийн тэмдэглэл: Энэхүү зааварчилгаа нь програмчлалын талаар дунд зэргийн мэдлэг шаарддаг - ялангуяа Java дээр)
Алхам 1: Материал
Энэ төслийн хувьд танд маш их зүйл хэрэггүй болно, учир нь энэ бол зүгээр л програмчлалын алхам юм.
Материал:
- Зөөврийн компьютер
- Eclipse (эсвэл таны хүссэн IDE)
Тийм ээ. Ингээд л боллоо.
Алхам 2: Хөтөлбөртэй танилцана уу
Би бүх кодоо GitHub дээр байршуулсан - эндээс үзээрэй:
Би тоглоомыг самбар, хавтан, тоглоом гэсэн 3 ангилалд хуваасан.
Удирдах зөвлөл:
Тайлбар: Удирдах зөвлөлийн анги нь тоглоомын самбар, 'Хавтан' элементүүдийн массивыг тохируулах, одоогийн оноо, хамгийн өндөр хавтанг авах, массивыг мөрөнд оруулах (дараа нь 'Тоглоом' хэсэгт ашиглах болно). Ихэнх логикууд энд байдаг бөгөөд 2, 4 -ийг санамсаргүй байдлаар байрлуулах, дээш, доош, зүүн, баруун тийш шилжүүлэх, тоглоом дуусах үед тоглогчдод мэдэгдэх аргуудыг өгдөг анги юм.
Барилгачид:
/ * Удирдах зөвлөлийн үндсэн бүтээгч - 4х4 хэмжээтэй матрицыг тохируулдаг */
олон нийтийн зөвлөл () {…}
/ * Удирдах зөвлөлд зориулсан конструктор - заасан торны хэмжээтэй матрицыг тохируулна */
олон нийтийн зөвлөл (int grids) {…}
Аргууд:
/ * Самбарыг буцаах Getter арга */
нийтийн хавтан getBoard () {…}
/ * Оноог буцаах Getter арга */
public int getScore () {…}
/ * Самбар дээрх хамгийн өндөр хавтанг олоод буцааж өгнө */
public int getHighTile () {…}
/ * Туршилтын зорилгоор самбарыг консол дээр хэвлэнэ */
нийтийн хоосон хэвлэх () {…}
/ * Самбарыг String хэлбэрээр буцаана - GUI -д ашиглагдана */
public String toString () {…}
/ * Хөдлөх үед хоосон орон зайд 2 (эсвэл 4) үржүүлдэг */
нийтийн хоосон төрөлт () {…}
/ * Самбар бүрэн харанхуй болсон эсэхийг шалгадаг бөгөөд хэрэв тийм бол тоглогчдыг дахин эхлүүлэхэд түлхэц өгөх болно */
public boolean blackOut () {…}
/ * Тоглоом дууссан эсэхийг шалгана - самбарыг харлуулж, хавтангуудын аль нь ч нэгтгэж чадахгүй бол */
нийтийн логик тоглоомOver () {…}
/ * 'W' эсвэл дээш сум дарагдсан үед дууддаг - 'up' параметртэй самбар дээрх хавтан бүрийн хувьд 'verticalMove' гэж дууддаг */
public void up () {…}
/ * 'S' эсвэл доош сум дарагдсан үед дууддаг - 'down' параметртэй самбар дээрх хавтан бүрийн хувьд 'verticalMove' гэж дууддаг */public void down () {…}
/ * 'D' эсвэл баруун сумыг дарахад дууддаг - 'right' параметртэй самбар дээрх хавтан бүрийн хувьд 'horizontalMove' гэж дууддаг */public void right () {…}
/ * 'A' эсвэл зүүн сум дарагдсан үед дууддаг - 'зүүн' параметртэй самбар дээрх хавтан бүрийн хувьд 'horizontalMove' гэж дууддаг */
нийтийн хоосон орон зай () {…}
/* Хоёр хавтангийн утгыг хооронд нь харьцуулж, хэрэв тэдгээр нь ижил эсвэл нэг нь 0 -тэй тэнцүү бол (энгийн хавтан) - тэдгээрийн утгыг нэмнэ (бидний харьцуулж буй хавтан нь хоёр өөр хавтан бөгөөд тэдгээр нь зохих чиглэл рүү явж байгаа тохиолдолд) - эгнээний дундуур рекурсив шилжих */
public void horizontalMove (int row, int col, String direction) {…}
/* Хоёр хавтангийн утгыг хооронд нь харьцуулж, хэрэв тэдгээр нь ижил эсвэл нэг нь 0 -тэй тэнцүү бол (энгийн хавтан) - тэдгээрийн утгыг нэмнэ (бидний харьцуулж буй хавтан нь хоёр өөр хавтан бөгөөд тэдгээр нь зохих чиглэл рүү явж байгаа тохиолдолд) - баганын дундуур рекурсив шилжих */
public void verticalMove (int row, int col, String direction) {…}
Тийм ээ, энэ бол маш олон арга боловч санаа зовох хэрэггүй, ихэнхийг нь ойлгоход маш хялбар байдаг. Дээрээс нь 'Board' анги нь хамгийн төвөгтэй тул үүнээс хойшхи бүх зүйл харьцангуй энгийн байх болно.
Алхам 3: Хөтөлбөртэй танилцана уу - Хавтан
Хавтан:
Тодорхойлолт: Хавтангийн анги нь тус тусдаа хавтанцартай харьцдаг бөгөөд бүх ангийн хамгийн жижиг нь юм. Хавтан бүр нь бүхэл тоо, өнгөтэй байна. Энэ нь 0 (анхдагч) эсвэл #утга бүхий хавтанг үүсгэдэг хоёр бүтээгчтэй. Аргууд нь ихэвчлэн өөрөө тайлбарладаг бөгөөд 'getter' ба 'setter' гэсэн аргуудын нийлбэрийг бүрдүүлдэг.
Барилгачид:
/ * 0 * гэсэн утгатай үндсэн хавтанг бүтээдэг/
нийтийн хавтан () {…}
/ * Тооны утгатай хавтанг бүтээдэг */
нийтийн хавтан (int дугаар) {…}
Аргууд:
/ * Хавтангийн үнэ цэнийг авна */
public int getValue () {…}
/ * Хавтанцарын утгыг тохируулна - хоёр хавтанг хамтад нь нэмэхэд ашигладаг */
public void setValue (int утга) {…}
/ * Хавтанг String хэлбэрээр илэрхийлнэ - GUI -д ашиглагддаг */
public String toString () {…}
/ * Хавтанцарын өнгийг үнэ цэнээр нь тохируулна */
public void setColor () {…}
/ * Хавтангийн өнгийг авна */
public void getColor () {…}
Алхам 4: Хөтөлбөртэй танилцах - Тоглоом
Тоглоом
Тодорхойлолт: Тоглоомын анги нь үндсэн арга, ихэнх GUI арга, гол харилцан үйлчлэлийг агуулдаг. Энэ нь Хавтан ба ТУЗ -ийн ангиудыг хоёуланг нь авч, хамтран ажиллах боломжийг олгодог.
Барилгачид:
Аль нь ч биш
Аргууд:
/ * GUI -ийг зохих хэмжээгээр тохируулж, Түлхүүр сонсогчийг нэмнэ */
нийтийн статик хоосон зай setUpGUI () {…}
/ * Ward эсвэл сумтай товчлуурууд дарагдсан эсэхийг шалгаж, зохих үйлдлүүдийг хийдэг - JFrame -ийг алхам тутамд шинэчилдэг */
нийтийн хоосон түлхүүр дарагдсан (KeyEvent e) {…}
/ * GUI -ийг цуврал мөр, самбар, хавтангаар будаж, тоглоом дуусахад дахин будахыг баталгаажуулдаг */
нийтийн хоосон будаг (График g) {…}
/ * бие даасан хавтан зурдаг - будгийн аргаар дууддаг */
нийтийн хоосон зургийн хавтан (График g, Хавтанцарын хавтан, int x, int y) {…}
/ * Үндсэн арга - GUI -ийг тохируулж тоглоомыг эхлүүлнэ */
нийтийн статик хоосон үндсэн (String args) {…}
Алхам 5: Чухал арга - Хөдөлгөөн
Хөдөлгөөний аргуудыг ойлгох нь хамгийн чухал боловч сайн мэдээ бол босоо хөдөлгөөнийг ойлгосны дараа та энэ ойлголтыг хэвтээ хөдөлгөөнд ашиглаж болно. Үнэн хэрэгтээ босоо чиглэлд шилжих гурван арга нь хэвтээ аргын гурван хөдөлгөөнтэй яг адилхан бөгөөд нэг нь мөр, нөгөө нь баганаар хөндлөн хөдөлдөг. Ийм учраас босоо хөдөлгөөн хийх аргуудыг л анхаарч үзье.
private void verticalMove (int row, int col, String direction)
{Хавтанцарын эхлэл = самбар [хил] [col]; Хавтан харьцуулах = самбар [эгнээ] [col]; if (initial.getValue () == 0 || initial.getValue () == харьцуулах.getValue ()) {if (мөр> хил || (чиглэл. тэгш ("доош") && (мөр <хил))) {int addScore = initial.getValue () + харьцуулах.getValue (); if (initial.getValue ()! = 0) {оноо += addScore; } initial.setValue (addScore); харьцуулах.setValue (0); }} else {if (direction.equals ("down")) {border--; } өөр {хил ++; } verticalMove (мөр, col, чиглэл); }}
Дээрх verticalMove аргыг 'дээш' ба 'доош' аргуудаар нэрлэдэг. "Дээш" аргыг авч үзье.
нийтийн хоосон байдал ()
{for (int i = 0; i <grids; i ++) {border = 0; for (int j = 0; j <grids; j ++) {if (board [j] .getValue ()! = 0) {if (border <= j) {verticalMove (j, i, "up"); }}}}}
Энэ арга нь самбарыг бүхэлд нь дамжуулж, "дээш" гэсэн параметр бүхий хавтан бүрт verticalMove гэж дууддаг. verticalMove дараа нь 'j' ба 'i' байрлал дахь хавтанг 'border' ба 'i' байрлал дахь хавтантай харьцуулна. Хэрэв хоёулаа тэнцүү бол тэдгээрийг нэгтгэдэг. Хэрэв тийм биш бол хилийн хавтанг 1 -ээр нэмэгдүүлнэ (байрлал дахь параметр нь 'дээш' байх тул), verticalMove -ийг дахин дуудна.
Зөвлөмж болгож буй:
Тоглоомыг сольж дасан зохицох: уурын галт тэрэгний тоглоомыг хүртээмжтэй болгосон !: 7 алхам (зурагтай)
Тоглоомыг солих-дасан зохицох: уурын галт тэрэгний тоглоомыг хүртээмжтэй болгох !: Тоглоомын дасан зохицох чадвар нь моторын чадвар хязгаарлагдмал эсвэл хөгжлийн бэрхшээлтэй хүүхдүүдэд тоглоомтой бие даан харилцах боломжийг олгох шинэ арга зам, тусгай шийдлийг нээж өгдөг. Ихэнх тохиолдолд дасан зохицсон тоглоом авах шаардлагатай хүүхдүүд
1D Pong тоглоомыг өөрийн болгох: 5 алхам (зурагтай)
1D Pong тоглоомыг өөрийн гараар бүтээгээрэй: Энэхүү төслийн хувьд би тоглохдоо үнэхээр хөгжилтэй 1D Pong тоглоомыг бий болгохын тулд БСХС -ийн самбарыг дуугаралтын товчлуур, LED, Arduino Nano -той хэрхэн хослуулсан тухай харуулах болно. Замдаа би цахилгаан хэлхээг хэрхэн яаж бий болгох, ямар ялгаатай болохыг харуулах болно
DoReMiQuencer - Гараар програмчлах боломжтой MIDI дараалал: 7 алхам
DoReMiQuencer - Гараар програмчлагдах MIDI дараалал: Энэ төхөөрөмжийг VCV -ийн бүтээсэн виртуал модуль синтезатор болох VCVRack -т ашиглахаар бүтээсэн боловч ерөнхий зориулалтын MIDI хянагчийн үүрэг гүйцэтгэдэг бөгөөд сонгосон горимоос хамааран MIDI дараалал эсвэл гараар үйлчилдэг. MIDI тэмдэглэлийг газрын зураг дээр харуулав
Тоглоомыг Arduboy-д, 500 тоглоомыг Flash-сагсанд хэрхэн байршуулах вэ: 8 алхам
Тоглоомыг Arduboy-д, 500 тоглоомыг Flash-сагсанд хэрхэн байршуулах вэ: Би зам дээр тоглохдоо хамгийн ихдээ 500 тоглоом хадгалах боломжтой гар хийцийн Arduboy-ийг Serial Flash санах ойтой болгосон. Тоглоомыг үүнд хэрхэн ачаалах, үүнд тоглоомыг серийн флаш санах ойд хэрхэн хадгалах, өөрийн тоглоомын багцыг бий болгох талаар хуваалцахыг хүсч байна
Уралдааны тоглоомыг зургаар програмчлах: 7 алхам
Уралдааны тоглоомыг Scratch програмчлах: Энэхүү заавар нь MIT's Scratch дотор уралдааны тоглоомыг хэрхэн програмчлах талаар танд үзүүлэх болно