Мазмуну:
- 1 -кадам: материалдар
- 2 -кадам: Программа менен таанышыңыз - Такта
- 3 -кадам: Программа менен таанышыңыз - Плитка
- 4 -кадам: Программа менен таанышуу - Оюн
- 5 -кадам: Маанилүү методдор - Кыймыл
Video: Өзүңүздүн 2048 Оюнуңузду W/Java менен программалаңыз!: 8 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:36
By PranP1My (Толук эмес) SiteFollow Автордун дагы:
Мен 2048 оюнун жакшы көрөм. Ошентип, мен өз версиямды программалоону чечтим.
Бул чыныгы оюнга абдан окшош, бирок аны өзүм программалоо мага каалаган убакта каалаган нерсени өзгөртүү эркиндигин берет. Эгерде мен кадимки 4x4 оюнунун ордуна 5х5 оюнун кааласам, анда "Board" конструкторун колдонуп, жөнөкөй өзгөртүү жасоого мүмкүндүк берет. Мен оюнду туш келди эмес, оюнчу үчүн эң татаал кыла турган бөлүктөрдү кошуп, оюнду татаалдаштыргым келет деп айт. Жөнөкөй алгоритмди колдонуп, мен муну кыла алам. Мен бул Нускоодо бул өзгөртүүлөрдүн бардыгын камтыбасам да, мен барган сайын дагы кошууну пландап жатам.
Азырынча, биз сиздин 2048 -жылга мүнөздүү оюңузду программалайбыз.
Кел, баштайлы!
(Кошумча эскертүү: Бул Нускамалык программалоо боюнча орто билимди талап кылат - өзгөчө Java менен)
1 -кадам: материалдар
Бул проект үчүн сизге көп нерсенин кереги жок, анткени бул жөн эле программалоо жолу.
Материалдар:
- Ноутбук
- Eclipse (же сиз тандаган IDE)
Ооба. Дал ушул.
2 -кадам: Программа менен таанышыңыз - Такта
Мен бардык кодумду GitHubга жүктөдүм - бул жерден текшериңиз:
Мен оюнду 3 класска бөлдүм: такта, плитка жана оюн.
Такта:
Description: Board классы оюн тактасы менен алектенет, "Tile" элементтеринин массивин орнотуу, учурдагы баллды жана эң жогорку плитканы алуу жана массивди сапка коюу (кийинчерээк "Оюнда" колдонулат). Логиканын көбү дагы ушул жерде, класс 2 жана 4төрдү туш келди жерлерде, өйдө, ылдый, солго жана оңго жылдыруу жана оюн бүткөндө оюнчуларга билдирүү ыкмаларын камсыз кылган класс.
Конструкторлор:
/ * Башкаруу үчүн демейки конструктор - 4х4 матрицаны орнотот */
коомдук кеңеш () {…}
/ * Башкармалыктын конструктору - торчо өлчөмү көрсөтүлгөн матрицаны орнотот */
коомдук кеңеш (int grids) {…}
Методдор:
/ * Такта кайтаруучу Getter ыкмасы */
коомдук плитка getBoard () {…}
/ * Упайды кайтаруучу Getter ыкмасы */
public int getScore () {…}
/ * Тактадагы эң бийик плитканы таап, кайра кайтарат */
public int getHighTile () {…}
/ * Тактаны консолго басып чыгарат - тестирлөө максатында */
public void print () {…}
/ * Тактаны String катары кайтарат - GUIде колдонулат */
public String toString () {…}
/ * Көчүрүү учурунда бош жерде 2 (же 4) пайда болот */
коомдук боштуктун пайда болушу () {…}
/ * Такта толугу менен караңгыланганын текшерет жана эгер болсо, анда оюнчуларды кайра баштоого түртөт */
public boolean blackOut () {…}
/ * Оюн бүткөнүн текшерет - такта караңгылатылганда жана плиткалардын бири да бириге албайт */
коомдук логикалык оюнOver () {…}
/ * 'W' же өйдө жебе басылганда чакырылат - 'тик' параметри бар 'плитка үчүн' verticalMove 'чакырат *//
public void up () {…}
/ * 'S' же ылдый жебеси басылганда чакырылат - 'down' */public void down () {…} параметри бар ар бир плитка үчүн 'verticalMove' чакырат.
/ * 'D' же оң жебеси басылганда чакырылат - 'оң' */public void right () {…} параметри бар ар бир плитка үчүн 'horizontalMove' деп аталат
/ * 'A' же солго жебе басылганда чакырылат - 'left' параметри бар тактанын ар бир плитасы үчүн 'horizontalMove' чакырат */
коомдук боштук солго () {…}
/* Эки плитканын маанилерин бирге салыштырат жана эгерде алар бирдей болсо же бири 0го барабар болсо (кадимки плитка) - алардын баалуулуктары кошулат (эгер биз салыштырып жаткан плиткалар эки башка плитка болсо жана алар тийиштүү багытты көздөй жылышса) - рекурсивдүү катар аркылуу жылат */
public void horizontalMove (int катар, int col, String багыты) {…}
/* Эки плитканын маанилерин чогуу салыштырат жана эгер алар бирдей болсо же бирөө 0гө барабар болсо (кадимки плитка) - алардын баалуулуктары кошулат (эгер биз салыштырып жаткан плиткалар эки башка плитка болсо жана алар тиешелүү багытты көздөй жылышса) - мамыча аркылуу рекурсивдүү түрдө жылат */
public void verticalMove (int катар, int col, String багыты) {…}
Ооба, бул көптөгөн ыкмалар - бирок кабатыр болбоңуз, көбүн түшүнүү абдан оңой. Анын үстүнө, 'Board' классы эң татаал, андыктан андан кийинкинин баары салыштырмалуу жөнөкөй болот.
3 -кадам: Программа менен таанышыңыз - Плитка
Плитка:
Description: Tile классы жеке плиткалар менен иштейт жана бардык класстардын эң кичинеси. Ар бир плитканын бүтүн мааниси жана түсү бар. Анда 0 (демейки) же #маанидеги плиткаларды жараткан эки конструктор бар. Методдор көбүнчө өзүн -өзү түшүндүрөт, 'getter' жана 'setter' методдору жалпы көлөмдүн көпчүлүгүн түзөт.
Конструкторлор:
/ * 0 мааниси бар негизги плитканы курат */
коомдук плитка () {…}
/ * Сан мааниси бар плитканы курат */
коомдук плитка (int номери) {…}
Методдор:
/ * Мозаиканын баасын алат */
public int getValue () {…}
/ * Плитканын маанисин коет - эки плитканы бирге кошкондо колдонулат */
public void setValue (int value) {…}
/ * Плитканы String катары билдирет - GUIде колдонулат */
public String toString () {…}
/ * Плитканын түсүн анын маанисине жараша коет */
public void setColor () {…}
/ * Черепица түсүн алат */
public void getColor () {…}
4 -кадам: Программа менен таанышуу - Оюн
Оюн
Description: Оюн классында негизги ыкма, GUI ыкмаларынын көбү жана Негизги өз ара аракеттешүүлөр бар. Бул Tile жана Board класстарын талап кылат жана аларга чогуу иштөөгө мүмкүнчүлүк берет.
Конструкторлор:
Эч ким
Методдор:
/ * GUIди тиешелүү өлчөмдөр менен орнотот жана Негизги угуучуну кошот */
жалпы статикалык боштук setUpGUI () {…}
/ * Wast же жебе баскычтары басылганын текшерет жана тиешелүү аракеттерди аткарат - JFrameди ар бир кыймылы менен жаңыртып турат */
public void keyPressed (KeyEvent e) {…}
/ * GUIди бир катар жиптер, тактайлар, плиткалар менен боёйт жана оюн бүткөндөн кийин алардын боёлушун камсыздайт */
ачык боштук боёгу (Графика g) {…}
/ * жеке плитканы тартат - боёк ыкмасынан чакырылган */
public void drawTiles (Graphics g, Tile tile, int x, int y) {…}
/ * Негизги ыкма - GUIди орнотот жана оюнду баштайт */
жалпыга ачык статикалык боштук негизги (String args) {…}
5 -кадам: Маанилүү методдор - Кыймыл
Кыймылдын ыкмаларын түшүнүү эң маанилүү, бирок жакшы кабар - бул вертикалдуу кыймылдарды түшүнгөнүңүздө, сиз бул түшүнүктү горизонталдык кыймылдарга колдоно аласыз. Чындыгында, үч вертикалдуу кыймыл ыкмасы үч горизонталдык ыкма менен бирдей, бирөөсү катар боюнча, экинчиси мамычалар боюнча. Ушул себептен, келгиле, тик кыймыл ыкмаларына гана токтололу.
private void verticalMove (int катар, int col, String багыты)
{Tile initial = board [border] [col]; Tile салыштыруу = board [row] [col]; if (initial.getValue () == 0 || initial.getValue () == салыштыруу.getValue ()) {if (катар> чек || (багыт. барабар ("ылдый") && (катар <чек))) {int addScore = initial.getValue () + салыштыруу.getValue (); if (initial.getValue ()! = 0) {score += addScore; } initial.setValue (addScore); салыштыруу.setValue (0); }} else {if (direction.equals ("down")) {border--; } else {border ++; } 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' позициясындагы плитканы 'чек' жана 'i' абалындагы плитка менен салыштырат. Эгерде экөө тең болсо, алар бириктирилет. Эгерде алар андай болбосо, чек ара плиткасы 1ге көбөйтүлөт (жердеги параметр 'өйдө'), жана verticalMove кайра чакырылат.
Сунушталууда:
Өзүңүздүн туташтырылган жылытуу термостатын жасаңыз жана жылытуу менен үнөмдөңүз: 53 кадам (сүрөттөр менен)
Өзүңүздүн туташтырылган жылытуу термостатын жасаңыз жана жылытуу менен үнөмдөңүз: максаты эмне? Үйүңүздү каалагандай жылытуу менен жайлуулукту жогорулатыңыз Керек болгондо гана үйүңүздү жылытуу менен үнөмдөңүз жана парник газдарынын чыгарылышын азайтыңыз Кайда болсоңуз да жылытууңузду көзөмөлдөңүз
Өзүңүздүн 1D понг оюнуңузду жасаңыз: 5 кадам (сүрөттөр менен)
Өзүңүздүн 1D Понг Оюнуңузду түзүңүз: Бул проект үчүн мен ойноо абдан кызыктуу болгон 1D Понг Оюнун түзүү үчүн MDF тактасын бузулган баскычтар, светодиоддор жана Arduino Nano менен кантип бириктиргенимди көрсөтөм. Жолдо мен сизге электроника схемасын кантип түзүү керектигин жана кандай айырмачылыкты көрсөтөм
Биринчи жарыш оюнуңузду түзүңүз: 10 кадам
Биринчи жарыш оюнуңузду түзүңүз: Эгерде сиз Python коддоону жасап, оюн жазгыңыз келсе, анда Pygame Zero аркылуу болушу мүмкүн. Бул үйрөткүчтө биз жөнөкөй жарыш оюнун жазабыз
Өзүңүздүн Tic Tac Toe оюнуңузду Javaга жазыңыз: 6 кадам
Өзүңүздүн Tic Tac Toe оюнуңузду Javaга жазыңыз: Баарыңыздар Tic Tic Toe классикалык оюну жөнүндө билесиздер. Менин башталгыч класстарымдан бери Tic Tac Toe мен досторум менен ойногон популярдуу оюн болчу. Мен ар дайым оюндун жөнөкөйлүгүнө кызыкчумун. Биринчи курста менин
Компьютериңизди каалаган убакта белгилөө менен автоматтык түрдө өчүрүүнү программалаңыз: 4 кадам
Каалаган убактыңызды белгилөө менен компьютериңизди автоматтык түрдө өчүрүүгө программалаңыз: эй, бул менин күнүмдүк жашоомдон алынган дагы бир көрсөтмө … акыркы жолу менин компьютериме көптөгөн программаларды жүктөп алышым керек болчу жана мен аны жүктөөгө уруксат беришим керек болчу түнү бою, мен жүктөө бүткөндөн кийин да, түнү бою да компьютеримди күйгүзгүм келбеди