1 00:00:00,000 --> 00:00:09,386 2 00:00:09,386 --> 00:00:11,332 >> ZAMYLA Chan: Hayaan ang mayroon ng Magpakasaya sa labinlimang. 3 00:00:11,332 --> 00:00:15,680 Labinlimang ay ang unang laro na nakakakuha ka ng ipatupad at ito ay interactive. 4 00:00:15,680 --> 00:00:16,410 Ngayon, huwag mag-alala. 5 00:00:16,410 --> 00:00:18,830 Hindi mo na kailangang isulat ang iyong sarili buong bagay. 6 00:00:18,830 --> 00:00:22,320 Tumingin sa code sa pamamahagi dahil may isang marami ng istraktura ng laro ay 7 00:00:22,320 --> 00:00:23,880 set up para sa iyo. 8 00:00:23,880 --> 00:00:28,160 Tinanggap ito at Pina-parse ng isang command line argumento mula sa user at lumilikha ng 9 00:00:28,160 --> 00:00:31,230 board batay sa input na. 10 00:00:31,230 --> 00:00:35,570 Sumusuri ito kung ang mga laro ay nanalo at labasan isang beses nanalo ng user ang laro. 11 00:00:35,570 --> 00:00:38,340 At upang manalo sa laro, nakakakuha ito input mula sa user at 12 00:00:38,340 --> 00:00:40,610 tinatawag ng Ilipat function. 13 00:00:40,610 --> 00:00:44,600 >> Kaya kami ay pagpunta sa ay pagpapatupad ng apat mga pag-andar para sa mga laro ng labinlimang, 14 00:00:44,600 --> 00:00:48,110 init, gumuhit, ilipat, at nanalo. 15 00:00:48,110 --> 00:00:50,340 Una, pagharap sa isang bagay ng init ipaalam. 16 00:00:50,340 --> 00:00:55,150 Sa init, para sa pagsisimula ng pag, kumakatawan namin ang board sa isang 2D integer array. 17 00:00:55,150 --> 00:01:01,070 At ito ay isang pandaigdigang variable na tinatawag na board sa mga sukat MAX, at MAX, 18 00:01:01,070 --> 00:01:03,880 ang maximum na sukat ng board. 19 00:01:03,880 --> 00:01:07,310 Ngayon, ang aktwal na sukat ng board ay ibinibigay sa pamamagitan ng mga gumagamit, na kinakatawan sa 20 00:01:07,310 --> 00:01:10,620 ang integer d, na dati mas mababa kaysa sa MAX. 21 00:01:10,620 --> 00:01:14,660 Ngunit, sa C, hindi ka maaaring baguhin ang laki ng array, kaya ka natigil sa 22 00:01:14,660 --> 00:01:16,730 na maximum na sukat. 23 00:01:16,730 --> 00:01:19,870 >> Ang iyong trabaho sa init ay upang panahanan ng mga tao ang mga halaga ng board 24 00:01:19,870 --> 00:01:21,860 kasama ang tamang halaga. 25 00:01:21,860 --> 00:01:26,910 Ngayon, nakakita kami 1a array, ngunit paano ko 2D array gumagana? 26 00:01:26,910 --> 00:01:30,985 Mayroong isang index ng hilera, ZERO na-index tulad ng dati, at pagkatapos din ng 27 00:01:30,985 --> 00:01:32,100 ang hanay. 28 00:01:32,100 --> 00:01:36,120 At makikita mo punan ang iyong grid sa sa pababang mga halaga, tulad nito lamang. 29 00:01:36,120 --> 00:01:43,260 Grid, 0, 0, hilera 0, haligi 0, 8, grid 0, 1 ay 7. 30 00:01:43,260 --> 00:01:48,500 Ito ay para sa isang halimbawa kung saan d, kaunti d, ay 3. 31 00:01:48,500 --> 00:01:52,690 >> Ngayon, ang board sa loob ng labinglimang dapat din naglalaman ng isang blangko na tile, kung ikaw kailanman 32 00:01:52,690 --> 00:01:54,280 naglaro sa pisikal na laro. 33 00:01:54,280 --> 00:01:59,210 Ngunit, board ay isang integer array, kaya lahat ng mga halaga na kailangang maging integer. 34 00:01:59,210 --> 00:02:06,950 Kaya ito ay nasa sa iyo na magpasya isang integer halaga sa mga kumakatawan sa isang blangko na tile. 35 00:02:06,950 --> 00:02:10,460 Upang simulan ang iyong board, maaari mong gamitin ang loop mga istraktura na naglalaman ng 36 00:02:10,460 --> 00:02:16,440 nagsisimula estado ng board, kung saan board i j ay kumakatawan sa mga elemento sa 37 00:02:16,440 --> 00:02:19,380 hilera i at haligi j. 38 00:02:19,380 --> 00:02:23,035 Simulan nila sa pababang pagkakasunud-sunod at, tandaan, na kung ang bilang ng mga tile 39 00:02:23,035 --> 00:02:29,590 ay kakaiba, pagkatapos ikaw ay pagpunta sa may upang magpalit ang lokasyon ng 2 at ng 1. 40 00:02:29,590 --> 00:02:33,790 Kaya doon, mayroon kaming ang aming nasimulan board. 41 00:02:33,790 --> 00:02:37,440 >> Ngayon, na-nasimulan namin ang aming board, oras na upang gumuhit ito. 42 00:02:37,440 --> 00:02:41,260 Draw ay i-print ang kasalukuyang estado ng mga board, ngunit kailangan mong tiyakin 43 00:02:41,260 --> 00:02:44,260 mag-print ng mga tile sa parehong pagkakasunud-sunod na iyong nasimulan ang mga ito. 44 00:02:44,260 --> 00:02:47,300 At kailangan mo rin i-format ang iyong mga numero ng tama. 45 00:02:47,300 --> 00:02:51,700 Dahil maaaring mayroon kami solong digit at double digit, pagkatapos ay nais mong i- 46 00:02:51,700 --> 00:02:54,540 mag-print ng isang blangko ang puwang bago sa anumang solong digit na numero. 47 00:02:54,540 --> 00:03:00,150 Gamitin mo na sa paggamit ang placeholder -. 48 00:03:00,150 --> 00:03:02,550 >> Ngunit tandaan ang aming mga blangko na espasyo. 49 00:03:02,550 --> 00:03:05,970 Hindi namin nais na i-print ang aktwal na bilang na pinili namin upang kumatawan 50 00:03:05,970 --> 00:03:10,410 na blangko ang puwang sa board, ngunit din namin ayaw na walang print sa lahat. 51 00:03:10,410 --> 00:03:15,310 Kaya ano ang maaari mong gawin ay upang tukuyin ang isang simbolo o ng character upang kumatawan sa 52 00:03:15,310 --> 00:03:17,050 blangko tile. 53 00:03:17,050 --> 00:03:21,030 Sa mga nakaraang mga halimbawa pinili ko ang isang guhitan sa ilalim, at pagkatapos ay i-print mo lamang 54 00:03:21,030 --> 00:03:26,970 na sa tuwing maabot mo ang blangko puwang sa iyong mga pag-andar sa mabubunot. 55 00:03:26,970 --> 00:03:29,850 >> Kaya gumuhit ay na-nested para sa mga loop. 56 00:03:29,850 --> 00:03:31,150 Isang bagay na katulad nito. 57 00:03:31,150 --> 00:03:35,660 Para sa bawat hilera, at pagkatapos ay para sa bawat halaga sa ang hilera, ikaw ay pagpunta sa i-print ang 58 00:03:35,660 --> 00:03:36,940 halaga sa puwang na ito. 59 00:03:36,940 --> 00:03:39,470 Sa sandaling na-print na ang lahat ng mga halaga sa hilera, pagkatapos mo 60 00:03:39,470 --> 00:03:41,180 maaaring mag-print ng isang bagong linya. 61 00:03:41,180 --> 00:03:47,730 Tandaan na ang pagkakasunod-sunod para sa iyong mabubunot pag-andar ay dapat echo o gayahin ang pagkakasunod-sunod 62 00:03:47,730 --> 00:03:48,980 sa iyong nasimulan function. 63 00:03:48,980 --> 00:03:51,290 64 00:03:51,290 --> 00:03:55,160 >> Ngayon na nasimulan mo ang board at na na iginuhit mo ito, oras na upang ipagbigay- 65 00:03:55,160 --> 00:03:58,500 i-edit ito user at gumawa ng kanilang mga galaw. 66 00:03:58,500 --> 00:04:03,840 Kaya sa mga Fifteen.c function, ang programa ay tumatagal ng input mula sa user at 67 00:04:03,840 --> 00:04:07,690 pagkatapos ay tawag ang paglipat function, pagpasa sa bilang ng mga tile na ang 68 00:04:07,690 --> 00:04:09,270 Gusto ni upang ilipat gumagamit. 69 00:04:09,270 --> 00:04:10,380 Ngayon, mag-ingat. 70 00:04:10,380 --> 00:04:14,200 Ito ang aktwal na bilang ng mga tile at hindi ang aktwal na posisyon. 71 00:04:14,200 --> 00:04:19,010 Kaya, kailangan mo upang maghanap para sa mga tile ng posisyon upang malaman kung saan ito. 72 00:04:19,010 --> 00:04:23,440 >> Ngayon, dapat mong payagan lamang ang user upang makagawa ng isang ilipat kung ito ay legal. 73 00:04:23,440 --> 00:04:27,910 Ang isang legal na paglipat ng anumang tile na ay Katabi ng blangko tile. 74 00:04:27,910 --> 00:04:32,020 Ibig sabihin, sa itaas at sa ibaba, upang sa kaliwa at sa kanan. 75 00:04:32,020 --> 00:04:34,680 Kaya kailangan mong malaman kung saan ang blangko tile ay pati na rin. 76 00:04:34,680 --> 00:04:39,720 Ngayon, para sa bawat ilipat naghahanap ka para sa ang tile mga gumagamit, ngunit ito ay marahil 77 00:04:39,720 --> 00:04:43,030 hindi makakaya upang maghanap para sa mga blangko na tile sa bawat oras dahil ninyo ito ginagawa 78 00:04:43,030 --> 00:04:45,270 bawat solong oras ang Gusto ni upang ilipat gumagamit. 79 00:04:45,270 --> 00:04:50,300 Kaya, sa halip, ito ay pinakamahusay upang tandaan kung saan ang blangko tile ay gumagamit ng ilang mga 80 00:04:50,300 --> 00:04:52,650 mahusay na pinangalanang variable. 81 00:04:52,650 --> 00:04:55,970 Kaya sabay-daan sa iyo ang user upang gawin ang kanilang gumagalaw, ang mga ito ay na rin sa kanilang mga 82 00:04:55,970 --> 00:04:59,700 paraan upang panalong ang laro ng labinlimang. 83 00:04:59,700 --> 00:05:03,940 >> Upang manalo sa laro ng labinlimang, ang mga tile kailangang maging sa isang tiyak na pagkakasunod-sunod, at 84 00:05:03,940 --> 00:05:06,970 sumusuri ang nanalo function na kung ang laro ay nanalo. 85 00:05:06,970 --> 00:05:10,290 Ibinabalik nito ang True kung ang laro ay nanalo at ang mga tile ay sa tamang pagkakasunud-sunod, 86 00:05:10,290 --> 00:05:12,210 at Mali kung hindi man. 87 00:05:12,210 --> 00:05:15,830 Kaya upang manalo sa laro ng labinlimang, tile ay kailangang pagtaas ng order, gamit ang 88 00:05:15,830 --> 00:05:19,230 blangko tile sa ilalim na kanang sulok. 89 00:05:19,230 --> 00:05:23,630 Kaya paano mo suriin kung ang user Lumipat na ang board sa kanan 90 00:05:23,630 --> 00:05:25,010 orientation? 91 00:05:25,010 --> 00:05:29,200 >> Well, makikita mo umulit sa ibabaw ng board at suriin ang mga halaga upang tiyakin na 92 00:05:29,200 --> 00:05:30,550 ang mga ito ay nasa tamang lugar. 93 00:05:30,550 --> 00:05:33,910 Upang gawin ito, maaari mong gamitin Nested para sa mga loop tulad lang ng ginawa mo 94 00:05:33,910 --> 00:05:36,520 sa mabubunot at sa init. 95 00:05:36,520 --> 00:05:40,430 Mayroong ilang mga paraan upang suriin at patunayan kung ang board ay 96 00:05:40,430 --> 00:05:42,860 tama at isang panalong bituin, bagaman. 97 00:05:42,860 --> 00:05:47,330 Kung pumunta ka mula kaliwa hanggang kanan, simula mula sa hilera sa tuktok down, pagkatapos ay i-araw- 98 00:05:47,330 --> 00:05:50,590 numero ay dapat mas malaki kaysa sa ang isang nakaraan. 99 00:05:50,590 --> 00:05:54,530 Mag-ingat tungkol sa kung ano ang iyong pinapahalagahan nai pinili mo para sa iyong mga blangko na tile bagaman. 100 00:05:54,530 --> 00:05:59,250 >> O maaari kang gumamit ng isang counter variable sa tiyakin na ang bawat halaga ay nasa lugar, kung 101 00:05:59,250 --> 00:06:03,660 mong makabuo ng isang uri ng formula upang kumatawan ito. 102 00:06:03,660 --> 00:06:06,250 Kaya magsaya eeksperimento sa matematika. 103 00:06:06,250 --> 00:06:10,930 Sa sandaling na-makabuo ng isang paraan, na pagbalik True-sabay ang gumagamit ay nanalo sa laro. 104 00:06:10,930 --> 00:06:15,950 Ngunit kung ang anumang mga halaga ay hindi tama, pagbalik Maling, ang user ay may upang magpatuloy gumagalaw 105 00:06:15,950 --> 00:06:18,440 dahil hindi nila na nanalo sa laro. 106 00:06:18,440 --> 00:06:23,030 Sa sandaling ipatupad mo ang pagsusuring ito at, kasama may initialize, gumuhit, at ilipat, 107 00:06:23,030 --> 00:06:25,110 natapos mo na ang laro ng labinlimang. 108 00:06:25,110 --> 00:06:27,620 Binabati kita at magsaya playing. 109 00:06:27,620 --> 00:06:30,600 Ang pangalan ko ay Zamyla at ito ay CS50. 110 00:06:30,600 --> 00:06:37,632