Orodha ya maudhui:
- Vifaa
- Hatua ya 1: Sanidi Mipaka ya Mchezo
- Hatua ya 2: Kuongeza Bodi na Kufanya Udhibiti
- Hatua ya 3: Kuunganisha Arduino kwenye Bandari ya Serial
- Hatua ya 4: Kuunganisha Umoja na Bandari ya Serial
- Hatua ya 5: Kuongeza Mpira
- Hatua ya 6: Kukamilisha Mchezo
Video: Jinsi ya Kutengeneza Mchezo wa Wachezaji Wengi na Watawala wa Arduino: Hatua 6
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:48
Je! Umewahi kujiuliza ni vipi watengenezaji wa mchezo huunda michezo ya kushangaza ambayo watu ulimwenguni wanapenda kucheza? Kweli, Leo nitakupa kidokezo kidogo juu yake kwa kutengeneza mchezo mdogo wa wachezaji wengi ambao utadhibitiwa na mtawala wa Arduino ambao utafanya pia. Kwa hivyo, wacha tuanze.
Vifaa
Utahitaji:
- Laptop
- Injini ya Umoja
- C # IDE inayofanya kazi na Umoja kama studio ya kuona au Atom. (Nitatumia Nambari ya Studio ya Visual)
- 2X Arduino Nano
- 2X Bodi kubwa ya Mkate
- 2X Bodi ndogo ya Mkate
- 4X Kitufe cha Kubadilisha (Kitufe cha Bonyeza)
- Mpingaji wa 4X 200Ω
- 12X Mwanaume kwa waya za Jumper za Kiume
- Arduino IDE
Itasaidia ikiwa una uelewa wa kimsingi wa kutumia Umoja, hata hivyo haitaathiri maendeleo yako kwani utaijua ukiendelea na kutengeneza mchezo.
Kiungo cha kupakua Injini ya Umoja:
store.unity.com/download-nuo
Kiungo cha kupakua Nambari ya Studio ya Visual IDE:
code.visualstudio.com/download
Kiungo cha kupakua IDE ya Arduino:
www.arduino.cc/en/Main/Software
Hatua ya 1: Sanidi Mipaka ya Mchezo
Kwanza kabisa, unahitaji kupakua umoja
Mara baada ya hayo unaweza kuanza kuanzisha maoni ya mchezo wako.
Fungua mradi mpya wa Umoja, uipe jina na uchague mchezo wa 2D.
Wakati mradi unafungua, angalia kuwa kuna sehemu kuu 3 zinazoitwa
- Hierarchy (hapa ndipo vitu vyako vyote vya mchezo na maelezo yataongezwa).
- Onyesho (ambapo unasanidi maoni ya mchezo).
- Mchezo (ambapo unaweza kujaribu jinsi mchezo halisi utaenda kama).
Angalia kuwa chini ya uongozi kuna eneo lako na chini ya eneo kuna "Kamera kuu". Unapochagua kamera kutoka kwa uongozi itachaguliwa katika eneo la tukio
(Chochote ndani ya mipaka ya kamera hii kitaonyeshwa kwenye mchezo halisi).
Angalia picha 1
Mchezo wetu una bodi mbili, mpira unaozunguka, na mipaka inayopunguza mwendo wa bodi na mpira.
Wacha tuanze kwa kuunda mipaka.
- Ili kuunda kitu kipya cha mchezo, chagua Mali> Unda> Sprites> mraba (ipe jina "mipaka ya kulia na kushoto") Angalia picha 2
- Buruta na utupe mipaka ya kulia na kushoto kwa uongozi na mraba utaonekana katika eneo la tukio.
- Rekebisha nafasi yake ya mhimili x (5) "mipaka ya kulia na kushoto"> mkaguzi> badilisha> nafasi> X. Angalia picha 3
- Kisha rekebisha kiwango chake ili kiwe kikubwa kutosha kufunika mipaka ya kamera (buruta pande za juu na chini za mraba ili kuinyoosha).
- Rekebisha rangi yake "kutoka mipaka ya kulia na kushoto"> mkaguzi> sprite render> color. Angalia picha 3
- Tembeza chini kwenye mkaguzi na uchague sehemu ya kuongeza kisha andika Rigidbody2D na ubonyeze kuingia, hii kimsingi itaongeza fizikia kwa kitu chako cha mchezo kwani inapeana kugundua misa, mvuto na kugongana. Walakini hatuitaji mvuto katika mchezo wetu kwa hivyo fanya mvuto 0 badala ya 1. Utahitaji pia kufungia msimamo na mzunguko ili mpaka usisogee wakati umegongana. Angalia picha 4
- chagua ongeza kipengee kisha andika Box Collider 2D na bonyeza kuingia hii itaongeza eneo karibu na kitu cha mchezo ambapo migongano inaweza kugunduliwa. Angalia picha 4
- Sasa chagua mipaka ya kulia na kushoto na ubonyeze (ctrl + d) kuiga.
- Ipe jina "mpaka wa kushoto" na ubadilishe jina la kwanza ("mpaka wa kulia").
- Chagua mpaka wa kushoto na urekebishe nafasi yake ya mhimili x (-5) kwa njia ile ile katika hatua ya 3. Sasa una mipaka ya kulia na kushoto.
Rudia hatua 10 zilizopita na mipaka ya juu na chini na ubadilishe nafasi ya mraba badala ya nafasi ya x. Uhakiki wa mwisho unapaswa kuwa kitu sawa na ile iliyo kwenye picha.
Angalia picha 5
Hatua ya 2: Kuongeza Bodi na Kufanya Udhibiti
Kuongeza Bodi
Tengeneza kitu kipya cha mchezo na uipe jina mchezaji 1.
Rekebisha:
- Kiwango: X (1.2), Y (0.15), Z (1)
- Nafasi: X (0), Y (-3.6), z (0)
- Ongeza BoxCollider2D
- Ongeza Rigidbody 2D na kufungia y na z axes.
Rudufu (ctrl + d) na ubadilishe jina la kicheza 2.
Rekebisha:
- Kiwango: X (1.2), Y (0.15), Z (1)
- Nafasi: X (0), Y (3.6), z (0)
- BoxCollider itakuwa tayari iko.
- Rigidbody 2D itakuwa tayari iko na shoka za y na z zitakuwa tayari zimeganda.
Angalia picha 1
Kutengeneza Vidhibiti
Utahitaji:
- 2X Arduino Nano
- 2X Bodi kubwa ya Mkate
- 2X Bodi ndogo ya Mkate
- 4X Kitufe cha Kubadilisha (Kitufe cha Bonyeza)
- Mpingaji wa 4X
- 12X Mwanaume kwa waya za Jumper za Kiume
Sasa angalia picha za bodi ya mkate na ramani ya kukusanya viunga vya furaha.
- Ambatisha Chip moja ya Arduino Nano na bodi ndogo ya mkate.
- ambatisha swichi 2 za kukamata kwenye ubao mkubwa wa mkate kama inavyoonyeshwa kwenye picha Jaribu kuweka mkono wa kulia wa bodi ya mkate ulinganifu kwa mkono wa kushoto kwani hii itafanya kitanda cha furaha kionekane bora (Unaweza kutumia safu ya 30 kama ulinganifu mstari)
- Unganisha pini ya kushoto kushoto ya kitufe cha kushoto na pini ya 5V kwenye Arduino kwenye ubao mdogo wa mkate (vitu ambavyo vimeunganishwa na safu moja kwenye ubao wa mkate vimeunganishwa kwa kila mmoja).
- Unganisha pini ya kulia kulia ya kitufe cha kulia na pini ya 5V katika Arduino.
- Unganisha pini ya kulia kulia ya kitufe cha kushoto na alama kwenye safu ya 31 ukitumia kontena.
- Unganisha pini ya kushoto-kushoto ya kitufe cha kulia na alama kwenye safu ya 29 ukitumia kontena.
- Unganisha vipinga na pini ya GND katika Arduino.
- Unganisha pini ya kulia kulia ya kitufe cha kushoto na pini ya D3 katika Arduino.
- Unganisha pini ya kushoto kushoto ya kitufe cha kulia na pini ya D9 katika Arduino.
- Sasa kurudia hatua hizi na fanya kidhibiti cha pili.
Hatua ya 3: Kuunganisha Arduino kwenye Bandari ya Serial
Kwanza utahitaji kusanikisha Arduino IDE.
Mara tu ikiwa imewekwa, unaweza kuanza kwa kutengeneza programu ya Arduino ambayo inapokea pembejeo kutoka kwa vifungo na kuzihifadhi kwenye bandari ya Serial (bandari ya COM). Wakati bodi ya Arduino imeunganishwa na kompyuta yako ndogo, mfumo wa uendeshaji hutambua moja kwa moja bodi hiyo kama bandari ya serial, ambayo mipango inaweza kupakiwa. Thamani zilizohifadhiwa kwenye bandari ya serial zinaweza kutumika katika hatua inayofuata tunapounganisha Injini ya Unity na bandari ya serial.
Sasa wacha tuunganishe Arduino na bandari ya Serial.
Angalia picha
- Unganisha Arduino na kompyuta yako ndogo
- Zana> Bodi> Arduino Nano
- Ikiwa Chip yako ya Arduino ni ya hivi karibuni (2018-2020) Zana> Prosesa> ATmega328P (Old Bootloader).
- Ikiwa Chip yako ya Arduino sio ya hivi karibuni (kabla ya 2018) Zana> Kichakataji> ATmega328P
- Zana> Bandari> COM (nambari yoyote inayoonekana, kwa upande wangu ni 10). * Hii ndio bandari ya serial ambapo maadili yatahifadhiwa.
- Nakili nambari hiyo na ibandike katika Arduino IDE na bonyeza ctrl + u kupakia programu.
- Rudia na Arduino ya pili. (unapofanya hatua ya 5 hakikisha uchague bandari nyingine ya COM ili vidhibiti vyote viunganishwe kwenye bandari sawa ya serial).
Nambari:
usanidi batili () {
Kuanzia Serial (9600); pinMode (3, INPUT); // Kuwaambia Arduino kupokea maoni kutoka kwa pini D3 pinMode (9, INPUT); // Kumwambia Arduino kupokea maoni kutoka kwa pini D9} kitanzi batili () {if (digitalRead (3) == 1) {/ * Ikiwa Arduino inapokea mchango wa 1 Serial. Andika (1); kutoka kwa pini 3 Pato la thamani ya 1 kwa bandari ya serial Serial.flush (); * / kuchelewesha (2); } ikiwa (digitalRead (9) == 1) {/ * Ikiwa Arduino inapokea mchango wa 1 Serial. andika (2); kutoka kwa pini 9 Pato la 2 na bandari ya serial Serial.flush (); * / kuchelewesha (2); }}
Maelezo ya Programu:
Nambari hii inachukua tu pembejeo kutoka kwa pini ya D3 na pini ya D9 katika Arduino, ambayo imeunganishwa na vifungo. Vifungo vinaweza kushinikizwa au kufutwa ambayo inamaanisha kuwa usomaji ambao huchukuliwa kutoka kwao ni 1 (umebanwa) au 0 (umefutwa). Ikiwa pembejeo kutoka kwa kitufe cha kulia (kutoka D9) ni 1 (imeshinikizwa) kuhifadhi thamani ya 1 kwenye bandari ya Serial. Ikiwa pembejeo kutoka kwa kitufe cha kushoto (kutoka D3) ni 1 (imeshinikizwa) kuhifadhi thamani ya 2 kwenye bandari ya Serial.
Hatua ya 4: Kuunganisha Umoja na Bandari ya Serial
Kwa hatua hii tutagundua bandari ya serial katika Umoja ili iweze kupokea maoni kutoka kwa Arduino wakati vifungo vimebanwa. Sakinisha Msimbo wa Studio ya Visual kwenye kompyuta yako ndogo. Kisha nenda kwa Umoja, chagua kichezaji 1 kutoka kwa uongozi, tembeza chini na uchague kuongeza sehemu na andika kichezaji1_motion kisha bonyeza ingiza. Angalia picha 1
Hati ya C # itaundwa kwa mkaguzi, bonyeza kulia juu yake na uchague hati ya kuhariri, nambari ya studio ya kuona inapaswa kufunguliwa na itaonyesha nambari chaguomsingi ambayo inaonekana kama picha 2.
Nakili nambari ifuatayo kisha ubadilishe "SerialPort sp = new SerialPort (" COM10 ", 9600);" na SerialPort sp = SerialPort mpya ("bandari ya COM ambayo Arduino yako imeunganishwa nayo", 9600); unaweza kupata yake kwa kurudi kwenye nambari yako ya Arduino na zana za goning> Bandari> COM (nambari yoyote inayoonekana).
Nambari:
kutumia System. Collections;
kutumia System. Collections. Generic; kutumia UnityEngine; kutumia Bandari za System. IO; mchezaji wa darasa la umma1_motion: MonoBehaviour {kasi ya kuelea = 8; kiasi cha kuelea cha kibinafsi; SerialPort sp = SerialPort mpya ("COM10", 9600); // Start inaitwa kabla ya sasisho la fremu ya kwanza batili Anza () {sp. Fungua (); sp. ReadTimeout = 1; } // Sasisho inaitwa mara moja kwa Sasisho tupu la fremu () {amounttomove = kasi * 0.01f; ikiwa (sp. IsOpen) {jaribu {moveObject (sp. ReadByte ()); chapisha (sp. ReadByte ()); } kukamata (System. Exception) {}}} batili moveObject (int Direction) {if (Direction == 1) {transform. Translate (Vector3.left * amounttomove, Space. World); } ikiwa (Mwelekeo == 2) {transform. Translate (Vector3.right * amounttomove, Space. World); }}}
Maelezo ya Kanuni:
Nambari hii inaambia umoja kupokea pembejeo kutoka kwa bandari ya serial (COM 10). Wakati kitufe cha kushoto kinabanwa, Arduino hutuma thamani ya 1 kwa bandari ya serial, ikiwa umoja utapokea 1 kutoka kwa bandari ya serial, kasi inaongezwa kwenye kitu cha mchezo "mchezaji 1" kwa mwelekeo wa kushoto. Wakati kitufe cha kulia kinabanwa, Arduino hutuma thamani ya 2 kwa bandari ya serial, ikiwa umoja utapokea 2 kutoka kwa bandari ya serial, kasi inaongezwa kwenye kitu cha mchezo "mchezaji 1" kwa mwelekeo sahihi. ikiwa bandari ya serial haipokei thamani kutoka kwa bandari ya serial, hakuna kasi inayoongezwa kwa mwelekeo wowote kwa hiyo, bodi inakaa sawa.
Baada ya kunakili nambari bonyeza F5 ili kuunda na kuendesha nambari hiyo. Rudi kwenye umoja na bonyeza kitufe cha kucheza, mchezaji 1 anapaswa kusonga kulia unapobonyeza kulia na kushoto unapobonyeza kushoto.
Sasa, fanya hatua sawa tena lakini na mchezaji 2 na hakikisha uandike kwenye kiongezaji cha 'Ongeza sehemu' player2_motion badala ya kichezaji1_motion na kutambua bandari ya pili ya COM ambayo kidhibiti cha pili kimeunganishwa, sio bandari ile ile.
Utahitaji pia kubadilisha "mchezaji wa darasa la umma1_motion: MonoBehaviour" kuwa "mchezaji wa darasa la umma2_motion: MonoBehaviour" katika nambari yenyewe.
Hatua ya 5: Kuongeza Mpira
- Ongeza kitu kipya cha mchezo, lakini wakati huu chagua mduara badala ya mraba.
- Ipe jina "mpira".
- Buruta na uangalie safu ya uongozi.
- Rekebisha kiwango (X: 0.2 - Y: 0.2 - Z: 0.2).
- Ongeza Rigidbody 2D na kufungia mhimili Z tu.
- Badilisha misa iwe 0.0001
- Badilisha Mzani wa Mvuto uwe 0.
- Ongeza kisanduku cha Sanduku 2D.
- Nenda kwenye Mali> Unda> Fizikia nyenzo 2D Angalia picha 1
- badilisha jina lake kuwa "bounce"
- Badilisha msuguano kuwa sifuri kutoka kwa mkaguzi
- Badilisha baraza kuwa 1 kutoka kwa mkaguzi
- Buruta na utupe "bounce" ndani ya Rigidbody 2D> Nyenzo Angalia picha 2
- Chagua "mpira" tena kutoka kwa uongozi na nenda kuongeza sehemu na andika Ball_movement kisha bonyeza Enter.
- Bonyeza kulia kwenye hati na uchague hati ya kuhariri.
- Nakili nambari hapa chini na bonyeza F5 kuijenga na kuiendesha.
Nambari:
kutumia System. Collections;
kutumia System. Collections. Generic; kutumia UnityEngine; darasa la umma Ball_movement: MonoBehaviour {// Start inaitwa kabla ya sasisho la fremu ya kwanza nguvu ya kuelea ya kibinafsi = 2; tupu Start () {StartCoroutine (hoja ()); } Hoja ya IEnumerator () {mavuno rudisha WaitForSeconds mpya (2); GetComponent (). AddForce (mpya Vector2 (1f, 0.5f) * 0.02f * nguvu); }}
Maelezo ya nambari
Nambari hii inampa mpira kasi katika pande zote mbili mwelekeo wa X na mwelekeo wa Y na ukubwa sawa, ambayo inafanya mpira kusonga kwa pembe ya 45 °. Katika hatua ya 8 tuliongeza vifaa vya fizikia kwenye mpira na kubadilisha utabiri wake, hii inadumisha harakati za mpira kupitia mchezo.
Hatua ya 6: Kukamilisha Mchezo
Sasa tunahitaji kufanya upotezaji uwezekane, ikiwa unakimbia mchezo utaona kuwa mpira unapopita mchezaji 1 au mchezaji 2 unapita tu kwenye mpaka na hiyo sio ile tunayohitaji katika mchezo wetu. Badala yake tunataka kutengeneza kaunta ya alama ambayo inahesabu alama kila wakati mpira unagongana na mipaka ya juu au chini na kuweka upya nafasi ya mpira.
- Buruta na uangushe mpira kutoka kwa Hierarchy hadi Mradi, Umetengeneza prefab ya mpira ili uweze kuitumia baadaye.
- Bonyeza kulia kwenye Uongozi na uchague Tengeneza Tupu. Kitu tupu kitajitokeza, kitaipa jina upya kwa mpira na kubadilisha msimamo wake kuwa sawa na msimamo wa mpira.
- Bonyeza kulia kwenye safu ya uongozi na uchague UI >> Nakala. Kumbuka kuwa maandishi yanaambatana na turubai nafasi ya maandishi kwenye mchezo inategemea nafasi ya maandishi kwenye turubai, sio kwenye mipaka ya mchezo wetu. (Angalia picha 1).
- Badilisha nafasi ya maandishi kuwa mahali popote unapotaka iwe.
- Rudia hatua 3 na 4 tena kwa alama ya mchezaji wa pili.
- Andika kwenye maandishi ya kwanza "Mchezaji 1 Alama: 0" na andika maandishi ya pili "Mchezaji 2 Alama: 0". (Angalia picha 2).
- Unda hati kwenye mpaka ulioitwa p1wins na unakili nambari ifuatayo.
Nambari:
kutumia System. Collections;
kutumia System. Collections. Generic; kutumia UnityEngine; kutumia UnityEngine. SceneManagement; kutumia UnityEngine. UI; darasa la umma p1wins: MonoBehaviour {alama ya maandishi ya umma; mabadiliko ya umma ball_respawn; mpira wa umma wa GameObject; faragha int p1 = 0; // Start inaitwa kabla ya sasisho la fremu ya kwanza batili Anza () {} // Sasisho inaitwa mara moja kwa Sasisho tupu la Sasisho () {score.text = "Score 1 Player:" + p1; } batili OnCollisionEnter2D (Mgongano2D nyingine) {if (other.gameObject.tag == "Ball") {Destroy (other.gameObject); p1 ++; Kuimarisha (mpira, mpira_respawn.position, mpira_respawn.rotation); }}}
8. Buruta na uangushe mpira kabla kutoka kwa mradi katika hatua ya 1 kwenye kigezo cha Mpira. (Angalia picha 3)
9. Buruta na uachie mpira upya kutoka kwa safu hadi kwa param-ya-mpira. (Angalia picha 3)
10. buruta na uondoe mchezaji alama 1 kutoka kwa safu ya uongozi hadi kwa kigezo cha alama. (Angalia picha 3)
Maelezo ya Kanuni:
Wakati mpira unagongana na mpaka wa juu huharibu na kurudia tena kwenye nafasi ya mpira_mia ambayo tulipewa katika hatua ya 2. lengo la kuufanya mpira uwe preabuni ni kuweza kuirudisha na sifa zake zote, vinginevyo, ikiwa tulitumia mpira kutoka kwa safu ya uongozi itakua tena lakini haitahama. Pia wakati mpira unagongana na mpaka wa juu thamani ambayo hapo awali ni sawa na 0 inayoitwa p1 huongezeka kwa 1. thamani hii inaonyeshwa kama maandishi kwa hivyo mpira unapogongana na mpaka wa juu alama ya mchezaji 1 huongezeka kwa 1.
Sasa fanya hatua 7, 8, 9 na 10 kwa mpaka wa chini
kwa hatua ya 7, tengeneza hati inayoitwa p2wins na unakili nambari ifuatayo badala yake.
kwa hatua ya 10, buruta na utone alama 2 ya kichezaji kutoka kwa safu ya uongozi hadi kwa kigezo cha alama.
Nambari:
kutumia System. Collections;
kutumia System. Collections. Generic; kutumia UnityEngine; kutumia UnityEngine. SceneManagement; kutumia UnityEngine. UI; darasa la umma p2wins: MonoBehaviour {alama ya maandishi ya umma; mabadiliko ya umma ball_respawn; mpira wa umma wa GameObject; faragha int p2 = 0; // Start inaitwa kabla ya sasisho la fremu ya kwanza batili Anza () {} // Sasisho inaitwa mara moja kwa Sasisho tupu la Sasisho () {score.text = "Score Player 2:" + p2; } batili OnCollisionEnter2D (Mgongano2D nyingine) {if (other.gameObject.tag == "Ball") {Destroy (other.gameObject); p2 ++; Kuimarisha (mpira, mpira_respawn.position, mpira_respawn.rotation); }}}
Ilipendekeza:
Jinsi ya Kusanikisha Udhibiti wa AGS-001 Unaodhibitiwa Katika Mchezo wa Mapema wa Wavulana wa Mchezo (Hakuna LOCA!): Hatua 5 (na Picha)
Jinsi ya kusanikisha Mwangaza wa AGS-001 unaodhibitiwa Kwenye Mchezo wa Mapema wa Wavulana wa Mchezo (Hakuna LOCA!): Unatafuta kuangaza skrini ya zamani ya Game Boy Advance. Huwezi kupata vifaa hivi vipya vya backlit vya IPS popote, na vifaa vya zamani vya AGS-101 vimepungukiwa na bei ya juu. Mbali na hilo, unataka kuwa na uwezo wa kuona skrini ukiwa nje,
Jinsi ya Kutumia Watawala wasioungwa mkono na Kifaa cha IOS 9.3.5: Hatua 23
Jinsi ya Kutumia Wadhibiti Wasiohimiliwa Na Kifaa cha IOS 9.3.5: Vifaa vinahitajika: Kidhibiti cha PlayStation 4Uchaji Large Laptop inayoendesha Windows 10 iPod Touch 5th Generation Laptop Mouse Laptop's Charge Cable Cable
Arduino: Inasikitisha Gari la Sanaa la wachezaji wengi: Hatua 13
Arduino: Inasikitisha Sanaa ya Wacheza Gari: Ni sanaa ya gari inayoweza kutekelezwa na kifaa cha Bluetooth na simu ya rununu ikiwa ni pamoja na huduma ya simu na mlango wa simu katikati ya gari. Optioneel ni moja ya machafuko / kuchanganyikiwa kwa kufanya kazi kwa vifaa vya ujenzi wa milango na vifaa vyako
Jinsi ya Kuweka Wachunguzi wengi katika Linux: Hatua 6
Jinsi ya Kuweka Wachunguzi wengi katika Linux: mafunzo haya yatakuonyesha jinsi ya kuanzisha mfumo wa vichwa vingi katika distros nyingi za linux, haswa ubuntu. tafadhali kumbuka, hii bado haijakamilika
Jinsi ya Kuangalia Ikiwa Mchezo Utakimbia kwenye Kompyuta yako Kabla ya Kununua Mchezo .: 4 Hatua
Jinsi ya Kuangalia Ikiwa Mchezo Utakimbia kwenye Kompyuta yako Kabla ya Kununua Mchezo.: Hivi karibuni nilipata Simu ya Ushuru 4 kutoka kwa rafiki (kwa bure naweza kuongeza) kwa sababu singeendesha kwenye kompyuta yake. Kweli, kompyuta yake ni mpya kabisa, na ilinichanganya kwa nini haitafanya kazi. Kwa hivyo baada ya masaa kadhaa ya kutafuta mtandao, nikapata